zi-ming-ui 1.0.0 → 1.0.1

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zi-ming-ui",
3
- "version": "1.0.0",
4
- "description": "一个可以临时增加的水平单选组件",
3
+ "version": "1.0.1",
4
+ "description": "一个可以临时增加的水平单选组件,可选连接符修复",
5
5
  "main": "zi-ming-ui.common.js",
6
6
  "scripts": {
7
7
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -114,9 +114,9 @@ if (typeof window !== 'undefined') {
114
114
 
115
115
  ;// CONCATENATED MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
116
116
  var external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject = require("vue");
117
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/package/horiz-radio-self-naming/index.vue?vue&type=template&id=f06df04a&scoped=true
117
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/package/horiz-radio-self-naming/index.vue?vue&type=template&id=b6864cf2&scoped=true
118
118
 
119
- const _withScopeId = n => ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.pushScopeId)("data-v-f06df04a"), n = n(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.popScopeId)(), n);
119
+ const _withScopeId = n => ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.pushScopeId)("data-v-b6864cf2"), n = n(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.popScopeId)(), n);
120
120
  const _hoisted_1 = {
121
121
  class: "radio-group-container"
122
122
  };
@@ -285,7 +285,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
285
285
  onClick: _cache[16] || (_cache[16] = (...args) => $options.toggleOptionsCount && $options.toggleOptionsCount(...args))
286
286
  }, " 显示 " + (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($data.isFewOptions ? '12' : '3') + " 个选项 ", 3)])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)]);
287
287
  }
288
- ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue?vue&type=template&id=f06df04a&scoped=true
288
+ ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue?vue&type=template&id=b6864cf2&scoped=true
289
289
 
290
290
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/package/tips/index.vue?vue&type=template&id=1e8c4bc7&scoped=true
291
291
 
@@ -395,8 +395,12 @@ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tipsvue_type_sc
395
395
  methods: {
396
396
  getData(data) {
397
397
  this.list(data).then(res => {
398
- console.log('getData', res?.data?.rows);
399
- this.options = res?.data?.rows;
398
+ if (res && res.data && res.data.rows) {
399
+ console.log('getData', res.data.rows);
400
+ this.options = res.data.rows;
401
+ } else {
402
+ this.options = [];
403
+ }
400
404
  });
401
405
  },
402
406
  toggleOptionsCount() {
@@ -410,8 +414,10 @@ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tipsvue_type_sc
410
414
  },
411
415
  handleEditFocus(id) {
412
416
  this.editingFocusId = id;
417
+ let one = this.options.find(opt => opt.id === id);
418
+ let name = one ? one.name : null;
413
419
  // 存储原始值
414
- this.originalValues[id] = this.editValues[id] || this.options.find(opt => opt.id === id)?.name || '';
420
+ this.originalValues[id] = this.editValues[id] || name || '';
415
421
  },
416
422
  handleEditBlur(id, event) {
417
423
  // 延迟处理,避免与保存按钮点击冲突
@@ -434,7 +440,8 @@ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tipsvue_type_sc
434
440
  },
435
441
  handleSaveOption(id) {
436
442
  console.log(this.editValues, id);
437
- const newName = this.editValues[id]?.trim() || '';
443
+ let one = this.editValues[id] || '';
444
+ const newName = one.trim() || '';
438
445
  const originalOption = this.options.find(opt => opt.id === id);
439
446
  if (newName && originalOption && newName !== originalOption.name) {
440
447
  // 在实际应用中,这里应该更新数据
@@ -510,10 +517,10 @@ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tipsvue_type_sc
510
517
  });
511
518
  ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue?vue&type=script&lang=js
512
519
 
513
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/package/horiz-radio-self-naming/index.vue?vue&type=style&index=0&id=f06df04a&scoped=true&lang=css
520
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/package/horiz-radio-self-naming/index.vue?vue&type=style&index=0&id=b6864cf2&scoped=true&lang=css
514
521
  // extracted by mini-css-extract-plugin
515
522
 
516
- ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue?vue&type=style&index=0&id=f06df04a&scoped=true&lang=css
523
+ ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue?vue&type=style&index=0&id=b6864cf2&scoped=true&lang=css
517
524
 
518
525
  ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue
519
526
 
@@ -523,7 +530,7 @@ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tipsvue_type_sc
523
530
  ;
524
531
 
525
532
 
526
- const horiz_radio_self_naming_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(horiz_radio_self_namingvue_type_script_lang_js, [['render',render],['__scopeId',"data-v-f06df04a"]])
533
+ const horiz_radio_self_naming_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(horiz_radio_self_namingvue_type_script_lang_js, [['render',render],['__scopeId',"data-v-b6864cf2"]])
527
534
 
528
535
  /* harmony default export */ var horiz_radio_self_naming = (horiz_radio_self_naming_exports_);
529
536
  ;// CONCATENATED MODULE: ./src/package/public-js/letter.js
@@ -1 +1 @@
1
- {"version":3,"file":"zi-ming-ui.common.js","mappings":";;;;;;;;AAAa;;AACbA,6BAA6C;EAAEG,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7D;AACA;AACAD,SAAe,GAAG,CAACG,GAAG,EAAEC,KAAK,KAAK;EAC9B,MAAMC,MAAM,GAAGF,GAAG,CAACG,SAAS,IAAIH,GAAG;EACnC,KAAK,MAAM,CAACI,GAAG,EAAEC,GAAG,CAAC,IAAIJ,KAAK,EAAE;IAC5BC,MAAM,CAACE,GAAG,CAAC,GAAGC,GAAG;EACrB;EACA,OAAOH,MAAM;AACjB,CAAC;;;;;;UCVD;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA,8CAA8C;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;;;;;;;;;;;;;;;;ACAA;AACA;;AAEA;AACA;AACA,MAAM,KAAuC,EAAE,yBAQ5C;;AAEH;AACA;AACA,IAAI,qBAAuB;AAC3B;AACA;;AAEA;AACA,kDAAe,IAAI;;;ACtBnB,IAAI,4DAA4B;;;;;ECCzBI,KAAK,EAAC;AAAuB;;EAE3BA,KAAK,EAAC;AAAQ;;EAMdA,KAAK,EAAC;AAAY;;gEAKjBC,mFAAA,CAAgC;EAA3BD,KAAK,EAAC;AAAc;;EACpBA,KAAK,EAAC;AAAc;;EASpBA,KAAK,EAAC;AAAa;;;;;EAYFA,KAAK,EAAC;;;EACvBA,KAAK,EAAC;AAA8B;iEAUzCC,mFAAA,CAA4B;EAAvBD,KAAK,EAAC;AAAS,GAAC,GAAC;qBAAtBE,WAA4B;;;EAWHF,KAAK,EAAC;;;EAC9BA,KAAK,EAAC;AAAiB;iEAC1BC,mFAAA,CAAa,YAAT,MAAI;iEACRA,mFAAA,CAAsB,WAAnB,iBAAe;;EACbD,KAAK,EAAC;AAAiB;;;EAU3BA,KAAK,EAAC;;;EACJA,KAAK,EAAC;AAAY;;EAKlBA,KAAK,EAAC;AAAa;iEACtBC,mFAAA,CAAkB,cAAZ,OAAK;;EACND,KAAK,EAAC;AAAgB;;EASxBA,KAAK,EAAC;AAAc;;;uFAxF7BG,mFAAA,CAwGM,OAxGNC,UAwGM,GAtGJH,mFAAA,CAGM,OAHNI,UAGM,IAFQC,KAAA,CAAAC,UAAU,kFAAtBJ,mFAAA,CAA4E;;IAApDH,KAAK,EAAC,UAAU;IAAEQ,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAAC,MAAA,IAAEJ,KAAA,CAAAC,UAAU;KAAS,IAAE,oFACtEJ,mFAAA,CAA+E;;IAAnEH,KAAK,EAAC,wBAAwB;IAAEQ,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAAC,MAAA,IAAEJ,KAAA,CAAAC,UAAU;KAAU,IAAE,MAI3EN,mFAAA,CA2CM,OA3CNU,UA2CM,IAzCaL,KAAA,CAAAC,UAAU,sFACzBJ,mFAAA,CAIMS,qEAAA;IAAAd,GAAA;EAAA,GAAAe,2EAAA,CAJgBP,KAAA,CAAAQ,OAAO,EAAjBC,MAAM;yFAAlBZ,mFAAA,CAIM;MAJ0BL,GAAG,EAAEiB,MAAM,CAACC,EAAE;MAC3ChB,KAAK,EAAAiB,+EAAA;QAAAC,QAAA,EAA4BC,MAAA,CAAAC,UAAU,KAAKL,MAAM,CAACC;MAAE;MAAMR,OAAK,EAAAE,MAAA,IAAEW,QAAA,CAAAC,kBAAkB,CAACP,MAAM,CAACC,EAAE;QACnGO,UAAgC,EAChCtB,mFAAA,CAAiD,OAAjDuB,UAAiD,EAAAC,gFAAA,CAApBV,MAAM,CAACW,IAAI;6FAK5CvB,mFAAA,CA6BWS,qEAAA;IAAAd,GAAA;EAAA,uFA3BTK,mFAAA,CAWMS,qEAAA,QAAAC,2EAAA,CAXgBP,KAAA,CAAAQ,OAAO,EAAjBC,MAAM;yFAAlBZ,mFAAA,CAWM;MAX0BL,GAAG,EAAEiB,MAAM,CAACC,EAAE;MAC3ChB,KAAK,EAAAiB,+EAAA;QAAA,iBAAmCX,KAAA,CAAAqB,cAAc,KAAKZ,MAAM,CAACC;MAAE;QACrEf,mFAAA,CAQM,OARN2B,UAQM,GAPJ3B,mFAAA,CAE6F;MAFtF4B,IAAI,EAAC,MAAM;MAAC7B,KAAK,EAAC,YAAY;MAAER,KAAK,EAAEuB,MAAM,CAACW,IAAI;MAAGI,OAAK,EAAApB,MAAA,IAAEW,QAAA,CAAAU,eAAe,CAAChB,MAAM,CAACC,EAAE;MACzFgB,MAAI,EAAAtB,MAAA,IAAEW,QAAA,CAAAY,cAAc,CAAClB,MAAM,CAACC,EAAE,EAAEN,MAAM;MAAIwB,OAAK,EAAAxB,MAAA,IAAEW,QAAA,CAAAc,eAAe,CAACpB,MAAM,CAACC,EAAE,EAAEN,MAAM;MAClF0B,SAAO,EAAAC,yEAAA,CAAA3B,MAAA,IAAQW,QAAA,CAAAiB,gBAAgB,CAACvB,MAAM,CAACC,EAAE,EAAEN,MAAM;MAAG6B,UAAU,EAAC,OAAO;;MAACC,GAAG,EAAC;8BACnElC,KAAA,CAAAqB,cAAc,KAAKZ,MAAM,CAACC,EAAE,kFAAvCb,mFAAA,CAEM;;MAFmCH,KAAK,EAAC,UAAU;MAAEQ,OAAK,EAAAE,MAAA,IAAEW,QAAA,CAAAiB,gBAAgB,CAACvB,MAAM,CAACC,EAAE;OAAG,MAE/F,KAAAyB,UAAA;aAMOnC,KAAA,CAAAoC,WAAW,kFAAtBvC,mFAAA,CAOM,OAPNwC,WAOM,GANJ1C,mFAAA,CAKM,OALN2C,WAKM,mFAJJ3C,mFAAA,CAEyB;IAFlB4B,IAAI,EAAC,MAAM;IAAC7B,KAAK,EAAC,sBAAsB;+DAAeM,KAAA,CAAAuC,aAAa,GAAAnC,MAAA;IAAGoB,OAAK,EAAArB,MAAA,QAAAA,MAAA,UAAAqC,IAAA,KAAEzB,QAAA,CAAA0B,oBAAA,IAAA1B,QAAA,CAAA0B,oBAAA,IAAAD,IAAA,CAAoB;IACtGd,MAAI,EAAAvB,MAAA,QAAAA,MAAA,UAAAqC,IAAA,KAAEzB,QAAA,CAAA2B,mBAAA,IAAA3B,QAAA,CAAA2B,mBAAA,IAAAF,IAAA,CAAmB;IAAGV,SAAO,EAAA3B,MAAA,QAAAA,MAAA,MAAA4B,yEAAA,KAAAS,IAAA,KAAQzB,QAAA,CAAA4B,mBAAA,IAAA5B,QAAA,CAAA4B,mBAAA,IAAAH,IAAA,CAAmB;IAAEI,WAAW,EAAC,QAAQ;IAACX,UAAU,EAAC,OAAO;IACxGC,GAAG,EAAC;4FAFwDlC,KAAA,CAAAuC,aAAa;UAA3B;EAA4B,MAG5E5C,mFAAA,CAA2D;IAAtDD,KAAK,EAAC,UAAU;IAAEQ,OAAK,EAAAC,MAAA,QAAAA,MAAA,UAAAqC,IAAA,KAAEzB,QAAA,CAAA4B,mBAAA,IAAA5B,QAAA,CAAA4B,mBAAA,IAAAH,IAAA,CAAmB;KAAE,IAAE,yGAK7CxC,KAAA,CAAAoC,WAAW,kFAAvBvC,mFAAA,CAEM;;IAFmBH,KAAK,EAAC,sBAAsB;IAAEQ,OAAK,EAAAC,MAAA,QAAAA,MAAA,UAAAqC,IAAA,KAAEzB,QAAA,CAAA8B,cAAA,IAAA9B,QAAA,CAAA8B,cAAA,IAAAL,IAAA,CAAc;6HAQhFM,4EAAA,CAEOC,eAAA;gBAFQ/C,KAAA,CAAAgD,aAAa;+DAAbhD,KAAA,CAAAgD,aAAa,GAAA5C,MAAA;;sFAAE,MAE9B,kFAF8B,mBAE9B;;yBAEWJ,KAAA,CAAAiD,kBAAkB,kFAA7BpD,mFAAA,CASM,OATNqD,WASM,GARJvD,mFAAA,CAOM,OAPNwD,WAOM,GANJC,WAAa,EACbC,WAAsB,EACtB1D,mFAAA,CAGM,OAHN2D,WAGM,GAFJ3D,mFAAA,CAAuE;IAAlED,KAAK,EAAC,oBAAoB;IAAEQ,OAAK,EAAAC,MAAA,QAAAA,MAAA,UAAAqC,IAAA,KAAEzB,QAAA,CAAAwC,mBAAA,IAAAxC,QAAA,CAAAwC,mBAAA,IAAAf,IAAA,CAAmB;KAAE,MAAI,GACjE7C,mFAAA,CAAyE;IAApED,KAAK,EAAC,qBAAqB;IAAEQ,OAAK,EAAAC,MAAA,SAAAA,MAAA,WAAAqC,IAAA,KAAEzB,QAAA,CAAAyC,oBAAA,IAAAzC,QAAA,CAAAyC,oBAAA,IAAAhB,IAAA,CAAoB;KAAE,MAAI,0GAQxCxC,KAAA,CAAAyD,OAAO,kFAAxC5D,mFAAA,CAgCM,OAhCN6D,WAgCM,GA/BJ/D,mFAAA,CAIM,OAJNgE,WAIM,EAJkB,WACd,GAAAxC,gFAAA,CAAGN,MAAA,CAAAC,UAAU,IAAG,WAAS,GAAAK,gFAAA,CAAGnB,KAAA,CAAAqB,cAAc,UAAUrB,KAAA,CAAAqB,cAAc,UAAS,SAAO,GAAAF,gFAAA,CAAGnB,KAAA,CAAAoC,WAAW,mBAI1GzC,mFAAA,CAUM,OAVNiE,WAUM,GATJC,WAAkB,EAClBlE,mFAAA,CAOM,OAPNmE,WAOM,GANJnE,mFAAA,CAEM;IAFAD,KAAK,EAAAiB,+EAAA;MAAAoD,MAAA,GAA0B/D,KAAA,CAAAC;IAAU;IAAMC,OAAK,EAAAC,MAAA,SAAAA,MAAA,OAAAC,MAAA,IAAEJ,KAAA,CAAAC,UAAU;KAAU,QAEhF,MACAN,mFAAA,CAEM;IAFAD,KAAK,EAAAiB,+EAAA;MAAAoD,MAAA,EAAyB/D,KAAA,CAAAC;IAAU;IAAMC,OAAK,EAAAC,MAAA,SAAAA,MAAA,OAAAC,MAAA,IAAEJ,KAAA,CAAAC,UAAU;KAAS,QAE9E,UAGJN,mFAAA,CAcM,OAdNqE,WAcM,GAbJrE,mFAAA,CAGM;IAHAD,KAAK,EAAAiB,+EAAA;MAAAoD,MAAA,EAAyB/D,KAAA,CAAAqB,cAAc;IAAA;IAC/CnB,OAAK,EAAAC,MAAA,SAAAA,MAAA,OAAAC,MAAA,IAAEJ,KAAA,CAAAqB,cAAc,GAAGrB,KAAA,CAAAqB,cAAc;sFACpCrB,KAAA,CAAAqB,cAAc,wBAAuB,OAC1C,MACA1B,mFAAA,CAEM;IAFAD,KAAK,EAAAiB,+EAAA;MAAAoD,MAAA,EAAyB/D,KAAA,CAAAoC;IAAW;IAAMlC,OAAK,EAAAC,MAAA,SAAAA,MAAA,OAAAC,MAAA,IAAEJ,KAAA,CAAAoC,WAAW,IAAIpC,KAAA,CAAAoC,WAAW;sFACjFpC,KAAA,CAAAoC,WAAW,kBAAiB,OACjC,MACAzC,mFAAA,CAEM;IAFAD,KAAK,EAAAiB,+EAAA;MAAAoD,MAAA,EAAyB/D,KAAA,CAAAiD;IAAkB;IAAM/C,OAAK,EAAAC,MAAA,SAAAA,MAAA,OAAAC,MAAA,IAAEJ,KAAA,CAAAiD,kBAAkB,IAAIjD,KAAA,CAAAiD,kBAAkB;sFACtGjD,KAAA,CAAAiD,kBAAkB,kBAAiB,OACxC,MACAtD,mFAAA,CAEM;IAFAD,KAAK,EAAAiB,+EAAA;MAAAoD,MAAA,EAAyB/D,KAAA,CAAAiE;IAAY;IAAM/D,OAAK,EAAAC,MAAA,SAAAA,MAAA,WAAAqC,IAAA,KAAEzB,QAAA,CAAAmD,kBAAA,IAAAnD,QAAA,CAAAmD,kBAAA,IAAA1B,IAAA,CAAkB;KAAE,MAC5E,GAAArB,gFAAA,CAAGnB,KAAA,CAAAiE,YAAY,iBAAgB,OACpC;;;;;;;;EErGAvE,KAAK,EAAC;AAAe;;wKAA1BG,mFAAA,CAEO,OAFPC,uDAEO,GADJqE,2EAAA,CAAaC,IAAA,CAAAC,MAAA,iBAAAC,SAAA,uFADmBzD,MAAA,CAAAC,UAAU;;;;;AAM5C,gEAAe;EACXzB,KAAK,EAAC;IACFyB,UAAU,EAAC;MACPS,IAAI,EAACgD,OAAO;MACZpF,OAAO,EAAE;IACb,CAAC;IACDqF,KAAK,EAAC;MACFjD,IAAI,EAACkD,MAAM;MACXtF,OAAO,EAAE;IACb;EACJ,CAAC;EACDuF,KAAK,EAAC;IACF5D,UAAUA,CAAC6D,CAAC,EAACC,CAAC,EAAC;MACX,IAAGD,CAAC,EAAC;QACDE,UAAU,CAAC,MAAM;UACb,IAAI,CAACC,KAAK,CAAC,mBAAmB,EAAC,KAAK,CAAC;QACzC,CAAC,EAAE,IAAI,CAACN,KAAK,CAAC;MAClB;IACJ;EACJ;AACJ,CAAC;;AE3BsP;;ACA3P;;;;;;;AEA8E;AACtB;AACL;;AAEnD,CAA4E;;AAEO;AACnF,iCAAiC,+BAAe,CAAC,2BAAM,aAAa,oDAAM;;AAE1E,yCAAe;;APoGqB;AACpC,mFAAe;EACbpD,IAAI,EAAE,0BAA0B;EAChC/B,KAAK,EAAC;IACJyB,UAAU,EAAC,CAACkE,MAAM,EAACP,MAAM,CAAC;IAC1BQ,IAAI,EAAC,CAACC,QAAQ,CAAC;IACfC,GAAG,EAAC,CAACD,QAAQ,CAAC;IACdE,MAAM,EAAC,CAACF,QAAQ;EAClB,CAAC;EACDG,UAAU,EAAC;IACTN,IAAIA,EAAAA,IAAAA;EACN,CAAC;EACDO,IAAIA,CAAA,EAAG;IACL,OAAO;MACL7B,OAAO,EAAC,KAAK;MACbT,aAAa,EAAC,IAAI;MAClB/C,UAAU,EAAE,KAAK;MACjBsF,cAAc,EAAE,CAAC;MACjBlE,cAAc,EAAE,IAAI;MACpBe,WAAW,EAAE,KAAK;MAClBa,kBAAkB,EAAE,KAAK;MACzBV,aAAa,EAAE,EAAE;MACjB0B,YAAY,EAAE,KAAK;MACnBzD,OAAO,EAAC,EAAE;MACVgF,UAAU,EAAE,CAAC,CAAC;MAAE;MAChBC,cAAc,EAAE,CAAC,CAAC,CAAE;IAEtB,CAAC;EACH,CAAC;;EAEDC,OAAOA,CAAA,EAAG;IACR;IACA,IAAI,CAACC,OAAO,CAAC,CAAC;EAChB,CAAC;EACDjB,KAAK,EAAC;IACJzE,UAAUA,CAAC0E,CAAC,EAACC,CAAC,EAAC;MACb,IAAGD,CAAC,EAAC;QACH,IAAI,CAAC3B,aAAY,GAAI,IAAI;MAC3B;IACF,CAAC;IACDxC,OAAOA,CAACmE,CAAC,EAACC,CAAC,EAAC;MACV,IAAGD,CAAC,EAAC;QACHA,CAAC,CAACiB,OAAO,CAACnF,MAAK,IAAK;UAClB,IAAI,CAACgF,cAAc,CAAChF,MAAM,CAACC,EAAE,IAAID,MAAM,CAACW,IAAI;QAC9C,CAAC,CAAC;MACJ,CAAC,MAAI;QACH,IAAI,CAACoE,UAAS,GAAI,EAAC;QACnB,IAAI,CAACC,cAAa,GAAI,EAAC;MACzB;IACF;EACF,CAAC;EACDI,OAAO,EAAE;IACPF,OAAOA,CAACL,IAAI,EAAC;MACX,IAAI,CAACL,IAAI,CAACK,IAAI,CAAC,CAACQ,IAAI,CAACC,GAAG,IAAE;QACxBC,OAAO,CAACC,GAAG,CAAC,SAAS,EAACF,GAAG,EAAET,IAAI,EAAEY,IAAI;QACrC,IAAI,CAAC1F,OAAM,GAAIuF,GAAG,EAAET,IAAI,EAAEY,IAAI;MAChC,CAAC;IACH,CAAC;IAEDhC,kBAAkBA,CAAA,EAAG;MACnB,IAAI,CAACD,YAAW,GAAI,CAAC,IAAI,CAACA,YAAY;IACxC,CAAC;IAEDjD,kBAAkBA,CAACN,EAAE,EAAE;MACrB,IAAI,CAAC,IAAI,CAACT,UAAU,EAAE;QACpB,IAAI,CAAC6E,KAAK,CAAC,mBAAmB,EAAEpE,EAAG;QACnC,IAAI,CAACoE,KAAK,CAAC,QAAQ,EAAC,IAAI,CAACtE,OAAO,CAAC2F,IAAI,CAACC,EAAE,IAAEA,EAAE,CAAC1F,EAAC,IAAKA,EAAE,CAAC;MACxD;IACF,CAAC;IAEDe,eAAeA,CAACf,EAAE,EAAE;MAClB,IAAI,CAACW,cAAa,GAAIX,EAAE;MACxB;MACA,IAAI,CAAC+E,cAAc,CAAC/E,EAAE,IAAI,IAAI,CAAC8E,UAAU,CAAC9E,EAAE,KAAK,IAAI,CAACF,OAAO,CAAC2F,IAAI,CAACE,GAAE,IAAKA,GAAG,CAAC3F,EAAC,KAAMA,EAAE,CAAC,EAAEU,IAAG,IAAK,EAAE;IACtG,CAAC;IAEDO,cAAcA,CAACjB,EAAE,EAAE4F,KAAK,EAAE;MACxB;MACAzB,UAAU,CAAC,MAAM;QACf,IAAI,IAAI,CAACxD,cAAa,KAAMX,EAAE,EAAE;UAC9B;UACA,IAAI,IAAI,CAAC8E,UAAU,CAAC9E,EAAE,MAAM,IAAI,CAAC+E,cAAc,CAAC/E,EAAE,CAAC,EAAE;YACnD,IAAI,CAAC8E,UAAU,CAAC9E,EAAE,IAAI,IAAI,CAAC+E,cAAc,CAAC/E,EAAE,CAAC;YAC7C;YACA,IAAI4F,KAAK,CAAChH,MAAM,EAAE;cAChBgH,KAAK,CAAChH,MAAM,CAACJ,KAAI,GAAI,IAAI,CAACuG,cAAc,CAAC/E,EAAE,CAAC;YAC9C;UACF;UACA,IAAI,CAACW,cAAa,GAAI,IAAI;QAC5B;MACF,CAAC,EAAE,GAAG,CAAC;IACT,CAAC;IAEDQ,eAAeA,CAACnB,EAAE,EAAE4F,KAAK,EAAE;MACzB,IAAI,CAACd,UAAU,CAAC9E,EAAE,IAAI4F,KAAK,CAAChH,MAAM,CAACJ,KAAK,CAACqH,IAAI,CAAC,CAAC;IACjD,CAAC;IAEDvE,gBAAgBA,CAACtB,EAAE,EAAE;MACnBsF,OAAO,CAACC,GAAG,CAAC,IAAI,CAACT,UAAU,EAAC9E,EAAE;MAC9B,MAAM8F,OAAM,GAAI,IAAI,CAAChB,UAAU,CAAC9E,EAAE,CAAC,EAAE6F,IAAI,CAAC,KAAK,EAAE;MACjD,MAAME,cAAa,GAAI,IAAI,CAACjG,OAAO,CAAC2F,IAAI,CAACE,GAAE,IAAKA,GAAG,CAAC3F,EAAC,KAAMA,EAAE,CAAC;MAE9D,IAAI8F,OAAM,IAAKC,cAAa,IAAKD,OAAM,KAAMC,cAAc,CAACrF,IAAI,EAAE;QAChE;QACA4E,OAAO,CAACC,GAAG,CAAE,QAAOvF,EAAG,KAAI8F,OAAQ,EAAC,CAAC;QACrC;QACAC,cAAc,CAACrF,IAAG,GAAIoF,OAAO;QAC7B,IAAI,CAACf,cAAc,CAAC/E,EAAE,IAAI8F,OAAO;QAEjC,IAAI,CAACpB,MAAM,CAAC;UAAC1E,EAAE;UAACU,IAAI,EAACoF;QAAO,CAAC,CAAC,CAACV,IAAI,CAACC,GAAG,IAAE,CAEzC,CAAC;MAEH;MAEA,IAAI,CAAC1E,cAAa,GAAI,IAAI;IAC5B,CAAC;IAEDwB,cAAcA,CAAA,EAAG;MACf,IAAI,CAACT,WAAU,GAAI,IAAI;MACvB,IAAI,CAACG,aAAY,GAAI,EAAE;;MAEvB;MACA,IAAI,CAACmE,SAAS,CAAC,MAAM;QACnB,IAAI,IAAI,CAACC,KAAK,CAACC,cAAc,EAAE;UAC7B,IAAI,CAACD,KAAK,CAACC,cAAc,CAACC,KAAK,CAAC,CAAC;QACnC;MACF,CAAC,CAAC;IACJ,CAAC;IAEDpE,oBAAoBA,CAAA,EAAG;MACrB;IAAA,CACD;IAEDC,mBAAmBA,CAAC4D,KAAK,EAAE;MACzB,MAAMQ,IAAG,GAAI,IAAI,CAACvE,aAAa,CAACgE,IAAI,CAAC,CAAC;MACtC,IAAI,CAACO,IAAI,EAAE;QACT,IAAI,CAAC7D,kBAAiB,GAAI,IAAI;MAChC;IACF,CAAC;IAEDN,mBAAmBA,CAAA,EAAG;MACpB,MAAM6D,OAAM,GAAI,IAAI,CAACjE,aAAa,CAACgE,IAAI,CAAC,CAAC;MACzC,IAAIC,OAAO,EAAE;QACX,IAAI,CAAC1B,KAAK,CAAC,OAAO,EAAC0B,OAAO;QAC1BR,OAAO,CAACC,GAAG,CAAE,UAASO,OAAQ,EAAC,CAAC;QAChC,IAAI,CAACrB,GAAG,CAAC;UAAC/D,IAAI,EAACoF;QAAO,CAAC,CAAC,CAACV,IAAI,CAACC,GAAG,IAAE;UACjC,IAAI,CAAC3D,WAAU,GAAI,KAAK;UACxB,IAAI,CAACG,aAAY,GAAI,EAAE;UACvB,IAAI,CAACU,kBAAiB,GAAI,KAAK;UAC/B,IAAI,CAAC0C,OAAO,CAAC;QACf,CAAC,CAAC,CAACoB,KAAK,CAAChB,GAAG,IAAE;UACZC,OAAO,CAACgB,KAAK,CAAC,WAAW;QAC3B,CAAC;MACH;IACF,CAAC;IACDzD,mBAAmBA,CAAA,EAAG;MACpB,IAAI,CAACN,kBAAiB,GAAI,KAAK;;MAE/B;MACA,IAAI,CAACyD,SAAS,CAAC,MAAM;QACnB,IAAI,IAAI,CAACC,KAAK,CAACC,cAAc,EAAE;UAC7B,IAAI,CAACD,KAAK,CAACC,cAAc,CAACC,KAAK,CAAC,CAAC;QACnC;MACF,CAAC,CAAC;IACJ,CAAC;IAEDrD,oBAAoBA,CAAA,EAAG;MACrB,IAAI,CAACpB,WAAU,GAAI,KAAK;MACxB,IAAI,CAACG,aAAY,GAAI,EAAE;MACvB,IAAI,CAACU,kBAAiB,GAAI,KAAK;IACjC,CAAC;IAEDgE,eAAeA,CAAA,EAAG;MAChB,IAAI,CAAC7E,WAAU,GAAI,KAAK;MACxB,IAAI,CAACG,aAAY,GAAI,EAAE;MACvB,IAAI,CAACU,kBAAiB,GAAI,KAAK;IACjC;EACF;AACF,CAAC;;AQhS0P;;ACA3P;;;;;AEA8E;AACtB;AACL;;AAEnD,CAA4E;;AAEO;AACnF,MAAM,gCAAW,gBAAgB,+BAAe,CAAC,8CAAM,aAAa,MAAM;;AAE1E,4DAAe;;ACTf;AACA;AACO,SAASiE,oBAAoBA,CAACC,GAAG,EAAE;EACxC,OAAOA,GAAG,CAACC,OAAO,CAAC,aAAa,EAAGC,CAAC,IAAKA,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC;AAC3D;AAGO,SAASC,yBAAkBA,CAACJ,GAAG,EAAE;EACtC,OAAOA,GAAG;AACZ;;ACTA;AACA;AACO,SAASK,cAAcA,CAAC/H,GAAG,EAAE;EAClC,OAAOA,GAAG,IAAIgI,IAAI,CAACC,KAAK,CAACjI,GAAG,CAAC;AAC/B;;ACJA;AACqD;AACX;AAC1C,8CAAe;EAAEyH,oBAAoB;EAAEK,kBAAkB;EAAEC,cAAcA,EAAAA,cAAAA;AAAC,CAAC;;ACH3E;AACgF,CAAC;AAC5B,CAAC;AACtD,MAAMK,IAAI,GAAG,CAACF,uBAAoB,CAAC,CAAC,CAAC;;AAErC;AACA,MAAMG,OAAO,GAAG,SAAAA,CAAUC,GAAG,EAAE;EAC7BF,IAAI,CAACjC,OAAO,CAAEoC,GAAG,IAAK;IACpBD,GAAG,CAACE,SAAS,CAACD,GAAG,CAAC5G,IAAI,EAAE4G,GAAG,CAAC;EAC9B,CAAC,CAAC;AACJ,CAAC;AAED,gDAAe;EAAEF,OAAO;EAAEF,QAAQA,EAAAA,SAAAA;AAAC,CAAC,EAAC,CAAC;;ACZd;AACA;AACxB,8CAAe,WAAG;AACI","sources":["webpack://my-app/./node_modules/vue-loader/dist/exportHelper.js","webpack://my-app/webpack/bootstrap","webpack://my-app/webpack/runtime/define property getters","webpack://my-app/webpack/runtime/hasOwnProperty shorthand","webpack://my-app/webpack/runtime/make namespace object","webpack://my-app/webpack/runtime/publicPath","webpack://my-app/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://my-app/external commonjs2 {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue?c804","webpack://my-app/./src/package/tips/index.vue","webpack://my-app/./src/package/tips/index.vue?ea3c","webpack://my-app/./src/package/tips/index.vue?33ba","webpack://my-app/./src/package/tips/index.vue?58cd","webpack://my-app/./src/package/tips/index.vue?0421","webpack://my-app/./src/package/tips/index.vue?d7d6","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue?1ecd","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue?46cc","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue?a63d","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue?e969","webpack://my-app/./src/package/public-js/letter.js","webpack://my-app/./src/package/public-js/num.js","webpack://my-app/./src/package/public-js/index.js","webpack://my-app/./src/package/index.js","webpack://my-app/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"vue\");","<template>\r\n <div class=\"radio-group-container\">\r\n <!-- 编辑/完成按钮 -->\r\n <div class=\"header\">\r\n <div v-if=\"!isEditMode\" class=\"edit-btn\" @click=\"isEditMode = true\">编辑</div>\r\n <div v-else class=\"edit-btn edit-save-btn\" @click=\"isEditMode = false\">完成</div>\r\n </div>\r\n\r\n <!-- 选项容器 - 使用网格布局,固定列宽 -->\r\n <div class=\"radio-grid\">\r\n <!-- 正常模式显示 -->\r\n <template v-if=\"!isEditMode\">\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { selected: modelValue === option.id }]\" @click=\"handleOptionSelect(option.id)\">\r\n <div class=\"radio-visual\"></div>\r\n <div class=\"option-label\">{{ option.name }}</div>\r\n </div>\r\n </template>\r\n\r\n <!-- 编辑模式显示 -->\r\n <template v-else>\r\n <!-- 现有选项 -->\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { 'editing-focus': editingFocusId === option.id }]\">\r\n <div class=\"edit-option\">\r\n <input type=\"text\" class=\"edit-input\" :value=\"option.name\" @focus=\"handleEditFocus(option.id)\"\r\n @blur=\"handleEditBlur(option.id, $event)\" @input=\"handleEditInput(option.id, $event)\"\r\n @keydown.enter=\"handleSaveOption(option.id, $event)\" spellcheck=\"false\" ref=\"editInputs\" />\r\n <div v-if=\"editingFocusId === option.id\" class=\"save-btn\" @click=\"handleSaveOption(option.id)\">\r\n 保存\r\n </div>\r\n <!-- <div v-else class=\"save-btn-placeholder\"></div> -->\r\n </div>\r\n </div>\r\n\r\n <!-- 新增选项(黄色边框) -->\r\n <div v-if=\"isAddingNew\" class=\"grid-item new-option\">\r\n <div class=\"edit-option new-option-input\">\r\n <input type=\"text\" class=\"edit-input new-input\" v-model.trim=\"newOptionText\" @focus=\"handleNewOptionFocus\"\r\n @blur=\"handleNewOptionBlur\" @keydown.enter=\"handleSaveNewOption\" placeholder=\"请输入新选项\" spellcheck=\"false\"\r\n ref=\"newOptionInput\" />\r\n <div class=\"save-btn\" @click=\"handleSaveNewOption\">保存</div>\r\n </div>\r\n </div>\r\n\r\n <!-- 添加按钮 -->\r\n <div v-if=\"!isAddingNew\" class=\"grid-item add-option\" @click=\"handleAddClick\">\r\n <div class=\"add-btn\">+</div>\r\n </div>\r\n </template>\r\n\r\n\r\n </div>\r\n \r\n <tips v-model=\"showInputTips\">\r\n 单击选项文字,进行输入,并编辑\r\n </tips>\r\n <!-- 放弃新增确认框 -->\r\n <div v-if=\"showDiscardConfirm\" class=\"confirm-modal\">\r\n <div class=\"confirm-content\">\r\n <h3>确认放弃</h3>\r\n <p>您未入内容,是否放弃新增选项?</p>\r\n <div class=\"confirm-buttons\">\r\n <div class=\"confirm-btn cancel\" @click=\"handleCancelDiscard\">继续输入</div>\r\n <div class=\"confirm-btn confirm\" @click=\"handleConfirmDiscard\">放弃新增</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <!-- 演示控制 -->\r\n <div class=\"demo-controls\" v-if=\"isDebug\" >\r\n <div class=\"demo-stats\">\r\n 当前选中: 选项{{ modelValue }} | 编辑聚焦: {{ editingFocusId ? '选项' + editingFocusId : '无' }} | 新增: {{ isAddingNew ?\r\n '是' :\r\n '否' }}\r\n </div>\r\n <div class=\"mode-toggle\">\r\n <span>当前模式:</span>\r\n <div class=\"toggle-buttons\">\r\n <div :class=\"['mode-btn', { active: !isEditMode }]\" @click=\"isEditMode = false\">\r\n 正常模式\r\n </div>\r\n <div :class=\"['mode-btn', { active: isEditMode }]\" @click=\"isEditMode = true\">\r\n 编辑模式\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"demo-options\">\r\n <div :class=\"['demo-btn', { active: editingFocusId !== null }]\"\r\n @click=\"editingFocusId = editingFocusId === 1 ? null : 1\">\r\n {{ editingFocusId === 1 ? '取消' : '设置' }}选项聚焦\r\n </div>\r\n <div :class=\"['demo-btn', { active: isAddingNew }]\" @click=\"isAddingNew = !isAddingNew\">\r\n {{ isAddingNew ? '隐藏' : '显示' }}新增选项\r\n </div>\r\n <div :class=\"['demo-btn', { active: showDiscardConfirm }]\" @click=\"showDiscardConfirm = !showDiscardConfirm\">\r\n {{ showDiscardConfirm ? '隐藏' : '显示' }}确认弹窗\r\n </div>\r\n <div :class=\"['demo-btn', { active: isFewOptions }]\" @click=\"toggleOptionsCount\">\r\n 显示 {{ isFewOptions ? '12' : '3' }} 个选项\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import tips from '../tips/index.vue'\r\nexport default {\r\n name: 'FixedWidthGridRadioGroup',\r\n props:{\r\n modelValue:[String,Number], \r\n list:[Function],\r\n add:[Function],\r\n update:[Function],\r\n },\r\n components:{\r\n tips\r\n },\r\n data() {\r\n return {\r\n isDebug:false,\r\n showInputTips:null,\r\n isEditMode: false,\r\n selectedOption: 1,\r\n editingFocusId: null,\r\n isAddingNew: false,\r\n showDiscardConfirm: false,\r\n newOptionText: '',\r\n isFewOptions: false,\r\n options:[],\r\n editValues: {}, // 用于存储编辑中的值\r\n originalValues: {}, // 用于存储编辑前的值\r\n \r\n };\r\n },\r\n \r\n mounted() {\r\n // 初始化编辑值 \r\n this.getData();\r\n },\r\n watch:{\r\n isEditMode(n,o){\r\n if(n){\r\n this.showInputTips = true; \r\n }\r\n },\r\n options(n,o){\r\n if(n){\r\n n.forEach(option => { \r\n this.originalValues[option.id] = option.name;\r\n });\r\n }else{\r\n this.editValues = []\r\n this.originalValues = []\r\n }\r\n }\r\n },\r\n methods: { \r\n getData(data){\r\n this.list(data).then(res=>{\r\n console.log('getData',res?.data?.rows)\r\n this.options = res?.data?.rows;\r\n })\r\n },\r\n\r\n toggleOptionsCount() {\r\n this.isFewOptions = !this.isFewOptions;\r\n },\r\n\r\n handleOptionSelect(id) {\r\n if (!this.isEditMode) { \r\n this.$emit('update:modelValue', id )\r\n this.$emit('change',this.options.find(it=>it.id == id))\r\n }\r\n },\r\n\r\n handleEditFocus(id) {\r\n this.editingFocusId = id;\r\n // 存储原始值\r\n this.originalValues[id] = this.editValues[id] || this.options.find(opt => opt.id === id)?.name || '';\r\n },\r\n\r\n handleEditBlur(id, event) {\r\n // 延迟处理,避免与保存按钮点击冲突\r\n setTimeout(() => {\r\n if (this.editingFocusId === id) {\r\n // 如果没有点击保存,恢复原始值\r\n if (this.editValues[id] !== this.originalValues[id]) {\r\n this.editValues[id] = this.originalValues[id];\r\n // 更新DOM\r\n if (event.target) {\r\n event.target.value = this.originalValues[id];\r\n }\r\n }\r\n this.editingFocusId = null;\r\n }\r\n }, 500);\r\n },\r\n\r\n handleEditInput(id, event) {\r\n this.editValues[id] = event.target.value.trim();\r\n },\r\n\r\n handleSaveOption(id) {\r\n console.log(this.editValues,id)\r\n const newName = this.editValues[id]?.trim() || '';\r\n const originalOption = this.options.find(opt => opt.id === id);\r\n\r\n if (newName && originalOption && newName !== originalOption.name) {\r\n // 在实际应用中,这里应该更新数据\r\n console.log(`保存选项 ${id}: ${newName}`);\r\n // 示例:更新选项名称\r\n originalOption.name = newName;\r\n this.originalValues[id] = newName;\r\n\r\n this.update({id,name:newName}).then(res=>{\r\n\r\n })\r\n\r\n }\r\n\r\n this.editingFocusId = null;\r\n },\r\n\r\n handleAddClick() {\r\n this.isAddingNew = true;\r\n this.newOptionText = '';\r\n\r\n // 聚焦到新输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleNewOptionFocus() {\r\n // 新增选项聚焦时不需要特殊处理\r\n },\r\n\r\n handleNewOptionBlur(event) {\r\n const text = this.newOptionText.trim();\r\n if (!text) {\r\n this.showDiscardConfirm = true;\r\n }\r\n },\r\n\r\n handleSaveNewOption() {\r\n const newName = this.newOptionText.trim(); \r\n if (newName) { \r\n this.$emit('toadd',newName) \r\n console.log(`添加新选项: ${newName}`); \r\n this.add({name:newName}).then(res=>{\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false; \r\n this.getData()\r\n }).catch(res=>{\r\n console.error('添加新选项 失败了')\r\n })\r\n }\r\n }, \r\n handleCancelDiscard() {\r\n this.showDiscardConfirm = false;\r\n\r\n // 重新聚焦到输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleConfirmDiscard() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n },\r\n\r\n cancelNewOption() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.radio-group-container {\r\n display: table;\r\n /* 稍微增加最大宽度以容纳固定宽度网格 */\r\n /* margin: 0 auto; */\r\n padding: 10px;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 8px;\r\n background-color: #f9f9f9;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n position: relative;\r\n}\r\n\r\n.header {\r\n display: none; \r\n position: absolute;\r\n right:-56px;\r\n top:0; \r\n height: 100%;\r\n padding-right: 20px;\r\n}\r\n\r\n.radio-group-container:hover .header {\r\n display: table; \r\n opacity: 0.2;\r\n}\r\n.radio-group-container .header:hover { \r\n display: table; \r\n opacity: 1;\r\n}\r\n\r\n.edit-btn {\r\n padding: 6px;\r\n background-color: #1890ff;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n display: inline-block;\r\n cursor: default;\r\n user-select: none;\r\n cursor: pointer;\r\n}\r\n\r\n.edit-save-btn{\r\n background-color: #52c41a;\r\n}\r\n\r\n\r\n/* 网格布局容器 - 固定列宽 */\r\n.radio-grid {\r\n display: grid;\r\n /* 每行5个元素,每个元素固定宽度为150px */\r\n grid-template-columns: repeat(5, 100px);\r\n gap: 5px;\r\n /* 元素之间的间距 */\r\n /* width: 100%; */\r\n /* 网格容器最小宽度为5 * 150px + 4 * 12px = 798px */\r\n /* min-width: 798px; */\r\n /* 如果容器宽度不够,允许水平滚动 */\r\n overflow-x: auto;\r\n padding-bottom: 5px;\r\n /* 为滚动条留出空间 */\r\n}\r\n\r\n/* 网格项 - 每个选项,固定宽度 */\r\n.grid-item {\r\n width: 100px;\r\n /* 固定宽度 */\r\n height: 60px;\r\n /* padding: 12px 8px; */\r\n border: 2px solid #e0e0e0;\r\n border-radius: 6px;\r\n background-color: white;\r\n transition: all 0.3s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n position: relative;\r\n cursor: pointer;\r\n user-select: none;\r\n /* 确保项目不会因为内容而改变宽度 */\r\n flex-shrink: 0; \r\n}\r\n\r\n.grid-item.selected {\r\n border-color: #1890ff;\r\n background-color: #e6f7ff;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.editing-focus {\r\n border-color: #1890ff;\r\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\r\n cursor: default;\r\n}\r\n\r\n.grid-item.new-option {\r\n border-color: #faad14;\r\n border-style: dashed;\r\n background-color: #fff7e6;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.add-option {\r\n border-style: dashed;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n}\r\n\r\n\r\n\r\n/* 单选按钮视觉样式 */\r\n.radio-visual {\r\n display: none;\r\n /* 在这个设计中我们不显示单选按钮的视觉标记 */\r\n}\r\n\r\n.option-label {\r\n width: 100%;\r\n text-align: center;\r\n font-size: 14px;\r\n color: #333;\r\n padding: 4px 0;\r\n /* 文本溢出时显示省略号 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n/* 编辑模式输入框样式 */\r\n.edit-option {\r\n width: 100%;\r\n /* display: flex;\r\n align-items: center;\r\n gap: 2px; */\r\n}\r\n\r\n.edit-input {\r\n width: 100%;\r\n height: 60px;\r\n /* flex: 1; */\r\n /* padding: 8px 12px; */\r\n border: 1px solid #d9d9d9;\r\n border-radius: 4px;\r\n border: none;\r\n font-size: 14px;\r\n outline: none;\r\n transition: border-color 0.3s;\r\n box-sizing: border-box;\r\n background-color: rgba(0, 0, 0, 0);\r\n cursor: text;\r\n /* 确保输入框不会超出容器 */\r\n /* max-width: 100px; */\r\n /* 根据150px宽度计算,减去内边距和按钮宽度 */\r\n /* 输入框文本溢出处理 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n text-align: center;\r\n}\r\n\r\n.edit-input:focus {\r\n border-color: #1890ff; \r\n white-space: normal;\r\n overflow: visible;\r\n text-overflow: clip;\r\n}\r\n\r\n.new-input {\r\n border-color: #faad14;\r\n}\r\n\r\n.save-btn {\r\n padding: 2px;\r\n background-color: #52c41a;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n white-space: nowrap;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n flex-shrink: 0;\r\n user-select: none;\r\n /* 防止按钮被压缩 */\r\n position: absolute;\r\n top:0;\r\n right:0; \r\n}\r\n\r\n.save-btn:hover {\r\n background-color: #73d13d;\r\n}\r\n\r\n.save-btn-placeholder {\r\n width: 46px;\r\n /* 与保存按钮相同的宽度,用于占位 */\r\n height: 0;\r\n visibility: hidden;\r\n flex-shrink: 0;\r\n}\r\n\r\n/* 添加按钮样式 */\r\n.add-btn {\r\n width: 34px;\r\n height: 34px;\r\n border-radius: 50%;\r\n background-color: #f0f0f0;\r\n border: 2px dashed #d9d9d9;\r\n font-size: 20px;\r\n color: #999;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.3s;\r\n cursor: pointer;\r\n user-select: none;\r\n}\r\n\r\n/* .grid-item.add-option:hover */\r\n .add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n.add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n/* 确认弹窗样式 */\r\n.confirm-modal {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000;\r\n}\r\n\r\n.confirm-content {\r\n background-color: white;\r\n padding: 24px;\r\n border-radius: 8px;\r\n min-width: 300px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.confirm-content h3 {\r\n margin-top: 0;\r\n margin-bottom: 12px;\r\n color: #333;\r\n font-size: 16px;\r\n}\r\n\r\n.confirm-content p {\r\n margin-bottom: 20px;\r\n color: #666;\r\n font-size: 14px;\r\n}\r\n\r\n.confirm-buttons {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 12px;\r\n}\r\n\r\n.confirm-btn {\r\n padding: 6px 16px;\r\n border-radius: 4px;\r\n border: 1px solid #d9d9d9;\r\n background-color: white;\r\n font-size: 14px;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n}\r\n.cancel{\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n.confirm-btn.cancel:hover {\r\n background-color: #3da1ff;\r\n}\r\n\r\n.confirm-btn.confirm {\r\n background-color: #ff4d4f;\r\n color: white;\r\n border-color: #ff4d4f;\r\n}\r\n\r\n.confirm-btn.confirm:hover {\r\n background-color: #ff7875;\r\n border-color: #ff7875;\r\n}\r\n\r\n/* 演示控制样式 */\r\n.demo-controls {\r\n margin-top: 30px;\r\n padding-top: 20px;\r\n border-top: 1px solid #eee;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 15px;\r\n}\r\n\r\n.demo-stats {\r\n padding: 10px;\r\n background-color: #f0f8ff;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n color: #666;\r\n border-left: 4px solid #1890ff;\r\n}\r\n\r\n.mode-toggle {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n\r\n.mode-toggle span {\r\n font-size: 14px;\r\n color: #666;\r\n}\r\n\r\n.toggle-buttons {\r\n display: flex;\r\n border-radius: 4px;\r\n overflow: hidden;\r\n border: 1px solid #d9d9d9;\r\n}\r\n\r\n.mode-btn {\r\n padding: 6px 16px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n background-color: #f5f5f5;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.mode-btn.active {\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n\r\n.mode-btn:not(.active):hover {\r\n background-color: #e6f7ff;\r\n}\r\n\r\n.demo-options {\r\n display: flex;\r\n gap: 10px;\r\n flex-wrap: wrap;\r\n}\r\n\r\n.demo-btn {\r\n padding: 6px 16px;\r\n background-color: #722ed1;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.demo-btn.active {\r\n background-color: #9254de;\r\n}\r\n\r\n.demo-btn:hover {\r\n background-color: #9254de;\r\n}\r\n\r\n\r\n\r\n \r\n</style>","export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=template&id=f06df04a&scoped=true\"","<template>\r\n <div class=\"to_input_tips\" v-show=\"modelValue\">\r\n <slot></slot>\r\n </div>\r\n</template>\r\n\r\n <script>\r\n export default {\r\n props:{\r\n modelValue:{\r\n type:Boolean,\r\n default: false,\r\n },\r\n delay:{\r\n type:Number,\r\n default: 2000,\r\n },\r\n }, \r\n watch:{\r\n modelValue(n,o){\r\n if(n){\r\n setTimeout(() => {\r\n this.$emit('update:modelValue',false);\r\n }, this.delay);\r\n }\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.to_input_tips {\r\n display: table;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n color: #fff;\r\n padding: 10px;\r\n border-radius: 4px;\r\n margin: 0 auto;\r\n position: absolute;\r\n top: 50px;\r\n left: 0;\r\n right: 0; \r\n}\r\n\r\n</style>","export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=template&id=1e8c4bc7&scoped=true\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=style&index=0&id=1e8c4bc7&scoped=true&lang=css\"","import { render } from \"./index.vue?vue&type=template&id=1e8c4bc7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1e8c4bc7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1e8c4bc7\"]])\n\nexport default __exports__","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=style&index=0&id=f06df04a&scoped=true&lang=css\"","import { render } from \"./index.vue?vue&type=template&id=f06df04a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f06df04a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f06df04a\"]])\n\nexport default __exports__","// package/public-js/letter.js\r\n// 处理首字母大小\r\nexport function handleFirstUpperCase(str) {\r\n return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase());\r\n}\r\n\r\n\r\nexport function handleDrawDownHump(str) {\r\n return str;\r\n}","// package/public-js/num.js\r\n// 四舍五入Math.round(number)\r\nexport function handleRoundOff(val) {\r\n return val && Math.round(val);\r\n}\r\n","// package/public-js/index.js\r\nimport { handleFirstUpperCase, } from \"./letter.js\";\r\nimport { handleRoundOff } from \"./num.js\";\r\nexport default { handleFirstUpperCase, handleDrawDownHump, handleRoundOff };\r\n","//package/index.js\r\nimport HorizRadioSelfNaming from \"../package/horiz-radio-self-naming/index.vue\"; // 引入封装好的组件\r\nimport publicjs from \"../package/public-js/index.js\"; // 引入封装好的方法\r\nconst coms = [HorizRadioSelfNaming]; // 将来如果有其它组件,都可以写到这个数组里\r\n\r\n// 批量组件注册\r\nconst install = function (Vue) {\r\n coms.forEach((com) => {\r\n Vue.component(com.name, com);\r\n });\r\n};\r\n\r\nexport default { install, publicjs }; // 这个方法以后再使用的时候可以被use调用\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["Object","defineProperty","exports","value","default","sfc","props","target","__vccOpts","key","val","class","_createElementVNode","_hoisted_12","_createElementBlock","_hoisted_1","_hoisted_2","$data","isEditMode","onClick","_cache","$event","_hoisted_3","_Fragment","_renderList","options","option","id","_normalizeClass","selected","$props","modelValue","$options","handleOptionSelect","_hoisted_5","_hoisted_6","_toDisplayString","name","editingFocusId","_hoisted_7","type","onFocus","handleEditFocus","onBlur","handleEditBlur","onInput","handleEditInput","onKeydown","_withKeys","handleSaveOption","spellcheck","ref","_hoisted_9","isAddingNew","_hoisted_10","_hoisted_11","newOptionText","args","handleNewOptionFocus","handleNewOptionBlur","handleSaveNewOption","placeholder","handleAddClick","_createVNode","_component_tips","showInputTips","showDiscardConfirm","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","handleCancelDiscard","handleConfirmDiscard","isDebug","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","active","_hoisted_24","isFewOptions","toggleOptionsCount","_renderSlot","_ctx","$slots","undefined","Boolean","delay","Number","watch","n","o","setTimeout","$emit","tips","String","list","Function","add","update","components","data","selectedOption","editValues","originalValues","mounted","getData","forEach","methods","then","res","console","log","rows","find","it","opt","event","trim","newName","originalOption","$nextTick","$refs","newOptionInput","focus","text","catch","error","cancelNewOption","handleFirstUpperCase","str","replace","L","toUpperCase","handleDrawDownHump","handleRoundOff","Math","round","HorizRadioSelfNaming","publicjs","coms","install","Vue","com","component"],"sourceRoot":""}
1
+ {"version":3,"file":"zi-ming-ui.common.js","mappings":"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","sources":["webpack://my-app/./node_modules/vue-loader/dist/exportHelper.js","webpack://my-app/webpack/bootstrap","webpack://my-app/webpack/runtime/define property getters","webpack://my-app/webpack/runtime/hasOwnProperty shorthand","webpack://my-app/webpack/runtime/make namespace object","webpack://my-app/webpack/runtime/publicPath","webpack://my-app/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://my-app/external commonjs2 {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue?4a60","webpack://my-app/./src/package/tips/index.vue","webpack://my-app/./src/package/tips/index.vue?ea3c","webpack://my-app/./src/package/tips/index.vue?33ba","webpack://my-app/./src/package/tips/index.vue?58cd","webpack://my-app/./src/package/tips/index.vue?0421","webpack://my-app/./src/package/tips/index.vue?d7d6","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue?1ecd","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue?7fa8","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue?9e03","webpack://my-app/./src/package/horiz-radio-self-naming/index.vue?e969","webpack://my-app/./src/package/public-js/letter.js","webpack://my-app/./src/package/public-js/num.js","webpack://my-app/./src/package/public-js/index.js","webpack://my-app/./src/package/index.js","webpack://my-app/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"vue\");","<template>\r\n <div class=\"radio-group-container\">\r\n <!-- 编辑/完成按钮 -->\r\n <div class=\"header\">\r\n <div v-if=\"!isEditMode\" class=\"edit-btn\" @click=\"isEditMode = true\">编辑</div>\r\n <div v-else class=\"edit-btn edit-save-btn\" @click=\"isEditMode = false\">完成</div>\r\n </div>\r\n\r\n <!-- 选项容器 - 使用网格布局,固定列宽 -->\r\n <div class=\"radio-grid\">\r\n <!-- 正常模式显示 -->\r\n <template v-if=\"!isEditMode\">\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { selected: modelValue === option.id }]\" @click=\"handleOptionSelect(option.id)\">\r\n <div class=\"radio-visual\"></div>\r\n <div class=\"option-label\">{{ option.name }}</div>\r\n </div>\r\n </template>\r\n\r\n <!-- 编辑模式显示 -->\r\n <template v-else>\r\n <!-- 现有选项 -->\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { 'editing-focus': editingFocusId === option.id }]\">\r\n <div class=\"edit-option\">\r\n <input type=\"text\" class=\"edit-input\" :value=\"option.name\" @focus=\"handleEditFocus(option.id)\"\r\n @blur=\"handleEditBlur(option.id, $event)\" @input=\"handleEditInput(option.id, $event)\"\r\n @keydown.enter=\"handleSaveOption(option.id, $event)\" spellcheck=\"false\" ref=\"editInputs\" />\r\n <div v-if=\"editingFocusId === option.id\" class=\"save-btn\" @click=\"handleSaveOption(option.id)\">\r\n 保存\r\n </div>\r\n <!-- <div v-else class=\"save-btn-placeholder\"></div> -->\r\n </div>\r\n </div>\r\n\r\n <!-- 新增选项(黄色边框) -->\r\n <div v-if=\"isAddingNew\" class=\"grid-item new-option\">\r\n <div class=\"edit-option new-option-input\">\r\n <input type=\"text\" class=\"edit-input new-input\" v-model.trim=\"newOptionText\" @focus=\"handleNewOptionFocus\"\r\n @blur=\"handleNewOptionBlur\" @keydown.enter=\"handleSaveNewOption\" placeholder=\"请输入新选项\" spellcheck=\"false\"\r\n ref=\"newOptionInput\" />\r\n <div class=\"save-btn\" @click=\"handleSaveNewOption\">保存</div>\r\n </div>\r\n </div>\r\n\r\n <!-- 添加按钮 -->\r\n <div v-if=\"!isAddingNew\" class=\"grid-item add-option\" @click=\"handleAddClick\">\r\n <div class=\"add-btn\">+</div>\r\n </div>\r\n </template>\r\n\r\n\r\n </div>\r\n \r\n <tips v-model=\"showInputTips\">\r\n 单击选项文字,进行输入,并编辑\r\n </tips>\r\n <!-- 放弃新增确认框 -->\r\n <div v-if=\"showDiscardConfirm\" class=\"confirm-modal\">\r\n <div class=\"confirm-content\">\r\n <h3>确认放弃</h3>\r\n <p>您未入内容,是否放弃新增选项?</p>\r\n <div class=\"confirm-buttons\">\r\n <div class=\"confirm-btn cancel\" @click=\"handleCancelDiscard\">继续输入</div>\r\n <div class=\"confirm-btn confirm\" @click=\"handleConfirmDiscard\">放弃新增</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <!-- 演示控制 -->\r\n <div class=\"demo-controls\" v-if=\"isDebug\" >\r\n <div class=\"demo-stats\">\r\n 当前选中: 选项{{ modelValue }} | 编辑聚焦: {{ editingFocusId ? '选项' + editingFocusId : '无' }} | 新增: {{ isAddingNew ?\r\n '是' :\r\n '否' }}\r\n </div>\r\n <div class=\"mode-toggle\">\r\n <span>当前模式:</span>\r\n <div class=\"toggle-buttons\">\r\n <div :class=\"['mode-btn', { active: !isEditMode }]\" @click=\"isEditMode = false\">\r\n 正常模式\r\n </div>\r\n <div :class=\"['mode-btn', { active: isEditMode }]\" @click=\"isEditMode = true\">\r\n 编辑模式\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"demo-options\">\r\n <div :class=\"['demo-btn', { active: editingFocusId !== null }]\"\r\n @click=\"editingFocusId = editingFocusId === 1 ? null : 1\">\r\n {{ editingFocusId === 1 ? '取消' : '设置' }}选项聚焦\r\n </div>\r\n <div :class=\"['demo-btn', { active: isAddingNew }]\" @click=\"isAddingNew = !isAddingNew\">\r\n {{ isAddingNew ? '隐藏' : '显示' }}新增选项\r\n </div>\r\n <div :class=\"['demo-btn', { active: showDiscardConfirm }]\" @click=\"showDiscardConfirm = !showDiscardConfirm\">\r\n {{ showDiscardConfirm ? '隐藏' : '显示' }}确认弹窗\r\n </div>\r\n <div :class=\"['demo-btn', { active: isFewOptions }]\" @click=\"toggleOptionsCount\">\r\n 显示 {{ isFewOptions ? '12' : '3' }} 个选项\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import tips from '../tips/index.vue'\r\nexport default {\r\n name: 'FixedWidthGridRadioGroup',\r\n props:{\r\n modelValue:[String,Number], \r\n list:[Function],\r\n add:[Function],\r\n update:[Function],\r\n },\r\n components:{\r\n tips\r\n },\r\n data() {\r\n return {\r\n isDebug:false,\r\n showInputTips:null,\r\n isEditMode: false,\r\n selectedOption: 1,\r\n editingFocusId: null,\r\n isAddingNew: false,\r\n showDiscardConfirm: false,\r\n newOptionText: '',\r\n isFewOptions: false,\r\n options:[],\r\n editValues: {}, // 用于存储编辑中的值\r\n originalValues: {}, // 用于存储编辑前的值\r\n \r\n };\r\n },\r\n \r\n mounted() {\r\n // 初始化编辑值 \r\n this.getData();\r\n },\r\n watch:{\r\n isEditMode(n,o){\r\n if(n){\r\n this.showInputTips = true; \r\n }\r\n },\r\n options(n,o){\r\n if(n){\r\n n.forEach(option => { \r\n this.originalValues[option.id] = option.name;\r\n });\r\n }else{\r\n this.editValues = []\r\n this.originalValues = []\r\n }\r\n }\r\n },\r\n methods: { \r\n getData(data){\r\n this.list(data).then(res=>{\r\n if(res && res.data && res.data.rows){\r\n console.log('getData',res.data.rows)\r\n this.options = res.data.rows;\r\n }else{\r\n this.options = []\r\n }\r\n })\r\n },\r\n\r\n toggleOptionsCount() {\r\n this.isFewOptions = !this.isFewOptions;\r\n },\r\n\r\n handleOptionSelect(id) {\r\n if (!this.isEditMode) { \r\n this.$emit('update:modelValue', id )\r\n this.$emit('change',this.options.find(it=>it.id == id))\r\n }\r\n },\r\n\r\n handleEditFocus(id) {\r\n this.editingFocusId = id;\r\n let one = this.options.find(opt => opt.id === id);\r\n let name = one ? one.name :null;\r\n // 存储原始值\r\n this.originalValues[id] = this.editValues[id] || name || '';\r\n },\r\n\r\n handleEditBlur(id, event) {\r\n // 延迟处理,避免与保存按钮点击冲突\r\n setTimeout(() => {\r\n if (this.editingFocusId === id) {\r\n // 如果没有点击保存,恢复原始值\r\n if (this.editValues[id] !== this.originalValues[id]) {\r\n this.editValues[id] = this.originalValues[id];\r\n // 更新DOM\r\n if (event.target) {\r\n event.target.value = this.originalValues[id];\r\n }\r\n }\r\n this.editingFocusId = null;\r\n }\r\n }, 500);\r\n },\r\n\r\n handleEditInput(id, event) {\r\n this.editValues[id] = event.target.value.trim();\r\n },\r\n\r\n handleSaveOption(id) {\r\n console.log(this.editValues,id)\r\n let one = this.editValues[id] || '';\r\n const newName = one.trim() || '';\r\n const originalOption = this.options.find(opt => opt.id === id);\r\n\r\n if (newName && originalOption && newName !== originalOption.name) {\r\n // 在实际应用中,这里应该更新数据\r\n console.log(`保存选项 ${id}: ${newName}`);\r\n // 示例:更新选项名称\r\n originalOption.name = newName;\r\n this.originalValues[id] = newName;\r\n\r\n this.update({id,name:newName}).then(res=>{\r\n\r\n })\r\n\r\n }\r\n\r\n this.editingFocusId = null;\r\n },\r\n\r\n handleAddClick() {\r\n this.isAddingNew = true;\r\n this.newOptionText = '';\r\n\r\n // 聚焦到新输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleNewOptionFocus() {\r\n // 新增选项聚焦时不需要特殊处理\r\n },\r\n\r\n handleNewOptionBlur(event) {\r\n const text = this.newOptionText.trim();\r\n if (!text) {\r\n this.showDiscardConfirm = true;\r\n }\r\n },\r\n\r\n handleSaveNewOption() {\r\n const newName = this.newOptionText.trim(); \r\n if (newName) { \r\n this.$emit('toadd',newName) \r\n console.log(`添加新选项: ${newName}`); \r\n this.add({name:newName}).then(res=>{\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false; \r\n this.getData()\r\n }).catch(res=>{\r\n console.error('添加新选项 失败了')\r\n })\r\n }\r\n }, \r\n handleCancelDiscard() {\r\n this.showDiscardConfirm = false;\r\n\r\n // 重新聚焦到输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleConfirmDiscard() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n },\r\n\r\n cancelNewOption() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.radio-group-container {\r\n display: table;\r\n /* 稍微增加最大宽度以容纳固定宽度网格 */\r\n /* margin: 0 auto; */\r\n padding: 10px;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 8px;\r\n background-color: #f9f9f9;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n position: relative;\r\n}\r\n\r\n.header {\r\n display: none; \r\n position: absolute;\r\n right:-56px;\r\n top:0; \r\n height: 100%;\r\n padding-right: 20px;\r\n}\r\n\r\n.radio-group-container:hover .header {\r\n display: table; \r\n opacity: 0.2;\r\n}\r\n.radio-group-container .header:hover { \r\n display: table; \r\n opacity: 1;\r\n}\r\n\r\n.edit-btn {\r\n padding: 6px;\r\n background-color: #1890ff;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n display: inline-block;\r\n cursor: default;\r\n user-select: none;\r\n cursor: pointer;\r\n}\r\n\r\n.edit-save-btn{\r\n background-color: #52c41a;\r\n}\r\n\r\n\r\n/* 网格布局容器 - 固定列宽 */\r\n.radio-grid {\r\n display: grid;\r\n /* 每行5个元素,每个元素固定宽度为150px */\r\n grid-template-columns: repeat(5, 100px);\r\n gap: 5px;\r\n /* 元素之间的间距 */\r\n /* width: 100%; */\r\n /* 网格容器最小宽度为5 * 150px + 4 * 12px = 798px */\r\n /* min-width: 798px; */\r\n /* 如果容器宽度不够,允许水平滚动 */\r\n overflow-x: auto;\r\n padding-bottom: 5px;\r\n /* 为滚动条留出空间 */\r\n}\r\n\r\n/* 网格项 - 每个选项,固定宽度 */\r\n.grid-item {\r\n width: 100px;\r\n /* 固定宽度 */\r\n height: 60px;\r\n /* padding: 12px 8px; */\r\n border: 2px solid #e0e0e0;\r\n border-radius: 6px;\r\n background-color: white;\r\n transition: all 0.3s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n position: relative;\r\n cursor: pointer;\r\n user-select: none;\r\n /* 确保项目不会因为内容而改变宽度 */\r\n flex-shrink: 0; \r\n}\r\n\r\n.grid-item.selected {\r\n border-color: #1890ff;\r\n background-color: #e6f7ff;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.editing-focus {\r\n border-color: #1890ff;\r\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\r\n cursor: default;\r\n}\r\n\r\n.grid-item.new-option {\r\n border-color: #faad14;\r\n border-style: dashed;\r\n background-color: #fff7e6;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.add-option {\r\n border-style: dashed;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n}\r\n\r\n\r\n\r\n/* 单选按钮视觉样式 */\r\n.radio-visual {\r\n display: none;\r\n /* 在这个设计中我们不显示单选按钮的视觉标记 */\r\n}\r\n\r\n.option-label {\r\n width: 100%;\r\n text-align: center;\r\n font-size: 14px;\r\n color: #333;\r\n padding: 4px 0;\r\n /* 文本溢出时显示省略号 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n/* 编辑模式输入框样式 */\r\n.edit-option {\r\n width: 100%;\r\n /* display: flex;\r\n align-items: center;\r\n gap: 2px; */\r\n}\r\n\r\n.edit-input {\r\n width: 100%;\r\n height: 60px;\r\n /* flex: 1; */\r\n /* padding: 8px 12px; */\r\n border: 1px solid #d9d9d9;\r\n border-radius: 4px;\r\n border: none;\r\n font-size: 14px;\r\n outline: none;\r\n transition: border-color 0.3s;\r\n box-sizing: border-box;\r\n background-color: rgba(0, 0, 0, 0);\r\n cursor: text;\r\n /* 确保输入框不会超出容器 */\r\n /* max-width: 100px; */\r\n /* 根据150px宽度计算,减去内边距和按钮宽度 */\r\n /* 输入框文本溢出处理 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n text-align: center;\r\n}\r\n\r\n.edit-input:focus {\r\n border-color: #1890ff; \r\n white-space: normal;\r\n overflow: visible;\r\n text-overflow: clip;\r\n}\r\n\r\n.new-input {\r\n border-color: #faad14;\r\n}\r\n\r\n.save-btn {\r\n padding: 2px;\r\n background-color: #52c41a;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n white-space: nowrap;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n flex-shrink: 0;\r\n user-select: none;\r\n /* 防止按钮被压缩 */\r\n position: absolute;\r\n top:0;\r\n right:0; \r\n}\r\n\r\n.save-btn:hover {\r\n background-color: #73d13d;\r\n}\r\n\r\n.save-btn-placeholder {\r\n width: 46px;\r\n /* 与保存按钮相同的宽度,用于占位 */\r\n height: 0;\r\n visibility: hidden;\r\n flex-shrink: 0;\r\n}\r\n\r\n/* 添加按钮样式 */\r\n.add-btn {\r\n width: 34px;\r\n height: 34px;\r\n border-radius: 50%;\r\n background-color: #f0f0f0;\r\n border: 2px dashed #d9d9d9;\r\n font-size: 20px;\r\n color: #999;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.3s;\r\n cursor: pointer;\r\n user-select: none;\r\n}\r\n\r\n/* .grid-item.add-option:hover */\r\n .add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n.add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n/* 确认弹窗样式 */\r\n.confirm-modal {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000;\r\n}\r\n\r\n.confirm-content {\r\n background-color: white;\r\n padding: 24px;\r\n border-radius: 8px;\r\n min-width: 300px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.confirm-content h3 {\r\n margin-top: 0;\r\n margin-bottom: 12px;\r\n color: #333;\r\n font-size: 16px;\r\n}\r\n\r\n.confirm-content p {\r\n margin-bottom: 20px;\r\n color: #666;\r\n font-size: 14px;\r\n}\r\n\r\n.confirm-buttons {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 12px;\r\n}\r\n\r\n.confirm-btn {\r\n padding: 6px 16px;\r\n border-radius: 4px;\r\n border: 1px solid #d9d9d9;\r\n background-color: white;\r\n font-size: 14px;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n}\r\n.cancel{\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n.confirm-btn.cancel:hover {\r\n background-color: #3da1ff;\r\n}\r\n\r\n.confirm-btn.confirm {\r\n background-color: #ff4d4f;\r\n color: white;\r\n border-color: #ff4d4f;\r\n}\r\n\r\n.confirm-btn.confirm:hover {\r\n background-color: #ff7875;\r\n border-color: #ff7875;\r\n}\r\n\r\n/* 演示控制样式 */\r\n.demo-controls {\r\n margin-top: 30px;\r\n padding-top: 20px;\r\n border-top: 1px solid #eee;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 15px;\r\n}\r\n\r\n.demo-stats {\r\n padding: 10px;\r\n background-color: #f0f8ff;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n color: #666;\r\n border-left: 4px solid #1890ff;\r\n}\r\n\r\n.mode-toggle {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n\r\n.mode-toggle span {\r\n font-size: 14px;\r\n color: #666;\r\n}\r\n\r\n.toggle-buttons {\r\n display: flex;\r\n border-radius: 4px;\r\n overflow: hidden;\r\n border: 1px solid #d9d9d9;\r\n}\r\n\r\n.mode-btn {\r\n padding: 6px 16px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n background-color: #f5f5f5;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.mode-btn.active {\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n\r\n.mode-btn:not(.active):hover {\r\n background-color: #e6f7ff;\r\n}\r\n\r\n.demo-options {\r\n display: flex;\r\n gap: 10px;\r\n flex-wrap: wrap;\r\n}\r\n\r\n.demo-btn {\r\n padding: 6px 16px;\r\n background-color: #722ed1;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.demo-btn.active {\r\n background-color: #9254de;\r\n}\r\n\r\n.demo-btn:hover {\r\n background-color: #9254de;\r\n}\r\n\r\n\r\n\r\n \r\n</style>","export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=template&id=b6864cf2&scoped=true\"","<template>\r\n <div class=\"to_input_tips\" v-show=\"modelValue\">\r\n <slot></slot>\r\n </div>\r\n</template>\r\n\r\n <script>\r\n export default {\r\n props:{\r\n modelValue:{\r\n type:Boolean,\r\n default: false,\r\n },\r\n delay:{\r\n type:Number,\r\n default: 2000,\r\n },\r\n }, \r\n watch:{\r\n modelValue(n,o){\r\n if(n){\r\n setTimeout(() => {\r\n this.$emit('update:modelValue',false);\r\n }, this.delay);\r\n }\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.to_input_tips {\r\n display: table;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n color: #fff;\r\n padding: 10px;\r\n border-radius: 4px;\r\n margin: 0 auto;\r\n position: absolute;\r\n top: 50px;\r\n left: 0;\r\n right: 0; \r\n}\r\n\r\n</style>","export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=template&id=1e8c4bc7&scoped=true\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=style&index=0&id=1e8c4bc7&scoped=true&lang=css\"","import { render } from \"./index.vue?vue&type=template&id=1e8c4bc7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1e8c4bc7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1e8c4bc7\"]])\n\nexport default __exports__","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=style&index=0&id=b6864cf2&scoped=true&lang=css\"","import { render } from \"./index.vue?vue&type=template&id=b6864cf2&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=b6864cf2&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b6864cf2\"]])\n\nexport default __exports__","// package/public-js/letter.js\r\n// 处理首字母大小\r\nexport function handleFirstUpperCase(str) {\r\n return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase());\r\n}\r\n\r\n\r\nexport function handleDrawDownHump(str) {\r\n return str;\r\n}","// package/public-js/num.js\r\n// 四舍五入Math.round(number)\r\nexport function handleRoundOff(val) {\r\n return val && Math.round(val);\r\n}\r\n","// package/public-js/index.js\r\nimport { handleFirstUpperCase, } from \"./letter.js\";\r\nimport { handleRoundOff } from \"./num.js\";\r\nexport default { handleFirstUpperCase, handleDrawDownHump, handleRoundOff };\r\n","//package/index.js\r\nimport HorizRadioSelfNaming from \"../package/horiz-radio-self-naming/index.vue\"; // 引入封装好的组件\r\nimport publicjs from \"../package/public-js/index.js\"; // 引入封装好的方法\r\nconst coms = [HorizRadioSelfNaming]; // 将来如果有其它组件,都可以写到这个数组里\r\n\r\n// 批量组件注册\r\nconst install = function (Vue) {\r\n coms.forEach((com) => {\r\n Vue.component(com.name, com);\r\n });\r\n};\r\n\r\nexport default { install, publicjs }; // 这个方法以后再使用的时候可以被use调用\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["Object","defineProperty","exports","value","default","sfc","props","target","__vccOpts","key","val","class","_createElementVNode","_hoisted_12","_createElementBlock","_hoisted_1","_hoisted_2","$data","isEditMode","onClick","_cache","$event","_hoisted_3","_Fragment","_renderList","options","option","id","_normalizeClass","selected","$props","modelValue","$options","handleOptionSelect","_hoisted_5","_hoisted_6","_toDisplayString","name","editingFocusId","_hoisted_7","type","onFocus","handleEditFocus","onBlur","handleEditBlur","onInput","handleEditInput","onKeydown","_withKeys","handleSaveOption","spellcheck","ref","_hoisted_9","isAddingNew","_hoisted_10","_hoisted_11","newOptionText","args","handleNewOptionFocus","handleNewOptionBlur","handleSaveNewOption","placeholder","handleAddClick","_createVNode","_component_tips","showInputTips","showDiscardConfirm","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","handleCancelDiscard","handleConfirmDiscard","isDebug","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","active","_hoisted_24","isFewOptions","toggleOptionsCount","_renderSlot","_ctx","$slots","undefined","Boolean","delay","Number","watch","n","o","setTimeout","$emit","tips","String","list","Function","add","update","components","data","selectedOption","editValues","originalValues","mounted","getData","forEach","methods","then","res","rows","console","log","find","it","one","opt","event","trim","newName","originalOption","$nextTick","$refs","newOptionInput","focus","text","catch","error","cancelNewOption","handleFirstUpperCase","str","replace","L","toUpperCase","handleDrawDownHump","handleRoundOff","Math","round","HorizRadioSelfNaming","publicjs","coms","install","Vue","com","component"],"sourceRoot":""}
package/zi-ming-ui.css CHANGED
@@ -1 +1 @@
1
- .to_input_tips[data-v-1e8c4bc7]{display:table;background-color:rgba(0,0,0,.5);color:#fff;padding:10px;border-radius:4px;margin:0 auto;position:absolute;top:50px;left:0;right:0}.radio-group-container[data-v-f06df04a]{display:table;padding:10px;border:1px solid #e0e0e0;border-radius:8px;background-color:#f9f9f9;box-shadow:0 2px 8px rgba(0,0,0,.1);position:relative}.header[data-v-f06df04a]{display:none;position:absolute;right:-56px;top:0;height:100%;padding-right:20px}.radio-group-container:hover .header[data-v-f06df04a]{display:table;opacity:.2}.radio-group-container .header[data-v-f06df04a]:hover{display:table;opacity:1}.edit-btn[data-v-f06df04a]{padding:6px;background-color:#1890ff;color:#fff;border-radius:4px;font-size:12px;display:inline-block;cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.edit-save-btn[data-v-f06df04a]{background-color:#52c41a}.radio-grid[data-v-f06df04a]{display:grid;grid-template-columns:repeat(5,100px);gap:5px;overflow-x:auto;padding-bottom:5px}.grid-item[data-v-f06df04a]{width:100px;height:60px;border:2px solid #e0e0e0;border-radius:6px;background-color:#fff;transition:all .3s;display:flex;align-items:center;justify-content:center;box-sizing:border-box;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0}.grid-item.selected[data-v-f06df04a]{border-color:#1890ff;background-color:#e6f7ff;cursor:default}.grid-item.editing-focus[data-v-f06df04a]{border-color:#1890ff;box-shadow:0 0 0 2px rgba(24,144,255,.2);cursor:default}.grid-item.new-option[data-v-f06df04a]{border-color:#faad14;border-style:dashed;background-color:#fff7e6;cursor:default}.grid-item.add-option[data-v-f06df04a]{border-style:dashed;display:flex;align-items:center;justify-content:center;cursor:pointer}.radio-visual[data-v-f06df04a]{display:none}.option-label[data-v-f06df04a]{width:100%;text-align:center;font-size:14px;color:#333;padding:4px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edit-option[data-v-f06df04a]{width:100%}.edit-input[data-v-f06df04a]{width:100%;height:60px;border:1px solid #d9d9d9;border-radius:4px;border:none;font-size:14px;outline:none;transition:border-color .3s;box-sizing:border-box;background-color:transparent;cursor:text;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.edit-input[data-v-f06df04a]:focus{border-color:#1890ff;white-space:normal;overflow:visible;text-overflow:clip}.new-input[data-v-f06df04a]{border-color:#faad14}.save-btn[data-v-f06df04a]{padding:2px;background-color:#52c41a;color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;display:inline-block;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;transition:background-color .3s;flex-shrink:0;user-select:none;position:absolute;top:0;right:0}.save-btn[data-v-f06df04a]:hover{background-color:#73d13d}.save-btn-placeholder[data-v-f06df04a]{width:46px;height:0;visibility:hidden;flex-shrink:0}.add-btn[data-v-f06df04a]{width:34px;height:34px;border-radius:50%;background-color:#f0f0f0;border:2px dashed #d9d9d9;font-size:20px;color:#999;display:flex;align-items:center;justify-content:center;transition:all .3s;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:#e6f7ff;border-color:#1890ff;color:#1890ff}.confirm-modal[data-v-f06df04a]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.confirm-content[data-v-f06df04a]{background-color:#fff;padding:24px;border-radius:8px;min-width:300px;box-shadow:0 4px 12px rgba(0,0,0,.15)}.confirm-content h3[data-v-f06df04a]{margin-top:0;margin-bottom:12px;color:#333;font-size:16px}.confirm-content p[data-v-f06df04a]{margin-bottom:20px;color:#666;font-size:14px}.confirm-buttons[data-v-f06df04a]{display:flex;justify-content:flex-end;gap:12px}.confirm-btn[data-v-f06df04a]{padding:6px 16px;border-radius:4px;border:1px solid #d9d9d9;background-color:#fff;font-size:14px;display:inline-block;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color .3s}.cancel[data-v-f06df04a]{background-color:#1890ff;color:#fff}.confirm-btn.cancel[data-v-f06df04a]:hover{background-color:#3da1ff}.confirm-btn.confirm[data-v-f06df04a]{background-color:#ff4d4f;color:#fff;border-color:#ff4d4f}.confirm-btn.confirm[data-v-f06df04a]:hover{background-color:#ff7875;border-color:#ff7875}.demo-controls[data-v-f06df04a]{margin-top:30px;padding-top:20px;border-top:1px solid #eee;display:flex;flex-direction:column;gap:15px}.demo-stats[data-v-f06df04a]{padding:10px;background-color:#f0f8ff;border-radius:4px;font-size:14px;color:#666;border-left:4px solid #1890ff}.mode-toggle[data-v-f06df04a]{display:flex;align-items:center;gap:10px}.mode-toggle span[data-v-f06df04a]{font-size:14px;color:#666}.toggle-buttons[data-v-f06df04a]{display:flex;border-radius:4px;overflow:hidden;border:1px solid #d9d9d9}.mode-btn[data-v-f06df04a]{padding:6px 16px;font-size:14px;cursor:pointer;background-color:#f5f5f5;transition:background-color .3s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mode-btn.active[data-v-f06df04a]{background-color:#1890ff;color:#fff}.mode-btn[data-v-f06df04a]:not(.active):hover{background-color:#e6f7ff}.demo-options[data-v-f06df04a]{display:flex;gap:10px;flex-wrap:wrap}.demo-btn[data-v-f06df04a]{padding:6px 16px;background-color:#722ed1;color:#fff;border-radius:4px;font-size:14px;cursor:pointer;transition:background-color .3s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.demo-btn.active[data-v-f06df04a],.demo-btn[data-v-f06df04a]:hover{background-color:#9254de}
1
+ .to_input_tips[data-v-1e8c4bc7]{display:table;background-color:rgba(0,0,0,.5);color:#fff;padding:10px;border-radius:4px;margin:0 auto;position:absolute;top:50px;left:0;right:0}.radio-group-container[data-v-b6864cf2]{display:table;padding:10px;border:1px solid #e0e0e0;border-radius:8px;background-color:#f9f9f9;box-shadow:0 2px 8px rgba(0,0,0,.1);position:relative}.header[data-v-b6864cf2]{display:none;position:absolute;right:-56px;top:0;height:100%;padding-right:20px}.radio-group-container:hover .header[data-v-b6864cf2]{display:table;opacity:.2}.radio-group-container .header[data-v-b6864cf2]:hover{display:table;opacity:1}.edit-btn[data-v-b6864cf2]{padding:6px;background-color:#1890ff;color:#fff;border-radius:4px;font-size:12px;display:inline-block;cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.edit-save-btn[data-v-b6864cf2]{background-color:#52c41a}.radio-grid[data-v-b6864cf2]{display:grid;grid-template-columns:repeat(5,100px);gap:5px;overflow-x:auto;padding-bottom:5px}.grid-item[data-v-b6864cf2]{width:100px;height:60px;border:2px solid #e0e0e0;border-radius:6px;background-color:#fff;transition:all .3s;display:flex;align-items:center;justify-content:center;box-sizing:border-box;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0}.grid-item.selected[data-v-b6864cf2]{border-color:#1890ff;background-color:#e6f7ff;cursor:default}.grid-item.editing-focus[data-v-b6864cf2]{border-color:#1890ff;box-shadow:0 0 0 2px rgba(24,144,255,.2);cursor:default}.grid-item.new-option[data-v-b6864cf2]{border-color:#faad14;border-style:dashed;background-color:#fff7e6;cursor:default}.grid-item.add-option[data-v-b6864cf2]{border-style:dashed;display:flex;align-items:center;justify-content:center;cursor:pointer}.radio-visual[data-v-b6864cf2]{display:none}.option-label[data-v-b6864cf2]{width:100%;text-align:center;font-size:14px;color:#333;padding:4px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edit-option[data-v-b6864cf2]{width:100%}.edit-input[data-v-b6864cf2]{width:100%;height:60px;border:1px solid #d9d9d9;border-radius:4px;border:none;font-size:14px;outline:none;transition:border-color .3s;box-sizing:border-box;background-color:transparent;cursor:text;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.edit-input[data-v-b6864cf2]:focus{border-color:#1890ff;white-space:normal;overflow:visible;text-overflow:clip}.new-input[data-v-b6864cf2]{border-color:#faad14}.save-btn[data-v-b6864cf2]{padding:2px;background-color:#52c41a;color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;display:inline-block;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;transition:background-color .3s;flex-shrink:0;user-select:none;position:absolute;top:0;right:0}.save-btn[data-v-b6864cf2]:hover{background-color:#73d13d}.save-btn-placeholder[data-v-b6864cf2]{width:46px;height:0;visibility:hidden;flex-shrink:0}.add-btn[data-v-b6864cf2]{width:34px;height:34px;border-radius:50%;background-color:#f0f0f0;border:2px dashed #d9d9d9;font-size:20px;color:#999;display:flex;align-items:center;justify-content:center;transition:all .3s;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:#e6f7ff;border-color:#1890ff;color:#1890ff}.confirm-modal[data-v-b6864cf2]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.confirm-content[data-v-b6864cf2]{background-color:#fff;padding:24px;border-radius:8px;min-width:300px;box-shadow:0 4px 12px rgba(0,0,0,.15)}.confirm-content h3[data-v-b6864cf2]{margin-top:0;margin-bottom:12px;color:#333;font-size:16px}.confirm-content p[data-v-b6864cf2]{margin-bottom:20px;color:#666;font-size:14px}.confirm-buttons[data-v-b6864cf2]{display:flex;justify-content:flex-end;gap:12px}.confirm-btn[data-v-b6864cf2]{padding:6px 16px;border-radius:4px;border:1px solid #d9d9d9;background-color:#fff;font-size:14px;display:inline-block;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color .3s}.cancel[data-v-b6864cf2]{background-color:#1890ff;color:#fff}.confirm-btn.cancel[data-v-b6864cf2]:hover{background-color:#3da1ff}.confirm-btn.confirm[data-v-b6864cf2]{background-color:#ff4d4f;color:#fff;border-color:#ff4d4f}.confirm-btn.confirm[data-v-b6864cf2]:hover{background-color:#ff7875;border-color:#ff7875}.demo-controls[data-v-b6864cf2]{margin-top:30px;padding-top:20px;border-top:1px solid #eee;display:flex;flex-direction:column;gap:15px}.demo-stats[data-v-b6864cf2]{padding:10px;background-color:#f0f8ff;border-radius:4px;font-size:14px;color:#666;border-left:4px solid #1890ff}.mode-toggle[data-v-b6864cf2]{display:flex;align-items:center;gap:10px}.mode-toggle span[data-v-b6864cf2]{font-size:14px;color:#666}.toggle-buttons[data-v-b6864cf2]{display:flex;border-radius:4px;overflow:hidden;border:1px solid #d9d9d9}.mode-btn[data-v-b6864cf2]{padding:6px 16px;font-size:14px;cursor:pointer;background-color:#f5f5f5;transition:background-color .3s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mode-btn.active[data-v-b6864cf2]{background-color:#1890ff;color:#fff}.mode-btn[data-v-b6864cf2]:not(.active):hover{background-color:#e6f7ff}.demo-options[data-v-b6864cf2]{display:flex;gap:10px;flex-wrap:wrap}.demo-btn[data-v-b6864cf2]{padding:6px 16px;background-color:#722ed1;color:#fff;border-radius:4px;font-size:14px;cursor:pointer;transition:background-color .3s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.demo-btn.active[data-v-b6864cf2],.demo-btn[data-v-b6864cf2]:hover{background-color:#9254de}
package/zi-ming-ui.umd.js CHANGED
@@ -131,9 +131,9 @@ if (typeof window !== 'undefined') {
131
131
 
132
132
  // EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
133
133
  var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(203);
134
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/package/horiz-radio-self-naming/index.vue?vue&type=template&id=f06df04a&scoped=true
134
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/package/horiz-radio-self-naming/index.vue?vue&type=template&id=b6864cf2&scoped=true
135
135
 
136
- const _withScopeId = n => ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.pushScopeId)("data-v-f06df04a"), n = n(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.popScopeId)(), n);
136
+ const _withScopeId = n => ((0,external_commonjs_vue_commonjs2_vue_root_Vue_.pushScopeId)("data-v-b6864cf2"), n = n(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.popScopeId)(), n);
137
137
  const _hoisted_1 = {
138
138
  class: "radio-group-container"
139
139
  };
@@ -302,7 +302,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
302
302
  onClick: _cache[16] || (_cache[16] = (...args) => $options.toggleOptionsCount && $options.toggleOptionsCount(...args))
303
303
  }, " 显示 " + (0,external_commonjs_vue_commonjs2_vue_root_Vue_.toDisplayString)($data.isFewOptions ? '12' : '3') + " 个选项 ", 3)])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)("", true)]);
304
304
  }
305
- ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue?vue&type=template&id=f06df04a&scoped=true
305
+ ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue?vue&type=template&id=b6864cf2&scoped=true
306
306
 
307
307
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/package/tips/index.vue?vue&type=template&id=1e8c4bc7&scoped=true
308
308
 
@@ -412,8 +412,12 @@ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tipsvue_type_sc
412
412
  methods: {
413
413
  getData(data) {
414
414
  this.list(data).then(res => {
415
- console.log('getData', res?.data?.rows);
416
- this.options = res?.data?.rows;
415
+ if (res && res.data && res.data.rows) {
416
+ console.log('getData', res.data.rows);
417
+ this.options = res.data.rows;
418
+ } else {
419
+ this.options = [];
420
+ }
417
421
  });
418
422
  },
419
423
  toggleOptionsCount() {
@@ -427,8 +431,10 @@ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tipsvue_type_sc
427
431
  },
428
432
  handleEditFocus(id) {
429
433
  this.editingFocusId = id;
434
+ let one = this.options.find(opt => opt.id === id);
435
+ let name = one ? one.name : null;
430
436
  // 存储原始值
431
- this.originalValues[id] = this.editValues[id] || this.options.find(opt => opt.id === id)?.name || '';
437
+ this.originalValues[id] = this.editValues[id] || name || '';
432
438
  },
433
439
  handleEditBlur(id, event) {
434
440
  // 延迟处理,避免与保存按钮点击冲突
@@ -451,7 +457,8 @@ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tipsvue_type_sc
451
457
  },
452
458
  handleSaveOption(id) {
453
459
  console.log(this.editValues, id);
454
- const newName = this.editValues[id]?.trim() || '';
460
+ let one = this.editValues[id] || '';
461
+ const newName = one.trim() || '';
455
462
  const originalOption = this.options.find(opt => opt.id === id);
456
463
  if (newName && originalOption && newName !== originalOption.name) {
457
464
  // 在实际应用中,这里应该更新数据
@@ -527,10 +534,10 @@ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tipsvue_type_sc
527
534
  });
528
535
  ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue?vue&type=script&lang=js
529
536
 
530
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/package/horiz-radio-self-naming/index.vue?vue&type=style&index=0&id=f06df04a&scoped=true&lang=css
537
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/package/horiz-radio-self-naming/index.vue?vue&type=style&index=0&id=b6864cf2&scoped=true&lang=css
531
538
  // extracted by mini-css-extract-plugin
532
539
 
533
- ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue?vue&type=style&index=0&id=f06df04a&scoped=true&lang=css
540
+ ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue?vue&type=style&index=0&id=b6864cf2&scoped=true&lang=css
534
541
 
535
542
  ;// CONCATENATED MODULE: ./src/package/horiz-radio-self-naming/index.vue
536
543
 
@@ -540,7 +547,7 @@ const __exports__ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tipsvue_type_sc
540
547
  ;
541
548
 
542
549
 
543
- const horiz_radio_self_naming_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(horiz_radio_self_namingvue_type_script_lang_js, [['render',render],['__scopeId',"data-v-f06df04a"]])
550
+ const horiz_radio_self_naming_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(horiz_radio_self_namingvue_type_script_lang_js, [['render',render],['__scopeId',"data-v-b6864cf2"]])
544
551
 
545
552
  /* harmony default export */ var horiz_radio_self_naming = (horiz_radio_self_naming_exports_);
546
553
  ;// CONCATENATED MODULE: ./src/package/public-js/letter.js
@@ -1 +1 @@
1
- {"version":3,"file":"zi-ming-ui.umd.js","mappings":"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","sources":["webpack://zi-ming-ui/webpack/universalModuleDefinition","webpack://zi-ming-ui/./node_modules/vue-loader/dist/exportHelper.js","webpack://zi-ming-ui/external umd {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://zi-ming-ui/webpack/bootstrap","webpack://zi-ming-ui/webpack/runtime/define property getters","webpack://zi-ming-ui/webpack/runtime/hasOwnProperty shorthand","webpack://zi-ming-ui/webpack/runtime/make namespace object","webpack://zi-ming-ui/webpack/runtime/publicPath","webpack://zi-ming-ui/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?317a","webpack://zi-ming-ui/./src/package/tips/index.vue","webpack://zi-ming-ui/./src/package/tips/index.vue?7c25","webpack://zi-ming-ui/./src/package/tips/index.vue?541f","webpack://zi-ming-ui/./src/package/tips/index.vue?52ce","webpack://zi-ming-ui/./src/package/tips/index.vue?eb0c","webpack://zi-ming-ui/./src/package/tips/index.vue?d7d6","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?816a","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?9fd1","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?c4fd","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?e969","webpack://zi-ming-ui/./src/package/public-js/letter.js","webpack://zi-ming-ui/./src/package/public-js/num.js","webpack://zi-ming-ui/./src/package/public-js/index.js","webpack://zi-ming-ui/./src/package/index.js","webpack://zi-ming-ui/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"zi-ming-ui\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"zi-ming-ui\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__203__) {\nreturn ","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__203__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","<template>\r\n <div class=\"radio-group-container\">\r\n <!-- 编辑/完成按钮 -->\r\n <div class=\"header\">\r\n <div v-if=\"!isEditMode\" class=\"edit-btn\" @click=\"isEditMode = true\">编辑</div>\r\n <div v-else class=\"edit-btn edit-save-btn\" @click=\"isEditMode = false\">完成</div>\r\n </div>\r\n\r\n <!-- 选项容器 - 使用网格布局,固定列宽 -->\r\n <div class=\"radio-grid\">\r\n <!-- 正常模式显示 -->\r\n <template v-if=\"!isEditMode\">\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { selected: modelValue === option.id }]\" @click=\"handleOptionSelect(option.id)\">\r\n <div class=\"radio-visual\"></div>\r\n <div class=\"option-label\">{{ option.name }}</div>\r\n </div>\r\n </template>\r\n\r\n <!-- 编辑模式显示 -->\r\n <template v-else>\r\n <!-- 现有选项 -->\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { 'editing-focus': editingFocusId === option.id }]\">\r\n <div class=\"edit-option\">\r\n <input type=\"text\" class=\"edit-input\" :value=\"option.name\" @focus=\"handleEditFocus(option.id)\"\r\n @blur=\"handleEditBlur(option.id, $event)\" @input=\"handleEditInput(option.id, $event)\"\r\n @keydown.enter=\"handleSaveOption(option.id, $event)\" spellcheck=\"false\" ref=\"editInputs\" />\r\n <div v-if=\"editingFocusId === option.id\" class=\"save-btn\" @click=\"handleSaveOption(option.id)\">\r\n 保存\r\n </div>\r\n <!-- <div v-else class=\"save-btn-placeholder\"></div> -->\r\n </div>\r\n </div>\r\n\r\n <!-- 新增选项(黄色边框) -->\r\n <div v-if=\"isAddingNew\" class=\"grid-item new-option\">\r\n <div class=\"edit-option new-option-input\">\r\n <input type=\"text\" class=\"edit-input new-input\" v-model.trim=\"newOptionText\" @focus=\"handleNewOptionFocus\"\r\n @blur=\"handleNewOptionBlur\" @keydown.enter=\"handleSaveNewOption\" placeholder=\"请输入新选项\" spellcheck=\"false\"\r\n ref=\"newOptionInput\" />\r\n <div class=\"save-btn\" @click=\"handleSaveNewOption\">保存</div>\r\n </div>\r\n </div>\r\n\r\n <!-- 添加按钮 -->\r\n <div v-if=\"!isAddingNew\" class=\"grid-item add-option\" @click=\"handleAddClick\">\r\n <div class=\"add-btn\">+</div>\r\n </div>\r\n </template>\r\n\r\n\r\n </div>\r\n \r\n <tips v-model=\"showInputTips\">\r\n 单击选项文字,进行输入,并编辑\r\n </tips>\r\n <!-- 放弃新增确认框 -->\r\n <div v-if=\"showDiscardConfirm\" class=\"confirm-modal\">\r\n <div class=\"confirm-content\">\r\n <h3>确认放弃</h3>\r\n <p>您未入内容,是否放弃新增选项?</p>\r\n <div class=\"confirm-buttons\">\r\n <div class=\"confirm-btn cancel\" @click=\"handleCancelDiscard\">继续输入</div>\r\n <div class=\"confirm-btn confirm\" @click=\"handleConfirmDiscard\">放弃新增</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <!-- 演示控制 -->\r\n <div class=\"demo-controls\" v-if=\"isDebug\" >\r\n <div class=\"demo-stats\">\r\n 当前选中: 选项{{ modelValue }} | 编辑聚焦: {{ editingFocusId ? '选项' + editingFocusId : '无' }} | 新增: {{ isAddingNew ?\r\n '是' :\r\n '否' }}\r\n </div>\r\n <div class=\"mode-toggle\">\r\n <span>当前模式:</span>\r\n <div class=\"toggle-buttons\">\r\n <div :class=\"['mode-btn', { active: !isEditMode }]\" @click=\"isEditMode = false\">\r\n 正常模式\r\n </div>\r\n <div :class=\"['mode-btn', { active: isEditMode }]\" @click=\"isEditMode = true\">\r\n 编辑模式\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"demo-options\">\r\n <div :class=\"['demo-btn', { active: editingFocusId !== null }]\"\r\n @click=\"editingFocusId = editingFocusId === 1 ? null : 1\">\r\n {{ editingFocusId === 1 ? '取消' : '设置' }}选项聚焦\r\n </div>\r\n <div :class=\"['demo-btn', { active: isAddingNew }]\" @click=\"isAddingNew = !isAddingNew\">\r\n {{ isAddingNew ? '隐藏' : '显示' }}新增选项\r\n </div>\r\n <div :class=\"['demo-btn', { active: showDiscardConfirm }]\" @click=\"showDiscardConfirm = !showDiscardConfirm\">\r\n {{ showDiscardConfirm ? '隐藏' : '显示' }}确认弹窗\r\n </div>\r\n <div :class=\"['demo-btn', { active: isFewOptions }]\" @click=\"toggleOptionsCount\">\r\n 显示 {{ isFewOptions ? '12' : '3' }} 个选项\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import tips from '../tips/index.vue'\r\nexport default {\r\n name: 'FixedWidthGridRadioGroup',\r\n props:{\r\n modelValue:[String,Number], \r\n list:[Function],\r\n add:[Function],\r\n update:[Function],\r\n },\r\n components:{\r\n tips\r\n },\r\n data() {\r\n return {\r\n isDebug:false,\r\n showInputTips:null,\r\n isEditMode: false,\r\n selectedOption: 1,\r\n editingFocusId: null,\r\n isAddingNew: false,\r\n showDiscardConfirm: false,\r\n newOptionText: '',\r\n isFewOptions: false,\r\n options:[],\r\n editValues: {}, // 用于存储编辑中的值\r\n originalValues: {}, // 用于存储编辑前的值\r\n \r\n };\r\n },\r\n \r\n mounted() {\r\n // 初始化编辑值 \r\n this.getData();\r\n },\r\n watch:{\r\n isEditMode(n,o){\r\n if(n){\r\n this.showInputTips = true; \r\n }\r\n },\r\n options(n,o){\r\n if(n){\r\n n.forEach(option => { \r\n this.originalValues[option.id] = option.name;\r\n });\r\n }else{\r\n this.editValues = []\r\n this.originalValues = []\r\n }\r\n }\r\n },\r\n methods: { \r\n getData(data){\r\n this.list(data).then(res=>{\r\n console.log('getData',res?.data?.rows)\r\n this.options = res?.data?.rows;\r\n })\r\n },\r\n\r\n toggleOptionsCount() {\r\n this.isFewOptions = !this.isFewOptions;\r\n },\r\n\r\n handleOptionSelect(id) {\r\n if (!this.isEditMode) { \r\n this.$emit('update:modelValue', id )\r\n this.$emit('change',this.options.find(it=>it.id == id))\r\n }\r\n },\r\n\r\n handleEditFocus(id) {\r\n this.editingFocusId = id;\r\n // 存储原始值\r\n this.originalValues[id] = this.editValues[id] || this.options.find(opt => opt.id === id)?.name || '';\r\n },\r\n\r\n handleEditBlur(id, event) {\r\n // 延迟处理,避免与保存按钮点击冲突\r\n setTimeout(() => {\r\n if (this.editingFocusId === id) {\r\n // 如果没有点击保存,恢复原始值\r\n if (this.editValues[id] !== this.originalValues[id]) {\r\n this.editValues[id] = this.originalValues[id];\r\n // 更新DOM\r\n if (event.target) {\r\n event.target.value = this.originalValues[id];\r\n }\r\n }\r\n this.editingFocusId = null;\r\n }\r\n }, 500);\r\n },\r\n\r\n handleEditInput(id, event) {\r\n this.editValues[id] = event.target.value.trim();\r\n },\r\n\r\n handleSaveOption(id) {\r\n console.log(this.editValues,id)\r\n const newName = this.editValues[id]?.trim() || '';\r\n const originalOption = this.options.find(opt => opt.id === id);\r\n\r\n if (newName && originalOption && newName !== originalOption.name) {\r\n // 在实际应用中,这里应该更新数据\r\n console.log(`保存选项 ${id}: ${newName}`);\r\n // 示例:更新选项名称\r\n originalOption.name = newName;\r\n this.originalValues[id] = newName;\r\n\r\n this.update({id,name:newName}).then(res=>{\r\n\r\n })\r\n\r\n }\r\n\r\n this.editingFocusId = null;\r\n },\r\n\r\n handleAddClick() {\r\n this.isAddingNew = true;\r\n this.newOptionText = '';\r\n\r\n // 聚焦到新输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleNewOptionFocus() {\r\n // 新增选项聚焦时不需要特殊处理\r\n },\r\n\r\n handleNewOptionBlur(event) {\r\n const text = this.newOptionText.trim();\r\n if (!text) {\r\n this.showDiscardConfirm = true;\r\n }\r\n },\r\n\r\n handleSaveNewOption() {\r\n const newName = this.newOptionText.trim(); \r\n if (newName) { \r\n this.$emit('toadd',newName) \r\n console.log(`添加新选项: ${newName}`); \r\n this.add({name:newName}).then(res=>{\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false; \r\n this.getData()\r\n }).catch(res=>{\r\n console.error('添加新选项 失败了')\r\n })\r\n }\r\n }, \r\n handleCancelDiscard() {\r\n this.showDiscardConfirm = false;\r\n\r\n // 重新聚焦到输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleConfirmDiscard() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n },\r\n\r\n cancelNewOption() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.radio-group-container {\r\n display: table;\r\n /* 稍微增加最大宽度以容纳固定宽度网格 */\r\n /* margin: 0 auto; */\r\n padding: 10px;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 8px;\r\n background-color: #f9f9f9;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n position: relative;\r\n}\r\n\r\n.header {\r\n display: none; \r\n position: absolute;\r\n right:-56px;\r\n top:0; \r\n height: 100%;\r\n padding-right: 20px;\r\n}\r\n\r\n.radio-group-container:hover .header {\r\n display: table; \r\n opacity: 0.2;\r\n}\r\n.radio-group-container .header:hover { \r\n display: table; \r\n opacity: 1;\r\n}\r\n\r\n.edit-btn {\r\n padding: 6px;\r\n background-color: #1890ff;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n display: inline-block;\r\n cursor: default;\r\n user-select: none;\r\n cursor: pointer;\r\n}\r\n\r\n.edit-save-btn{\r\n background-color: #52c41a;\r\n}\r\n\r\n\r\n/* 网格布局容器 - 固定列宽 */\r\n.radio-grid {\r\n display: grid;\r\n /* 每行5个元素,每个元素固定宽度为150px */\r\n grid-template-columns: repeat(5, 100px);\r\n gap: 5px;\r\n /* 元素之间的间距 */\r\n /* width: 100%; */\r\n /* 网格容器最小宽度为5 * 150px + 4 * 12px = 798px */\r\n /* min-width: 798px; */\r\n /* 如果容器宽度不够,允许水平滚动 */\r\n overflow-x: auto;\r\n padding-bottom: 5px;\r\n /* 为滚动条留出空间 */\r\n}\r\n\r\n/* 网格项 - 每个选项,固定宽度 */\r\n.grid-item {\r\n width: 100px;\r\n /* 固定宽度 */\r\n height: 60px;\r\n /* padding: 12px 8px; */\r\n border: 2px solid #e0e0e0;\r\n border-radius: 6px;\r\n background-color: white;\r\n transition: all 0.3s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n position: relative;\r\n cursor: pointer;\r\n user-select: none;\r\n /* 确保项目不会因为内容而改变宽度 */\r\n flex-shrink: 0; \r\n}\r\n\r\n.grid-item.selected {\r\n border-color: #1890ff;\r\n background-color: #e6f7ff;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.editing-focus {\r\n border-color: #1890ff;\r\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\r\n cursor: default;\r\n}\r\n\r\n.grid-item.new-option {\r\n border-color: #faad14;\r\n border-style: dashed;\r\n background-color: #fff7e6;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.add-option {\r\n border-style: dashed;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n}\r\n\r\n\r\n\r\n/* 单选按钮视觉样式 */\r\n.radio-visual {\r\n display: none;\r\n /* 在这个设计中我们不显示单选按钮的视觉标记 */\r\n}\r\n\r\n.option-label {\r\n width: 100%;\r\n text-align: center;\r\n font-size: 14px;\r\n color: #333;\r\n padding: 4px 0;\r\n /* 文本溢出时显示省略号 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n/* 编辑模式输入框样式 */\r\n.edit-option {\r\n width: 100%;\r\n /* display: flex;\r\n align-items: center;\r\n gap: 2px; */\r\n}\r\n\r\n.edit-input {\r\n width: 100%;\r\n height: 60px;\r\n /* flex: 1; */\r\n /* padding: 8px 12px; */\r\n border: 1px solid #d9d9d9;\r\n border-radius: 4px;\r\n border: none;\r\n font-size: 14px;\r\n outline: none;\r\n transition: border-color 0.3s;\r\n box-sizing: border-box;\r\n background-color: rgba(0, 0, 0, 0);\r\n cursor: text;\r\n /* 确保输入框不会超出容器 */\r\n /* max-width: 100px; */\r\n /* 根据150px宽度计算,减去内边距和按钮宽度 */\r\n /* 输入框文本溢出处理 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n text-align: center;\r\n}\r\n\r\n.edit-input:focus {\r\n border-color: #1890ff; \r\n white-space: normal;\r\n overflow: visible;\r\n text-overflow: clip;\r\n}\r\n\r\n.new-input {\r\n border-color: #faad14;\r\n}\r\n\r\n.save-btn {\r\n padding: 2px;\r\n background-color: #52c41a;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n white-space: nowrap;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n flex-shrink: 0;\r\n user-select: none;\r\n /* 防止按钮被压缩 */\r\n position: absolute;\r\n top:0;\r\n right:0; \r\n}\r\n\r\n.save-btn:hover {\r\n background-color: #73d13d;\r\n}\r\n\r\n.save-btn-placeholder {\r\n width: 46px;\r\n /* 与保存按钮相同的宽度,用于占位 */\r\n height: 0;\r\n visibility: hidden;\r\n flex-shrink: 0;\r\n}\r\n\r\n/* 添加按钮样式 */\r\n.add-btn {\r\n width: 34px;\r\n height: 34px;\r\n border-radius: 50%;\r\n background-color: #f0f0f0;\r\n border: 2px dashed #d9d9d9;\r\n font-size: 20px;\r\n color: #999;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.3s;\r\n cursor: pointer;\r\n user-select: none;\r\n}\r\n\r\n/* .grid-item.add-option:hover */\r\n .add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n.add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n/* 确认弹窗样式 */\r\n.confirm-modal {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000;\r\n}\r\n\r\n.confirm-content {\r\n background-color: white;\r\n padding: 24px;\r\n border-radius: 8px;\r\n min-width: 300px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.confirm-content h3 {\r\n margin-top: 0;\r\n margin-bottom: 12px;\r\n color: #333;\r\n font-size: 16px;\r\n}\r\n\r\n.confirm-content p {\r\n margin-bottom: 20px;\r\n color: #666;\r\n font-size: 14px;\r\n}\r\n\r\n.confirm-buttons {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 12px;\r\n}\r\n\r\n.confirm-btn {\r\n padding: 6px 16px;\r\n border-radius: 4px;\r\n border: 1px solid #d9d9d9;\r\n background-color: white;\r\n font-size: 14px;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n}\r\n.cancel{\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n.confirm-btn.cancel:hover {\r\n background-color: #3da1ff;\r\n}\r\n\r\n.confirm-btn.confirm {\r\n background-color: #ff4d4f;\r\n color: white;\r\n border-color: #ff4d4f;\r\n}\r\n\r\n.confirm-btn.confirm:hover {\r\n background-color: #ff7875;\r\n border-color: #ff7875;\r\n}\r\n\r\n/* 演示控制样式 */\r\n.demo-controls {\r\n margin-top: 30px;\r\n padding-top: 20px;\r\n border-top: 1px solid #eee;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 15px;\r\n}\r\n\r\n.demo-stats {\r\n padding: 10px;\r\n background-color: #f0f8ff;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n color: #666;\r\n border-left: 4px solid #1890ff;\r\n}\r\n\r\n.mode-toggle {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n\r\n.mode-toggle span {\r\n font-size: 14px;\r\n color: #666;\r\n}\r\n\r\n.toggle-buttons {\r\n display: flex;\r\n border-radius: 4px;\r\n overflow: hidden;\r\n border: 1px solid #d9d9d9;\r\n}\r\n\r\n.mode-btn {\r\n padding: 6px 16px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n background-color: #f5f5f5;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.mode-btn.active {\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n\r\n.mode-btn:not(.active):hover {\r\n background-color: #e6f7ff;\r\n}\r\n\r\n.demo-options {\r\n display: flex;\r\n gap: 10px;\r\n flex-wrap: wrap;\r\n}\r\n\r\n.demo-btn {\r\n padding: 6px 16px;\r\n background-color: #722ed1;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.demo-btn.active {\r\n background-color: #9254de;\r\n}\r\n\r\n.demo-btn:hover {\r\n background-color: #9254de;\r\n}\r\n\r\n\r\n\r\n \r\n</style>","export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=template&id=f06df04a&scoped=true\"","<template>\r\n <div class=\"to_input_tips\" v-show=\"modelValue\">\r\n <slot></slot>\r\n </div>\r\n</template>\r\n\r\n <script>\r\n export default {\r\n props:{\r\n modelValue:{\r\n type:Boolean,\r\n default: false,\r\n },\r\n delay:{\r\n type:Number,\r\n default: 2000,\r\n },\r\n }, \r\n watch:{\r\n modelValue(n,o){\r\n if(n){\r\n setTimeout(() => {\r\n this.$emit('update:modelValue',false);\r\n }, this.delay);\r\n }\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.to_input_tips {\r\n display: table;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n color: #fff;\r\n padding: 10px;\r\n border-radius: 4px;\r\n margin: 0 auto;\r\n position: absolute;\r\n top: 50px;\r\n left: 0;\r\n right: 0; \r\n}\r\n\r\n</style>","export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=template&id=1e8c4bc7&scoped=true\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=style&index=0&id=1e8c4bc7&scoped=true&lang=css\"","import { render } from \"./index.vue?vue&type=template&id=1e8c4bc7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1e8c4bc7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1e8c4bc7\"]])\n\nexport default __exports__","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=style&index=0&id=f06df04a&scoped=true&lang=css\"","import { render } from \"./index.vue?vue&type=template&id=f06df04a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f06df04a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f06df04a\"]])\n\nexport default __exports__","// package/public-js/letter.js\r\n// 处理首字母大小\r\nexport function handleFirstUpperCase(str) {\r\n return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase());\r\n}\r\n\r\n\r\nexport function handleDrawDownHump(str) {\r\n return str;\r\n}","// package/public-js/num.js\r\n// 四舍五入Math.round(number)\r\nexport function handleRoundOff(val) {\r\n return val && Math.round(val);\r\n}\r\n","// package/public-js/index.js\r\nimport { handleFirstUpperCase, } from \"./letter.js\";\r\nimport { handleRoundOff } from \"./num.js\";\r\nexport default { handleFirstUpperCase, handleDrawDownHump, handleRoundOff };\r\n","//package/index.js\r\nimport HorizRadioSelfNaming from \"../package/horiz-radio-self-naming/index.vue\"; // 引入封装好的组件\r\nimport publicjs from \"../package/public-js/index.js\"; // 引入封装好的方法\r\nconst coms = [HorizRadioSelfNaming]; // 将来如果有其它组件,都可以写到这个数组里\r\n\r\n// 批量组件注册\r\nconst install = function (Vue) {\r\n coms.forEach((com) => {\r\n Vue.component(com.name, com);\r\n });\r\n};\r\n\r\nexport default { install, publicjs }; // 这个方法以后再使用的时候可以被use调用\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["Object","defineProperty","exports","value","default","sfc","props","target","__vccOpts","key","val","class","_createElementVNode","_hoisted_12","_createElementBlock","_hoisted_1","_hoisted_2","$data","isEditMode","onClick","_cache","$event","_hoisted_3","_Fragment","_renderList","options","option","id","_normalizeClass","selected","$props","modelValue","$options","handleOptionSelect","_hoisted_5","_hoisted_6","_toDisplayString","name","editingFocusId","_hoisted_7","type","onFocus","handleEditFocus","onBlur","handleEditBlur","onInput","handleEditInput","onKeydown","_withKeys","handleSaveOption","spellcheck","ref","_hoisted_9","isAddingNew","_hoisted_10","_hoisted_11","newOptionText","args","handleNewOptionFocus","handleNewOptionBlur","handleSaveNewOption","placeholder","handleAddClick","_createVNode","_component_tips","showInputTips","showDiscardConfirm","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","handleCancelDiscard","handleConfirmDiscard","isDebug","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","active","_hoisted_24","isFewOptions","toggleOptionsCount","_renderSlot","_ctx","$slots","undefined","Boolean","delay","Number","watch","n","o","setTimeout","$emit","tips","String","list","Function","add","update","components","data","selectedOption","editValues","originalValues","mounted","getData","forEach","methods","then","res","console","log","rows","find","it","opt","event","trim","newName","originalOption","$nextTick","$refs","newOptionInput","focus","text","catch","error","cancelNewOption","handleFirstUpperCase","str","replace","L","toUpperCase","handleDrawDownHump","handleRoundOff","Math","round","HorizRadioSelfNaming","publicjs","coms","install","Vue","com","component"],"sourceRoot":""}
1
+ {"version":3,"file":"zi-ming-ui.umd.js","mappings":"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","sources":["webpack://zi-ming-ui/webpack/universalModuleDefinition","webpack://zi-ming-ui/./node_modules/vue-loader/dist/exportHelper.js","webpack://zi-ming-ui/external umd {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://zi-ming-ui/webpack/bootstrap","webpack://zi-ming-ui/webpack/runtime/define property getters","webpack://zi-ming-ui/webpack/runtime/hasOwnProperty shorthand","webpack://zi-ming-ui/webpack/runtime/make namespace object","webpack://zi-ming-ui/webpack/runtime/publicPath","webpack://zi-ming-ui/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?75ad","webpack://zi-ming-ui/./src/package/tips/index.vue","webpack://zi-ming-ui/./src/package/tips/index.vue?7c25","webpack://zi-ming-ui/./src/package/tips/index.vue?541f","webpack://zi-ming-ui/./src/package/tips/index.vue?52ce","webpack://zi-ming-ui/./src/package/tips/index.vue?eb0c","webpack://zi-ming-ui/./src/package/tips/index.vue?d7d6","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?816a","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?ac74","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?b9d0","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?e969","webpack://zi-ming-ui/./src/package/public-js/letter.js","webpack://zi-ming-ui/./src/package/public-js/num.js","webpack://zi-ming-ui/./src/package/public-js/index.js","webpack://zi-ming-ui/./src/package/index.js","webpack://zi-ming-ui/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"zi-ming-ui\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"zi-ming-ui\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__203__) {\nreturn ","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__203__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","<template>\r\n <div class=\"radio-group-container\">\r\n <!-- 编辑/完成按钮 -->\r\n <div class=\"header\">\r\n <div v-if=\"!isEditMode\" class=\"edit-btn\" @click=\"isEditMode = true\">编辑</div>\r\n <div v-else class=\"edit-btn edit-save-btn\" @click=\"isEditMode = false\">完成</div>\r\n </div>\r\n\r\n <!-- 选项容器 - 使用网格布局,固定列宽 -->\r\n <div class=\"radio-grid\">\r\n <!-- 正常模式显示 -->\r\n <template v-if=\"!isEditMode\">\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { selected: modelValue === option.id }]\" @click=\"handleOptionSelect(option.id)\">\r\n <div class=\"radio-visual\"></div>\r\n <div class=\"option-label\">{{ option.name }}</div>\r\n </div>\r\n </template>\r\n\r\n <!-- 编辑模式显示 -->\r\n <template v-else>\r\n <!-- 现有选项 -->\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { 'editing-focus': editingFocusId === option.id }]\">\r\n <div class=\"edit-option\">\r\n <input type=\"text\" class=\"edit-input\" :value=\"option.name\" @focus=\"handleEditFocus(option.id)\"\r\n @blur=\"handleEditBlur(option.id, $event)\" @input=\"handleEditInput(option.id, $event)\"\r\n @keydown.enter=\"handleSaveOption(option.id, $event)\" spellcheck=\"false\" ref=\"editInputs\" />\r\n <div v-if=\"editingFocusId === option.id\" class=\"save-btn\" @click=\"handleSaveOption(option.id)\">\r\n 保存\r\n </div>\r\n <!-- <div v-else class=\"save-btn-placeholder\"></div> -->\r\n </div>\r\n </div>\r\n\r\n <!-- 新增选项(黄色边框) -->\r\n <div v-if=\"isAddingNew\" class=\"grid-item new-option\">\r\n <div class=\"edit-option new-option-input\">\r\n <input type=\"text\" class=\"edit-input new-input\" v-model.trim=\"newOptionText\" @focus=\"handleNewOptionFocus\"\r\n @blur=\"handleNewOptionBlur\" @keydown.enter=\"handleSaveNewOption\" placeholder=\"请输入新选项\" spellcheck=\"false\"\r\n ref=\"newOptionInput\" />\r\n <div class=\"save-btn\" @click=\"handleSaveNewOption\">保存</div>\r\n </div>\r\n </div>\r\n\r\n <!-- 添加按钮 -->\r\n <div v-if=\"!isAddingNew\" class=\"grid-item add-option\" @click=\"handleAddClick\">\r\n <div class=\"add-btn\">+</div>\r\n </div>\r\n </template>\r\n\r\n\r\n </div>\r\n \r\n <tips v-model=\"showInputTips\">\r\n 单击选项文字,进行输入,并编辑\r\n </tips>\r\n <!-- 放弃新增确认框 -->\r\n <div v-if=\"showDiscardConfirm\" class=\"confirm-modal\">\r\n <div class=\"confirm-content\">\r\n <h3>确认放弃</h3>\r\n <p>您未入内容,是否放弃新增选项?</p>\r\n <div class=\"confirm-buttons\">\r\n <div class=\"confirm-btn cancel\" @click=\"handleCancelDiscard\">继续输入</div>\r\n <div class=\"confirm-btn confirm\" @click=\"handleConfirmDiscard\">放弃新增</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <!-- 演示控制 -->\r\n <div class=\"demo-controls\" v-if=\"isDebug\" >\r\n <div class=\"demo-stats\">\r\n 当前选中: 选项{{ modelValue }} | 编辑聚焦: {{ editingFocusId ? '选项' + editingFocusId : '无' }} | 新增: {{ isAddingNew ?\r\n '是' :\r\n '否' }}\r\n </div>\r\n <div class=\"mode-toggle\">\r\n <span>当前模式:</span>\r\n <div class=\"toggle-buttons\">\r\n <div :class=\"['mode-btn', { active: !isEditMode }]\" @click=\"isEditMode = false\">\r\n 正常模式\r\n </div>\r\n <div :class=\"['mode-btn', { active: isEditMode }]\" @click=\"isEditMode = true\">\r\n 编辑模式\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"demo-options\">\r\n <div :class=\"['demo-btn', { active: editingFocusId !== null }]\"\r\n @click=\"editingFocusId = editingFocusId === 1 ? null : 1\">\r\n {{ editingFocusId === 1 ? '取消' : '设置' }}选项聚焦\r\n </div>\r\n <div :class=\"['demo-btn', { active: isAddingNew }]\" @click=\"isAddingNew = !isAddingNew\">\r\n {{ isAddingNew ? '隐藏' : '显示' }}新增选项\r\n </div>\r\n <div :class=\"['demo-btn', { active: showDiscardConfirm }]\" @click=\"showDiscardConfirm = !showDiscardConfirm\">\r\n {{ showDiscardConfirm ? '隐藏' : '显示' }}确认弹窗\r\n </div>\r\n <div :class=\"['demo-btn', { active: isFewOptions }]\" @click=\"toggleOptionsCount\">\r\n 显示 {{ isFewOptions ? '12' : '3' }} 个选项\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import tips from '../tips/index.vue'\r\nexport default {\r\n name: 'FixedWidthGridRadioGroup',\r\n props:{\r\n modelValue:[String,Number], \r\n list:[Function],\r\n add:[Function],\r\n update:[Function],\r\n },\r\n components:{\r\n tips\r\n },\r\n data() {\r\n return {\r\n isDebug:false,\r\n showInputTips:null,\r\n isEditMode: false,\r\n selectedOption: 1,\r\n editingFocusId: null,\r\n isAddingNew: false,\r\n showDiscardConfirm: false,\r\n newOptionText: '',\r\n isFewOptions: false,\r\n options:[],\r\n editValues: {}, // 用于存储编辑中的值\r\n originalValues: {}, // 用于存储编辑前的值\r\n \r\n };\r\n },\r\n \r\n mounted() {\r\n // 初始化编辑值 \r\n this.getData();\r\n },\r\n watch:{\r\n isEditMode(n,o){\r\n if(n){\r\n this.showInputTips = true; \r\n }\r\n },\r\n options(n,o){\r\n if(n){\r\n n.forEach(option => { \r\n this.originalValues[option.id] = option.name;\r\n });\r\n }else{\r\n this.editValues = []\r\n this.originalValues = []\r\n }\r\n }\r\n },\r\n methods: { \r\n getData(data){\r\n this.list(data).then(res=>{\r\n if(res && res.data && res.data.rows){\r\n console.log('getData',res.data.rows)\r\n this.options = res.data.rows;\r\n }else{\r\n this.options = []\r\n }\r\n })\r\n },\r\n\r\n toggleOptionsCount() {\r\n this.isFewOptions = !this.isFewOptions;\r\n },\r\n\r\n handleOptionSelect(id) {\r\n if (!this.isEditMode) { \r\n this.$emit('update:modelValue', id )\r\n this.$emit('change',this.options.find(it=>it.id == id))\r\n }\r\n },\r\n\r\n handleEditFocus(id) {\r\n this.editingFocusId = id;\r\n let one = this.options.find(opt => opt.id === id);\r\n let name = one ? one.name :null;\r\n // 存储原始值\r\n this.originalValues[id] = this.editValues[id] || name || '';\r\n },\r\n\r\n handleEditBlur(id, event) {\r\n // 延迟处理,避免与保存按钮点击冲突\r\n setTimeout(() => {\r\n if (this.editingFocusId === id) {\r\n // 如果没有点击保存,恢复原始值\r\n if (this.editValues[id] !== this.originalValues[id]) {\r\n this.editValues[id] = this.originalValues[id];\r\n // 更新DOM\r\n if (event.target) {\r\n event.target.value = this.originalValues[id];\r\n }\r\n }\r\n this.editingFocusId = null;\r\n }\r\n }, 500);\r\n },\r\n\r\n handleEditInput(id, event) {\r\n this.editValues[id] = event.target.value.trim();\r\n },\r\n\r\n handleSaveOption(id) {\r\n console.log(this.editValues,id)\r\n let one = this.editValues[id] || '';\r\n const newName = one.trim() || '';\r\n const originalOption = this.options.find(opt => opt.id === id);\r\n\r\n if (newName && originalOption && newName !== originalOption.name) {\r\n // 在实际应用中,这里应该更新数据\r\n console.log(`保存选项 ${id}: ${newName}`);\r\n // 示例:更新选项名称\r\n originalOption.name = newName;\r\n this.originalValues[id] = newName;\r\n\r\n this.update({id,name:newName}).then(res=>{\r\n\r\n })\r\n\r\n }\r\n\r\n this.editingFocusId = null;\r\n },\r\n\r\n handleAddClick() {\r\n this.isAddingNew = true;\r\n this.newOptionText = '';\r\n\r\n // 聚焦到新输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleNewOptionFocus() {\r\n // 新增选项聚焦时不需要特殊处理\r\n },\r\n\r\n handleNewOptionBlur(event) {\r\n const text = this.newOptionText.trim();\r\n if (!text) {\r\n this.showDiscardConfirm = true;\r\n }\r\n },\r\n\r\n handleSaveNewOption() {\r\n const newName = this.newOptionText.trim(); \r\n if (newName) { \r\n this.$emit('toadd',newName) \r\n console.log(`添加新选项: ${newName}`); \r\n this.add({name:newName}).then(res=>{\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false; \r\n this.getData()\r\n }).catch(res=>{\r\n console.error('添加新选项 失败了')\r\n })\r\n }\r\n }, \r\n handleCancelDiscard() {\r\n this.showDiscardConfirm = false;\r\n\r\n // 重新聚焦到输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleConfirmDiscard() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n },\r\n\r\n cancelNewOption() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.radio-group-container {\r\n display: table;\r\n /* 稍微增加最大宽度以容纳固定宽度网格 */\r\n /* margin: 0 auto; */\r\n padding: 10px;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 8px;\r\n background-color: #f9f9f9;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n position: relative;\r\n}\r\n\r\n.header {\r\n display: none; \r\n position: absolute;\r\n right:-56px;\r\n top:0; \r\n height: 100%;\r\n padding-right: 20px;\r\n}\r\n\r\n.radio-group-container:hover .header {\r\n display: table; \r\n opacity: 0.2;\r\n}\r\n.radio-group-container .header:hover { \r\n display: table; \r\n opacity: 1;\r\n}\r\n\r\n.edit-btn {\r\n padding: 6px;\r\n background-color: #1890ff;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n display: inline-block;\r\n cursor: default;\r\n user-select: none;\r\n cursor: pointer;\r\n}\r\n\r\n.edit-save-btn{\r\n background-color: #52c41a;\r\n}\r\n\r\n\r\n/* 网格布局容器 - 固定列宽 */\r\n.radio-grid {\r\n display: grid;\r\n /* 每行5个元素,每个元素固定宽度为150px */\r\n grid-template-columns: repeat(5, 100px);\r\n gap: 5px;\r\n /* 元素之间的间距 */\r\n /* width: 100%; */\r\n /* 网格容器最小宽度为5 * 150px + 4 * 12px = 798px */\r\n /* min-width: 798px; */\r\n /* 如果容器宽度不够,允许水平滚动 */\r\n overflow-x: auto;\r\n padding-bottom: 5px;\r\n /* 为滚动条留出空间 */\r\n}\r\n\r\n/* 网格项 - 每个选项,固定宽度 */\r\n.grid-item {\r\n width: 100px;\r\n /* 固定宽度 */\r\n height: 60px;\r\n /* padding: 12px 8px; */\r\n border: 2px solid #e0e0e0;\r\n border-radius: 6px;\r\n background-color: white;\r\n transition: all 0.3s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n position: relative;\r\n cursor: pointer;\r\n user-select: none;\r\n /* 确保项目不会因为内容而改变宽度 */\r\n flex-shrink: 0; \r\n}\r\n\r\n.grid-item.selected {\r\n border-color: #1890ff;\r\n background-color: #e6f7ff;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.editing-focus {\r\n border-color: #1890ff;\r\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\r\n cursor: default;\r\n}\r\n\r\n.grid-item.new-option {\r\n border-color: #faad14;\r\n border-style: dashed;\r\n background-color: #fff7e6;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.add-option {\r\n border-style: dashed;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n}\r\n\r\n\r\n\r\n/* 单选按钮视觉样式 */\r\n.radio-visual {\r\n display: none;\r\n /* 在这个设计中我们不显示单选按钮的视觉标记 */\r\n}\r\n\r\n.option-label {\r\n width: 100%;\r\n text-align: center;\r\n font-size: 14px;\r\n color: #333;\r\n padding: 4px 0;\r\n /* 文本溢出时显示省略号 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n/* 编辑模式输入框样式 */\r\n.edit-option {\r\n width: 100%;\r\n /* display: flex;\r\n align-items: center;\r\n gap: 2px; */\r\n}\r\n\r\n.edit-input {\r\n width: 100%;\r\n height: 60px;\r\n /* flex: 1; */\r\n /* padding: 8px 12px; */\r\n border: 1px solid #d9d9d9;\r\n border-radius: 4px;\r\n border: none;\r\n font-size: 14px;\r\n outline: none;\r\n transition: border-color 0.3s;\r\n box-sizing: border-box;\r\n background-color: rgba(0, 0, 0, 0);\r\n cursor: text;\r\n /* 确保输入框不会超出容器 */\r\n /* max-width: 100px; */\r\n /* 根据150px宽度计算,减去内边距和按钮宽度 */\r\n /* 输入框文本溢出处理 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n text-align: center;\r\n}\r\n\r\n.edit-input:focus {\r\n border-color: #1890ff; \r\n white-space: normal;\r\n overflow: visible;\r\n text-overflow: clip;\r\n}\r\n\r\n.new-input {\r\n border-color: #faad14;\r\n}\r\n\r\n.save-btn {\r\n padding: 2px;\r\n background-color: #52c41a;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n white-space: nowrap;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n flex-shrink: 0;\r\n user-select: none;\r\n /* 防止按钮被压缩 */\r\n position: absolute;\r\n top:0;\r\n right:0; \r\n}\r\n\r\n.save-btn:hover {\r\n background-color: #73d13d;\r\n}\r\n\r\n.save-btn-placeholder {\r\n width: 46px;\r\n /* 与保存按钮相同的宽度,用于占位 */\r\n height: 0;\r\n visibility: hidden;\r\n flex-shrink: 0;\r\n}\r\n\r\n/* 添加按钮样式 */\r\n.add-btn {\r\n width: 34px;\r\n height: 34px;\r\n border-radius: 50%;\r\n background-color: #f0f0f0;\r\n border: 2px dashed #d9d9d9;\r\n font-size: 20px;\r\n color: #999;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.3s;\r\n cursor: pointer;\r\n user-select: none;\r\n}\r\n\r\n/* .grid-item.add-option:hover */\r\n .add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n.add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n/* 确认弹窗样式 */\r\n.confirm-modal {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000;\r\n}\r\n\r\n.confirm-content {\r\n background-color: white;\r\n padding: 24px;\r\n border-radius: 8px;\r\n min-width: 300px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.confirm-content h3 {\r\n margin-top: 0;\r\n margin-bottom: 12px;\r\n color: #333;\r\n font-size: 16px;\r\n}\r\n\r\n.confirm-content p {\r\n margin-bottom: 20px;\r\n color: #666;\r\n font-size: 14px;\r\n}\r\n\r\n.confirm-buttons {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 12px;\r\n}\r\n\r\n.confirm-btn {\r\n padding: 6px 16px;\r\n border-radius: 4px;\r\n border: 1px solid #d9d9d9;\r\n background-color: white;\r\n font-size: 14px;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n}\r\n.cancel{\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n.confirm-btn.cancel:hover {\r\n background-color: #3da1ff;\r\n}\r\n\r\n.confirm-btn.confirm {\r\n background-color: #ff4d4f;\r\n color: white;\r\n border-color: #ff4d4f;\r\n}\r\n\r\n.confirm-btn.confirm:hover {\r\n background-color: #ff7875;\r\n border-color: #ff7875;\r\n}\r\n\r\n/* 演示控制样式 */\r\n.demo-controls {\r\n margin-top: 30px;\r\n padding-top: 20px;\r\n border-top: 1px solid #eee;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 15px;\r\n}\r\n\r\n.demo-stats {\r\n padding: 10px;\r\n background-color: #f0f8ff;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n color: #666;\r\n border-left: 4px solid #1890ff;\r\n}\r\n\r\n.mode-toggle {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n\r\n.mode-toggle span {\r\n font-size: 14px;\r\n color: #666;\r\n}\r\n\r\n.toggle-buttons {\r\n display: flex;\r\n border-radius: 4px;\r\n overflow: hidden;\r\n border: 1px solid #d9d9d9;\r\n}\r\n\r\n.mode-btn {\r\n padding: 6px 16px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n background-color: #f5f5f5;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.mode-btn.active {\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n\r\n.mode-btn:not(.active):hover {\r\n background-color: #e6f7ff;\r\n}\r\n\r\n.demo-options {\r\n display: flex;\r\n gap: 10px;\r\n flex-wrap: wrap;\r\n}\r\n\r\n.demo-btn {\r\n padding: 6px 16px;\r\n background-color: #722ed1;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.demo-btn.active {\r\n background-color: #9254de;\r\n}\r\n\r\n.demo-btn:hover {\r\n background-color: #9254de;\r\n}\r\n\r\n\r\n\r\n \r\n</style>","export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=template&id=b6864cf2&scoped=true\"","<template>\r\n <div class=\"to_input_tips\" v-show=\"modelValue\">\r\n <slot></slot>\r\n </div>\r\n</template>\r\n\r\n <script>\r\n export default {\r\n props:{\r\n modelValue:{\r\n type:Boolean,\r\n default: false,\r\n },\r\n delay:{\r\n type:Number,\r\n default: 2000,\r\n },\r\n }, \r\n watch:{\r\n modelValue(n,o){\r\n if(n){\r\n setTimeout(() => {\r\n this.$emit('update:modelValue',false);\r\n }, this.delay);\r\n }\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.to_input_tips {\r\n display: table;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n color: #fff;\r\n padding: 10px;\r\n border-radius: 4px;\r\n margin: 0 auto;\r\n position: absolute;\r\n top: 50px;\r\n left: 0;\r\n right: 0; \r\n}\r\n\r\n</style>","export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=template&id=1e8c4bc7&scoped=true\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=style&index=0&id=1e8c4bc7&scoped=true&lang=css\"","import { render } from \"./index.vue?vue&type=template&id=1e8c4bc7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1e8c4bc7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1e8c4bc7\"]])\n\nexport default __exports__","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=script&lang=js\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./index.vue?vue&type=style&index=0&id=b6864cf2&scoped=true&lang=css\"","import { render } from \"./index.vue?vue&type=template&id=b6864cf2&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=b6864cf2&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b6864cf2\"]])\n\nexport default __exports__","// package/public-js/letter.js\r\n// 处理首字母大小\r\nexport function handleFirstUpperCase(str) {\r\n return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase());\r\n}\r\n\r\n\r\nexport function handleDrawDownHump(str) {\r\n return str;\r\n}","// package/public-js/num.js\r\n// 四舍五入Math.round(number)\r\nexport function handleRoundOff(val) {\r\n return val && Math.round(val);\r\n}\r\n","// package/public-js/index.js\r\nimport { handleFirstUpperCase, } from \"./letter.js\";\r\nimport { handleRoundOff } from \"./num.js\";\r\nexport default { handleFirstUpperCase, handleDrawDownHump, handleRoundOff };\r\n","//package/index.js\r\nimport HorizRadioSelfNaming from \"../package/horiz-radio-self-naming/index.vue\"; // 引入封装好的组件\r\nimport publicjs from \"../package/public-js/index.js\"; // 引入封装好的方法\r\nconst coms = [HorizRadioSelfNaming]; // 将来如果有其它组件,都可以写到这个数组里\r\n\r\n// 批量组件注册\r\nconst install = function (Vue) {\r\n coms.forEach((com) => {\r\n Vue.component(com.name, com);\r\n });\r\n};\r\n\r\nexport default { install, publicjs }; // 这个方法以后再使用的时候可以被use调用\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["Object","defineProperty","exports","value","default","sfc","props","target","__vccOpts","key","val","class","_createElementVNode","_hoisted_12","_createElementBlock","_hoisted_1","_hoisted_2","$data","isEditMode","onClick","_cache","$event","_hoisted_3","_Fragment","_renderList","options","option","id","_normalizeClass","selected","$props","modelValue","$options","handleOptionSelect","_hoisted_5","_hoisted_6","_toDisplayString","name","editingFocusId","_hoisted_7","type","onFocus","handleEditFocus","onBlur","handleEditBlur","onInput","handleEditInput","onKeydown","_withKeys","handleSaveOption","spellcheck","ref","_hoisted_9","isAddingNew","_hoisted_10","_hoisted_11","newOptionText","args","handleNewOptionFocus","handleNewOptionBlur","handleSaveNewOption","placeholder","handleAddClick","_createVNode","_component_tips","showInputTips","showDiscardConfirm","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","handleCancelDiscard","handleConfirmDiscard","isDebug","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","active","_hoisted_24","isFewOptions","toggleOptionsCount","_renderSlot","_ctx","$slots","undefined","Boolean","delay","Number","watch","n","o","setTimeout","$emit","tips","String","list","Function","add","update","components","data","selectedOption","editValues","originalValues","mounted","getData","forEach","methods","then","res","rows","console","log","find","it","one","opt","event","trim","newName","originalOption","$nextTick","$refs","newOptionInput","focus","text","catch","error","cancelNewOption","handleFirstUpperCase","str","replace","L","toUpperCase","handleDrawDownHump","handleRoundOff","Math","round","HorizRadioSelfNaming","publicjs","coms","install","Vue","com","component"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("vue")):"function"===typeof define&&define.amd?define([],t):"object"===typeof exports?exports["zi-ming-ui"]=t(require("vue")):e["zi-ming-ui"]=t(e["Vue"])})("undefined"!==typeof self?self:this,(function(e){return function(){"use strict";var t={82:function(e,t){t.Z=(e,t)=>{const i=e.__vccOpts||e;for(const[n,o]of t)i[n]=o;return i}},203:function(t){t.exports=e}},i={};function n(e){var o=i[e];if(void 0!==o)return o.exports;var s=i[e]={exports:{}};return t[e](s,s.exports,n),s.exports}!function(){n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){n.p=""}();var o={};return function(){if(n.r(o),n.d(o,{default:function(){return H}}),"undefined"!==typeof window){var e=window.document.currentScript,t=e&&e.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);t&&(n.p=t[1])}var i=n(203);const s=e=>((0,i.pushScopeId)("data-v-f06df04a"),e=e(),(0,i.popScopeId)(),e),d={class:"radio-group-container"},l={class:"header"},a={class:"radio-grid"},c=["onClick"],r=s((()=>(0,i.createElementVNode)("div",{class:"radio-visual"},null,-1))),u={class:"option-label"},p={class:"edit-option"},m=["value","onFocus","onBlur","onInput","onKeydown"],h=["onClick"],f={key:0,class:"grid-item new-option"},g={class:"edit-option new-option-input"},v=s((()=>(0,i.createElementVNode)("div",{class:"add-btn"},"+",-1))),w=[v],V={key:0,class:"confirm-modal"},k={class:"confirm-content"},E=s((()=>(0,i.createElementVNode)("h3",null,"确认放弃",-1))),N=s((()=>(0,i.createElementVNode)("p",null,"您未入内容,是否放弃新增选项?",-1))),C={class:"confirm-buttons"},O={key:1,class:"demo-controls"},y={class:"demo-stats"},B={class:"mode-toggle"},D=s((()=>(0,i.createElementVNode)("span",null,"当前模式:",-1))),b={class:"toggle-buttons"},F={class:"demo-options"};function I(e,t,n,o,s,v){const I=(0,i.resolveComponent)("tips");return(0,i.openBlock)(),(0,i.createElementBlock)("div",d,[(0,i.createElementVNode)("div",l,[s.isEditMode?((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:1,class:"edit-btn edit-save-btn",onClick:t[1]||(t[1]=e=>s.isEditMode=!1)},"完成")):((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:0,class:"edit-btn",onClick:t[0]||(t[0]=e=>s.isEditMode=!0)},"编辑"))]),(0,i.createElementVNode)("div",a,[s.isEditMode?((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:1},[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(s.options,(e=>((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:e.id,class:(0,i.normalizeClass)(["grid-item",{"editing-focus":s.editingFocusId===e.id}])},[(0,i.createElementVNode)("div",p,[(0,i.createElementVNode)("input",{type:"text",class:"edit-input",value:e.name,onFocus:t=>v.handleEditFocus(e.id),onBlur:t=>v.handleEditBlur(e.id,t),onInput:t=>v.handleEditInput(e.id,t),onKeydown:(0,i.withKeys)((t=>v.handleSaveOption(e.id,t)),["enter"]),spellcheck:"false",ref_for:!0,ref:"editInputs"},null,40,m),s.editingFocusId===e.id?((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:0,class:"save-btn",onClick:t=>v.handleSaveOption(e.id)}," 保存 ",8,h)):(0,i.createCommentVNode)("",!0)])],2)))),128)),s.isAddingNew?((0,i.openBlock)(),(0,i.createElementBlock)("div",f,[(0,i.createElementVNode)("div",g,[(0,i.withDirectives)((0,i.createElementVNode)("input",{type:"text",class:"edit-input new-input","onUpdate:modelValue":t[2]||(t[2]=e=>s.newOptionText=e),onFocus:t[3]||(t[3]=(...e)=>v.handleNewOptionFocus&&v.handleNewOptionFocus(...e)),onBlur:t[4]||(t[4]=(...e)=>v.handleNewOptionBlur&&v.handleNewOptionBlur(...e)),onKeydown:t[5]||(t[5]=(0,i.withKeys)(((...e)=>v.handleSaveNewOption&&v.handleSaveNewOption(...e)),["enter"])),placeholder:"请输入新选项",spellcheck:"false",ref:"newOptionInput"},null,544),[[i.vModelText,s.newOptionText,void 0,{trim:!0}]]),(0,i.createElementVNode)("div",{class:"save-btn",onClick:t[6]||(t[6]=(...e)=>v.handleSaveNewOption&&v.handleSaveNewOption(...e))},"保存")])])):(0,i.createCommentVNode)("",!0),s.isAddingNew?(0,i.createCommentVNode)("",!0):((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:1,class:"grid-item add-option",onClick:t[7]||(t[7]=(...e)=>v.handleAddClick&&v.handleAddClick(...e))},w))],64)):((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,{key:0},(0,i.renderList)(s.options,(e=>((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:e.id,class:(0,i.normalizeClass)(["grid-item",{selected:n.modelValue===e.id}]),onClick:t=>v.handleOptionSelect(e.id)},[r,(0,i.createElementVNode)("div",u,(0,i.toDisplayString)(e.name),1)],10,c)))),128))]),(0,i.createVNode)(I,{modelValue:s.showInputTips,"onUpdate:modelValue":t[8]||(t[8]=e=>s.showInputTips=e)},{default:(0,i.withCtx)((()=>[(0,i.createTextVNode)(" 单击选项文字,进行输入,并编辑 ")])),_:1},8,["modelValue"]),s.showDiscardConfirm?((0,i.openBlock)(),(0,i.createElementBlock)("div",V,[(0,i.createElementVNode)("div",k,[E,N,(0,i.createElementVNode)("div",C,[(0,i.createElementVNode)("div",{class:"confirm-btn cancel",onClick:t[9]||(t[9]=(...e)=>v.handleCancelDiscard&&v.handleCancelDiscard(...e))},"继续输入"),(0,i.createElementVNode)("div",{class:"confirm-btn confirm",onClick:t[10]||(t[10]=(...e)=>v.handleConfirmDiscard&&v.handleConfirmDiscard(...e))},"放弃新增")])])])):(0,i.createCommentVNode)("",!0),s.isDebug?((0,i.openBlock)(),(0,i.createElementBlock)("div",O,[(0,i.createElementVNode)("div",y," 当前选中: 选项"+(0,i.toDisplayString)(n.modelValue)+" | 编辑聚焦: "+(0,i.toDisplayString)(s.editingFocusId?"选项"+s.editingFocusId:"无")+" | 新增: "+(0,i.toDisplayString)(s.isAddingNew?"是":"否"),1),(0,i.createElementVNode)("div",B,[D,(0,i.createElementVNode)("div",b,[(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["mode-btn",{active:!s.isEditMode}]),onClick:t[11]||(t[11]=e=>s.isEditMode=!1)}," 正常模式 ",2),(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["mode-btn",{active:s.isEditMode}]),onClick:t[12]||(t[12]=e=>s.isEditMode=!0)}," 编辑模式 ",2)])]),(0,i.createElementVNode)("div",F,[(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["demo-btn",{active:null!==s.editingFocusId}]),onClick:t[13]||(t[13]=e=>s.editingFocusId=1===s.editingFocusId?null:1)},(0,i.toDisplayString)(1===s.editingFocusId?"取消":"设置")+"选项聚焦 ",3),(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["demo-btn",{active:s.isAddingNew}]),onClick:t[14]||(t[14]=e=>s.isAddingNew=!s.isAddingNew)},(0,i.toDisplayString)(s.isAddingNew?"隐藏":"显示")+"新增选项 ",3),(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["demo-btn",{active:s.showDiscardConfirm}]),onClick:t[15]||(t[15]=e=>s.showDiscardConfirm=!s.showDiscardConfirm)},(0,i.toDisplayString)(s.showDiscardConfirm?"隐藏":"显示")+"确认弹窗 ",3),(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["demo-btn",{active:s.isFewOptions}]),onClick:t[16]||(t[16]=(...e)=>v.toggleOptionsCount&&v.toggleOptionsCount(...e))}," 显示 "+(0,i.toDisplayString)(s.isFewOptions?"12":"3")+" 个选项 ",3)])])):(0,i.createCommentVNode)("",!0)])}const S={class:"to_input_tips"};function x(e,t,n,o,s,d){return(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)("div",S,[(0,i.renderSlot)(e.$slots,"default",{},void 0,!0)],512)),[[i.vShow,n.modelValue]])}var T={props:{modelValue:{type:Boolean,default:!1},delay:{type:Number,default:2e3}},watch:{modelValue(e,t){e&&setTimeout((()=>{this.$emit("update:modelValue",!1)}),this.delay)}}},A=n(82);const M=(0,A.Z)(T,[["render",x],["__scopeId","data-v-1e8c4bc7"]]);var $=M,_={name:"FixedWidthGridRadioGroup",props:{modelValue:[String,Number],list:[Function],add:[Function],update:[Function]},components:{tips:$},data(){return{isDebug:!1,showInputTips:null,isEditMode:!1,selectedOption:1,editingFocusId:null,isAddingNew:!1,showDiscardConfirm:!1,newOptionText:"",isFewOptions:!1,options:[],editValues:{},originalValues:{}}},mounted(){this.getData()},watch:{isEditMode(e,t){e&&(this.showInputTips=!0)},options(e,t){e?e.forEach((e=>{this.originalValues[e.id]=e.name})):(this.editValues=[],this.originalValues=[])}},methods:{getData(e){this.list(e).then((e=>{console.log("getData",e?.data?.rows),this.options=e?.data?.rows}))},toggleOptionsCount(){this.isFewOptions=!this.isFewOptions},handleOptionSelect(e){this.isEditMode||(this.$emit("update:modelValue",e),this.$emit("change",this.options.find((t=>t.id==e))))},handleEditFocus(e){this.editingFocusId=e,this.originalValues[e]=this.editValues[e]||this.options.find((t=>t.id===e))?.name||""},handleEditBlur(e,t){setTimeout((()=>{this.editingFocusId===e&&(this.editValues[e]!==this.originalValues[e]&&(this.editValues[e]=this.originalValues[e],t.target&&(t.target.value=this.originalValues[e])),this.editingFocusId=null)}),500)},handleEditInput(e,t){this.editValues[e]=t.target.value.trim()},handleSaveOption(e){console.log(this.editValues,e);const t=this.editValues[e]?.trim()||"",i=this.options.find((t=>t.id===e));t&&i&&t!==i.name&&(console.log(`保存选项 ${e}: ${t}`),i.name=t,this.originalValues[e]=t,this.update({id:e,name:t}).then((e=>{}))),this.editingFocusId=null},handleAddClick(){this.isAddingNew=!0,this.newOptionText="",this.$nextTick((()=>{this.$refs.newOptionInput&&this.$refs.newOptionInput.focus()}))},handleNewOptionFocus(){},handleNewOptionBlur(e){const t=this.newOptionText.trim();t||(this.showDiscardConfirm=!0)},handleSaveNewOption(){const e=this.newOptionText.trim();e&&(this.$emit("toadd",e),console.log(`添加新选项: ${e}`),this.add({name:e}).then((e=>{this.isAddingNew=!1,this.newOptionText="",this.showDiscardConfirm=!1,this.getData()})).catch((e=>{console.error("添加新选项 失败了")})))},handleCancelDiscard(){this.showDiscardConfirm=!1,this.$nextTick((()=>{this.$refs.newOptionInput&&this.$refs.newOptionInput.focus()}))},handleConfirmDiscard(){this.isAddingNew=!1,this.newOptionText="",this.showDiscardConfirm=!1},cancelNewOption(){this.isAddingNew=!1,this.newOptionText="",this.showDiscardConfirm=!1}}};const z=(0,A.Z)(_,[["render",I],["__scopeId","data-v-f06df04a"]]);var j=z;function K(e){return e.replace(/( |^)[a-z]/g,(e=>e.toUpperCase()))}function P(e){return e&&Math.round(e)}var U={handleFirstUpperCase:K,handleDrawDownHump:handleDrawDownHump,handleRoundOff:P};const Z=[j],q=function(e){Z.forEach((t=>{e.component(t.name,t)}))};var G={install:q,publicjs:U},H=G}(),o}()}));
1
+ (function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("vue")):"function"===typeof define&&define.amd?define([],t):"object"===typeof exports?exports["zi-ming-ui"]=t(require("vue")):e["zi-ming-ui"]=t(e["Vue"])})("undefined"!==typeof self?self:this,(function(e){return function(){"use strict";var t={82:function(e,t){t.Z=(e,t)=>{const i=e.__vccOpts||e;for(const[n,o]of t)i[n]=o;return i}},203:function(t){t.exports=e}},i={};function n(e){var o=i[e];if(void 0!==o)return o.exports;var s=i[e]={exports:{}};return t[e](s,s.exports,n),s.exports}!function(){n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){n.p=""}();var o={};return function(){if(n.r(o),n.d(o,{default:function(){return H}}),"undefined"!==typeof window){var e=window.document.currentScript,t=e&&e.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);t&&(n.p=t[1])}var i=n(203);const s=e=>((0,i.pushScopeId)("data-v-b6864cf2"),e=e(),(0,i.popScopeId)(),e),d={class:"radio-group-container"},l={class:"header"},a={class:"radio-grid"},c=["onClick"],r=s((()=>(0,i.createElementVNode)("div",{class:"radio-visual"},null,-1))),u={class:"option-label"},p={class:"edit-option"},m=["value","onFocus","onBlur","onInput","onKeydown"],h=["onClick"],f={key:0,class:"grid-item new-option"},g={class:"edit-option new-option-input"},w=s((()=>(0,i.createElementVNode)("div",{class:"add-btn"},"+",-1))),v=[w],V={key:0,class:"confirm-modal"},k={class:"confirm-content"},E=s((()=>(0,i.createElementVNode)("h3",null,"确认放弃",-1))),N=s((()=>(0,i.createElementVNode)("p",null,"您未入内容,是否放弃新增选项?",-1))),C={class:"confirm-buttons"},O={key:1,class:"demo-controls"},y={class:"demo-stats"},B={class:"mode-toggle"},D=s((()=>(0,i.createElementVNode)("span",null,"当前模式:",-1))),b={class:"toggle-buttons"},F={class:"demo-options"};function I(e,t,n,o,s,w){const I=(0,i.resolveComponent)("tips");return(0,i.openBlock)(),(0,i.createElementBlock)("div",d,[(0,i.createElementVNode)("div",l,[s.isEditMode?((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:1,class:"edit-btn edit-save-btn",onClick:t[1]||(t[1]=e=>s.isEditMode=!1)},"完成")):((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:0,class:"edit-btn",onClick:t[0]||(t[0]=e=>s.isEditMode=!0)},"编辑"))]),(0,i.createElementVNode)("div",a,[s.isEditMode?((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:1},[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(s.options,(e=>((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:e.id,class:(0,i.normalizeClass)(["grid-item",{"editing-focus":s.editingFocusId===e.id}])},[(0,i.createElementVNode)("div",p,[(0,i.createElementVNode)("input",{type:"text",class:"edit-input",value:e.name,onFocus:t=>w.handleEditFocus(e.id),onBlur:t=>w.handleEditBlur(e.id,t),onInput:t=>w.handleEditInput(e.id,t),onKeydown:(0,i.withKeys)((t=>w.handleSaveOption(e.id,t)),["enter"]),spellcheck:"false",ref_for:!0,ref:"editInputs"},null,40,m),s.editingFocusId===e.id?((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:0,class:"save-btn",onClick:t=>w.handleSaveOption(e.id)}," 保存 ",8,h)):(0,i.createCommentVNode)("",!0)])],2)))),128)),s.isAddingNew?((0,i.openBlock)(),(0,i.createElementBlock)("div",f,[(0,i.createElementVNode)("div",g,[(0,i.withDirectives)((0,i.createElementVNode)("input",{type:"text",class:"edit-input new-input","onUpdate:modelValue":t[2]||(t[2]=e=>s.newOptionText=e),onFocus:t[3]||(t[3]=(...e)=>w.handleNewOptionFocus&&w.handleNewOptionFocus(...e)),onBlur:t[4]||(t[4]=(...e)=>w.handleNewOptionBlur&&w.handleNewOptionBlur(...e)),onKeydown:t[5]||(t[5]=(0,i.withKeys)(((...e)=>w.handleSaveNewOption&&w.handleSaveNewOption(...e)),["enter"])),placeholder:"请输入新选项",spellcheck:"false",ref:"newOptionInput"},null,544),[[i.vModelText,s.newOptionText,void 0,{trim:!0}]]),(0,i.createElementVNode)("div",{class:"save-btn",onClick:t[6]||(t[6]=(...e)=>w.handleSaveNewOption&&w.handleSaveNewOption(...e))},"保存")])])):(0,i.createCommentVNode)("",!0),s.isAddingNew?(0,i.createCommentVNode)("",!0):((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:1,class:"grid-item add-option",onClick:t[7]||(t[7]=(...e)=>w.handleAddClick&&w.handleAddClick(...e))},v))],64)):((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,{key:0},(0,i.renderList)(s.options,(e=>((0,i.openBlock)(),(0,i.createElementBlock)("div",{key:e.id,class:(0,i.normalizeClass)(["grid-item",{selected:n.modelValue===e.id}]),onClick:t=>w.handleOptionSelect(e.id)},[r,(0,i.createElementVNode)("div",u,(0,i.toDisplayString)(e.name),1)],10,c)))),128))]),(0,i.createVNode)(I,{modelValue:s.showInputTips,"onUpdate:modelValue":t[8]||(t[8]=e=>s.showInputTips=e)},{default:(0,i.withCtx)((()=>[(0,i.createTextVNode)(" 单击选项文字,进行输入,并编辑 ")])),_:1},8,["modelValue"]),s.showDiscardConfirm?((0,i.openBlock)(),(0,i.createElementBlock)("div",V,[(0,i.createElementVNode)("div",k,[E,N,(0,i.createElementVNode)("div",C,[(0,i.createElementVNode)("div",{class:"confirm-btn cancel",onClick:t[9]||(t[9]=(...e)=>w.handleCancelDiscard&&w.handleCancelDiscard(...e))},"继续输入"),(0,i.createElementVNode)("div",{class:"confirm-btn confirm",onClick:t[10]||(t[10]=(...e)=>w.handleConfirmDiscard&&w.handleConfirmDiscard(...e))},"放弃新增")])])])):(0,i.createCommentVNode)("",!0),s.isDebug?((0,i.openBlock)(),(0,i.createElementBlock)("div",O,[(0,i.createElementVNode)("div",y," 当前选中: 选项"+(0,i.toDisplayString)(n.modelValue)+" | 编辑聚焦: "+(0,i.toDisplayString)(s.editingFocusId?"选项"+s.editingFocusId:"无")+" | 新增: "+(0,i.toDisplayString)(s.isAddingNew?"是":"否"),1),(0,i.createElementVNode)("div",B,[D,(0,i.createElementVNode)("div",b,[(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["mode-btn",{active:!s.isEditMode}]),onClick:t[11]||(t[11]=e=>s.isEditMode=!1)}," 正常模式 ",2),(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["mode-btn",{active:s.isEditMode}]),onClick:t[12]||(t[12]=e=>s.isEditMode=!0)}," 编辑模式 ",2)])]),(0,i.createElementVNode)("div",F,[(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["demo-btn",{active:null!==s.editingFocusId}]),onClick:t[13]||(t[13]=e=>s.editingFocusId=1===s.editingFocusId?null:1)},(0,i.toDisplayString)(1===s.editingFocusId?"取消":"设置")+"选项聚焦 ",3),(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["demo-btn",{active:s.isAddingNew}]),onClick:t[14]||(t[14]=e=>s.isAddingNew=!s.isAddingNew)},(0,i.toDisplayString)(s.isAddingNew?"隐藏":"显示")+"新增选项 ",3),(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["demo-btn",{active:s.showDiscardConfirm}]),onClick:t[15]||(t[15]=e=>s.showDiscardConfirm=!s.showDiscardConfirm)},(0,i.toDisplayString)(s.showDiscardConfirm?"隐藏":"显示")+"确认弹窗 ",3),(0,i.createElementVNode)("div",{class:(0,i.normalizeClass)(["demo-btn",{active:s.isFewOptions}]),onClick:t[16]||(t[16]=(...e)=>w.toggleOptionsCount&&w.toggleOptionsCount(...e))}," 显示 "+(0,i.toDisplayString)(s.isFewOptions?"12":"3")+" 个选项 ",3)])])):(0,i.createCommentVNode)("",!0)])}const S={class:"to_input_tips"};function x(e,t,n,o,s,d){return(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)("div",S,[(0,i.renderSlot)(e.$slots,"default",{},void 0,!0)],512)),[[i.vShow,n.modelValue]])}var T={props:{modelValue:{type:Boolean,default:!1},delay:{type:Number,default:2e3}},watch:{modelValue(e,t){e&&setTimeout((()=>{this.$emit("update:modelValue",!1)}),this.delay)}}},A=n(82);const M=(0,A.Z)(T,[["render",x],["__scopeId","data-v-1e8c4bc7"]]);var $=M,_={name:"FixedWidthGridRadioGroup",props:{modelValue:[String,Number],list:[Function],add:[Function],update:[Function]},components:{tips:$},data(){return{isDebug:!1,showInputTips:null,isEditMode:!1,selectedOption:1,editingFocusId:null,isAddingNew:!1,showDiscardConfirm:!1,newOptionText:"",isFewOptions:!1,options:[],editValues:{},originalValues:{}}},mounted(){this.getData()},watch:{isEditMode(e,t){e&&(this.showInputTips=!0)},options(e,t){e?e.forEach((e=>{this.originalValues[e.id]=e.name})):(this.editValues=[],this.originalValues=[])}},methods:{getData(e){this.list(e).then((e=>{e&&e.data&&e.data.rows?(console.log("getData",e.data.rows),this.options=e.data.rows):this.options=[]}))},toggleOptionsCount(){this.isFewOptions=!this.isFewOptions},handleOptionSelect(e){this.isEditMode||(this.$emit("update:modelValue",e),this.$emit("change",this.options.find((t=>t.id==e))))},handleEditFocus(e){this.editingFocusId=e;let t=this.options.find((t=>t.id===e)),i=t?t.name:null;this.originalValues[e]=this.editValues[e]||i||""},handleEditBlur(e,t){setTimeout((()=>{this.editingFocusId===e&&(this.editValues[e]!==this.originalValues[e]&&(this.editValues[e]=this.originalValues[e],t.target&&(t.target.value=this.originalValues[e])),this.editingFocusId=null)}),500)},handleEditInput(e,t){this.editValues[e]=t.target.value.trim()},handleSaveOption(e){console.log(this.editValues,e);let t=this.editValues[e]||"";const i=t.trim()||"",n=this.options.find((t=>t.id===e));i&&n&&i!==n.name&&(console.log(`保存选项 ${e}: ${i}`),n.name=i,this.originalValues[e]=i,this.update({id:e,name:i}).then((e=>{}))),this.editingFocusId=null},handleAddClick(){this.isAddingNew=!0,this.newOptionText="",this.$nextTick((()=>{this.$refs.newOptionInput&&this.$refs.newOptionInput.focus()}))},handleNewOptionFocus(){},handleNewOptionBlur(e){const t=this.newOptionText.trim();t||(this.showDiscardConfirm=!0)},handleSaveNewOption(){const e=this.newOptionText.trim();e&&(this.$emit("toadd",e),console.log(`添加新选项: ${e}`),this.add({name:e}).then((e=>{this.isAddingNew=!1,this.newOptionText="",this.showDiscardConfirm=!1,this.getData()})).catch((e=>{console.error("添加新选项 失败了")})))},handleCancelDiscard(){this.showDiscardConfirm=!1,this.$nextTick((()=>{this.$refs.newOptionInput&&this.$refs.newOptionInput.focus()}))},handleConfirmDiscard(){this.isAddingNew=!1,this.newOptionText="",this.showDiscardConfirm=!1},cancelNewOption(){this.isAddingNew=!1,this.newOptionText="",this.showDiscardConfirm=!1}}};const z=(0,A.Z)(_,[["render",I],["__scopeId","data-v-b6864cf2"]]);var j=z;function K(e){return e.replace(/( |^)[a-z]/g,(e=>e.toUpperCase()))}function P(e){return e&&Math.round(e)}var U={handleFirstUpperCase:K,handleDrawDownHump:handleDrawDownHump,handleRoundOff:P};const Z=[j],q=function(e){Z.forEach((t=>{e.component(t.name,t)}))};var G={install:q,publicjs:U},H=G}(),o}()}));
2
2
  //# sourceMappingURL=zi-ming-ui.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zi-ming-ui.umd.min.js","mappings":"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","sources":["webpack://zi-ming-ui/webpack/universalModuleDefinition","webpack://zi-ming-ui/./node_modules/vue-loader/dist/exportHelper.js","webpack://zi-ming-ui/external umd {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://zi-ming-ui/webpack/bootstrap","webpack://zi-ming-ui/webpack/runtime/define property getters","webpack://zi-ming-ui/webpack/runtime/hasOwnProperty shorthand","webpack://zi-ming-ui/webpack/runtime/make namespace object","webpack://zi-ming-ui/webpack/runtime/publicPath","webpack://zi-ming-ui/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue","webpack://zi-ming-ui/./src/package/tips/index.vue","webpack://zi-ming-ui/./src/package/tips/index.vue?d7d6","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?e969","webpack://zi-ming-ui/./src/package/public-js/letter.js","webpack://zi-ming-ui/./src/package/public-js/num.js","webpack://zi-ming-ui/./src/package/public-js/index.js","webpack://zi-ming-ui/./src/package/index.js","webpack://zi-ming-ui/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"zi-ming-ui\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"zi-ming-ui\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__203__) {\nreturn ","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__203__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","<template>\r\n <div class=\"radio-group-container\">\r\n <!-- 编辑/完成按钮 -->\r\n <div class=\"header\">\r\n <div v-if=\"!isEditMode\" class=\"edit-btn\" @click=\"isEditMode = true\">编辑</div>\r\n <div v-else class=\"edit-btn edit-save-btn\" @click=\"isEditMode = false\">完成</div>\r\n </div>\r\n\r\n <!-- 选项容器 - 使用网格布局,固定列宽 -->\r\n <div class=\"radio-grid\">\r\n <!-- 正常模式显示 -->\r\n <template v-if=\"!isEditMode\">\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { selected: modelValue === option.id }]\" @click=\"handleOptionSelect(option.id)\">\r\n <div class=\"radio-visual\"></div>\r\n <div class=\"option-label\">{{ option.name }}</div>\r\n </div>\r\n </template>\r\n\r\n <!-- 编辑模式显示 -->\r\n <template v-else>\r\n <!-- 现有选项 -->\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { 'editing-focus': editingFocusId === option.id }]\">\r\n <div class=\"edit-option\">\r\n <input type=\"text\" class=\"edit-input\" :value=\"option.name\" @focus=\"handleEditFocus(option.id)\"\r\n @blur=\"handleEditBlur(option.id, $event)\" @input=\"handleEditInput(option.id, $event)\"\r\n @keydown.enter=\"handleSaveOption(option.id, $event)\" spellcheck=\"false\" ref=\"editInputs\" />\r\n <div v-if=\"editingFocusId === option.id\" class=\"save-btn\" @click=\"handleSaveOption(option.id)\">\r\n 保存\r\n </div>\r\n <!-- <div v-else class=\"save-btn-placeholder\"></div> -->\r\n </div>\r\n </div>\r\n\r\n <!-- 新增选项(黄色边框) -->\r\n <div v-if=\"isAddingNew\" class=\"grid-item new-option\">\r\n <div class=\"edit-option new-option-input\">\r\n <input type=\"text\" class=\"edit-input new-input\" v-model.trim=\"newOptionText\" @focus=\"handleNewOptionFocus\"\r\n @blur=\"handleNewOptionBlur\" @keydown.enter=\"handleSaveNewOption\" placeholder=\"请输入新选项\" spellcheck=\"false\"\r\n ref=\"newOptionInput\" />\r\n <div class=\"save-btn\" @click=\"handleSaveNewOption\">保存</div>\r\n </div>\r\n </div>\r\n\r\n <!-- 添加按钮 -->\r\n <div v-if=\"!isAddingNew\" class=\"grid-item add-option\" @click=\"handleAddClick\">\r\n <div class=\"add-btn\">+</div>\r\n </div>\r\n </template>\r\n\r\n\r\n </div>\r\n \r\n <tips v-model=\"showInputTips\">\r\n 单击选项文字,进行输入,并编辑\r\n </tips>\r\n <!-- 放弃新增确认框 -->\r\n <div v-if=\"showDiscardConfirm\" class=\"confirm-modal\">\r\n <div class=\"confirm-content\">\r\n <h3>确认放弃</h3>\r\n <p>您未入内容,是否放弃新增选项?</p>\r\n <div class=\"confirm-buttons\">\r\n <div class=\"confirm-btn cancel\" @click=\"handleCancelDiscard\">继续输入</div>\r\n <div class=\"confirm-btn confirm\" @click=\"handleConfirmDiscard\">放弃新增</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <!-- 演示控制 -->\r\n <div class=\"demo-controls\" v-if=\"isDebug\" >\r\n <div class=\"demo-stats\">\r\n 当前选中: 选项{{ modelValue }} | 编辑聚焦: {{ editingFocusId ? '选项' + editingFocusId : '无' }} | 新增: {{ isAddingNew ?\r\n '是' :\r\n '否' }}\r\n </div>\r\n <div class=\"mode-toggle\">\r\n <span>当前模式:</span>\r\n <div class=\"toggle-buttons\">\r\n <div :class=\"['mode-btn', { active: !isEditMode }]\" @click=\"isEditMode = false\">\r\n 正常模式\r\n </div>\r\n <div :class=\"['mode-btn', { active: isEditMode }]\" @click=\"isEditMode = true\">\r\n 编辑模式\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"demo-options\">\r\n <div :class=\"['demo-btn', { active: editingFocusId !== null }]\"\r\n @click=\"editingFocusId = editingFocusId === 1 ? null : 1\">\r\n {{ editingFocusId === 1 ? '取消' : '设置' }}选项聚焦\r\n </div>\r\n <div :class=\"['demo-btn', { active: isAddingNew }]\" @click=\"isAddingNew = !isAddingNew\">\r\n {{ isAddingNew ? '隐藏' : '显示' }}新增选项\r\n </div>\r\n <div :class=\"['demo-btn', { active: showDiscardConfirm }]\" @click=\"showDiscardConfirm = !showDiscardConfirm\">\r\n {{ showDiscardConfirm ? '隐藏' : '显示' }}确认弹窗\r\n </div>\r\n <div :class=\"['demo-btn', { active: isFewOptions }]\" @click=\"toggleOptionsCount\">\r\n 显示 {{ isFewOptions ? '12' : '3' }} 个选项\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import tips from '../tips/index.vue'\r\nexport default {\r\n name: 'FixedWidthGridRadioGroup',\r\n props:{\r\n modelValue:[String,Number], \r\n list:[Function],\r\n add:[Function],\r\n update:[Function],\r\n },\r\n components:{\r\n tips\r\n },\r\n data() {\r\n return {\r\n isDebug:false,\r\n showInputTips:null,\r\n isEditMode: false,\r\n selectedOption: 1,\r\n editingFocusId: null,\r\n isAddingNew: false,\r\n showDiscardConfirm: false,\r\n newOptionText: '',\r\n isFewOptions: false,\r\n options:[],\r\n editValues: {}, // 用于存储编辑中的值\r\n originalValues: {}, // 用于存储编辑前的值\r\n \r\n };\r\n },\r\n \r\n mounted() {\r\n // 初始化编辑值 \r\n this.getData();\r\n },\r\n watch:{\r\n isEditMode(n,o){\r\n if(n){\r\n this.showInputTips = true; \r\n }\r\n },\r\n options(n,o){\r\n if(n){\r\n n.forEach(option => { \r\n this.originalValues[option.id] = option.name;\r\n });\r\n }else{\r\n this.editValues = []\r\n this.originalValues = []\r\n }\r\n }\r\n },\r\n methods: { \r\n getData(data){\r\n this.list(data).then(res=>{\r\n console.log('getData',res?.data?.rows)\r\n this.options = res?.data?.rows;\r\n })\r\n },\r\n\r\n toggleOptionsCount() {\r\n this.isFewOptions = !this.isFewOptions;\r\n },\r\n\r\n handleOptionSelect(id) {\r\n if (!this.isEditMode) { \r\n this.$emit('update:modelValue', id )\r\n this.$emit('change',this.options.find(it=>it.id == id))\r\n }\r\n },\r\n\r\n handleEditFocus(id) {\r\n this.editingFocusId = id;\r\n // 存储原始值\r\n this.originalValues[id] = this.editValues[id] || this.options.find(opt => opt.id === id)?.name || '';\r\n },\r\n\r\n handleEditBlur(id, event) {\r\n // 延迟处理,避免与保存按钮点击冲突\r\n setTimeout(() => {\r\n if (this.editingFocusId === id) {\r\n // 如果没有点击保存,恢复原始值\r\n if (this.editValues[id] !== this.originalValues[id]) {\r\n this.editValues[id] = this.originalValues[id];\r\n // 更新DOM\r\n if (event.target) {\r\n event.target.value = this.originalValues[id];\r\n }\r\n }\r\n this.editingFocusId = null;\r\n }\r\n }, 500);\r\n },\r\n\r\n handleEditInput(id, event) {\r\n this.editValues[id] = event.target.value.trim();\r\n },\r\n\r\n handleSaveOption(id) {\r\n console.log(this.editValues,id)\r\n const newName = this.editValues[id]?.trim() || '';\r\n const originalOption = this.options.find(opt => opt.id === id);\r\n\r\n if (newName && originalOption && newName !== originalOption.name) {\r\n // 在实际应用中,这里应该更新数据\r\n console.log(`保存选项 ${id}: ${newName}`);\r\n // 示例:更新选项名称\r\n originalOption.name = newName;\r\n this.originalValues[id] = newName;\r\n\r\n this.update({id,name:newName}).then(res=>{\r\n\r\n })\r\n\r\n }\r\n\r\n this.editingFocusId = null;\r\n },\r\n\r\n handleAddClick() {\r\n this.isAddingNew = true;\r\n this.newOptionText = '';\r\n\r\n // 聚焦到新输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleNewOptionFocus() {\r\n // 新增选项聚焦时不需要特殊处理\r\n },\r\n\r\n handleNewOptionBlur(event) {\r\n const text = this.newOptionText.trim();\r\n if (!text) {\r\n this.showDiscardConfirm = true;\r\n }\r\n },\r\n\r\n handleSaveNewOption() {\r\n const newName = this.newOptionText.trim(); \r\n if (newName) { \r\n this.$emit('toadd',newName) \r\n console.log(`添加新选项: ${newName}`); \r\n this.add({name:newName}).then(res=>{\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false; \r\n this.getData()\r\n }).catch(res=>{\r\n console.error('添加新选项 失败了')\r\n })\r\n }\r\n }, \r\n handleCancelDiscard() {\r\n this.showDiscardConfirm = false;\r\n\r\n // 重新聚焦到输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleConfirmDiscard() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n },\r\n\r\n cancelNewOption() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.radio-group-container {\r\n display: table;\r\n /* 稍微增加最大宽度以容纳固定宽度网格 */\r\n /* margin: 0 auto; */\r\n padding: 10px;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 8px;\r\n background-color: #f9f9f9;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n position: relative;\r\n}\r\n\r\n.header {\r\n display: none; \r\n position: absolute;\r\n right:-56px;\r\n top:0; \r\n height: 100%;\r\n padding-right: 20px;\r\n}\r\n\r\n.radio-group-container:hover .header {\r\n display: table; \r\n opacity: 0.2;\r\n}\r\n.radio-group-container .header:hover { \r\n display: table; \r\n opacity: 1;\r\n}\r\n\r\n.edit-btn {\r\n padding: 6px;\r\n background-color: #1890ff;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n display: inline-block;\r\n cursor: default;\r\n user-select: none;\r\n cursor: pointer;\r\n}\r\n\r\n.edit-save-btn{\r\n background-color: #52c41a;\r\n}\r\n\r\n\r\n/* 网格布局容器 - 固定列宽 */\r\n.radio-grid {\r\n display: grid;\r\n /* 每行5个元素,每个元素固定宽度为150px */\r\n grid-template-columns: repeat(5, 100px);\r\n gap: 5px;\r\n /* 元素之间的间距 */\r\n /* width: 100%; */\r\n /* 网格容器最小宽度为5 * 150px + 4 * 12px = 798px */\r\n /* min-width: 798px; */\r\n /* 如果容器宽度不够,允许水平滚动 */\r\n overflow-x: auto;\r\n padding-bottom: 5px;\r\n /* 为滚动条留出空间 */\r\n}\r\n\r\n/* 网格项 - 每个选项,固定宽度 */\r\n.grid-item {\r\n width: 100px;\r\n /* 固定宽度 */\r\n height: 60px;\r\n /* padding: 12px 8px; */\r\n border: 2px solid #e0e0e0;\r\n border-radius: 6px;\r\n background-color: white;\r\n transition: all 0.3s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n position: relative;\r\n cursor: pointer;\r\n user-select: none;\r\n /* 确保项目不会因为内容而改变宽度 */\r\n flex-shrink: 0; \r\n}\r\n\r\n.grid-item.selected {\r\n border-color: #1890ff;\r\n background-color: #e6f7ff;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.editing-focus {\r\n border-color: #1890ff;\r\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\r\n cursor: default;\r\n}\r\n\r\n.grid-item.new-option {\r\n border-color: #faad14;\r\n border-style: dashed;\r\n background-color: #fff7e6;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.add-option {\r\n border-style: dashed;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n}\r\n\r\n\r\n\r\n/* 单选按钮视觉样式 */\r\n.radio-visual {\r\n display: none;\r\n /* 在这个设计中我们不显示单选按钮的视觉标记 */\r\n}\r\n\r\n.option-label {\r\n width: 100%;\r\n text-align: center;\r\n font-size: 14px;\r\n color: #333;\r\n padding: 4px 0;\r\n /* 文本溢出时显示省略号 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n/* 编辑模式输入框样式 */\r\n.edit-option {\r\n width: 100%;\r\n /* display: flex;\r\n align-items: center;\r\n gap: 2px; */\r\n}\r\n\r\n.edit-input {\r\n width: 100%;\r\n height: 60px;\r\n /* flex: 1; */\r\n /* padding: 8px 12px; */\r\n border: 1px solid #d9d9d9;\r\n border-radius: 4px;\r\n border: none;\r\n font-size: 14px;\r\n outline: none;\r\n transition: border-color 0.3s;\r\n box-sizing: border-box;\r\n background-color: rgba(0, 0, 0, 0);\r\n cursor: text;\r\n /* 确保输入框不会超出容器 */\r\n /* max-width: 100px; */\r\n /* 根据150px宽度计算,减去内边距和按钮宽度 */\r\n /* 输入框文本溢出处理 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n text-align: center;\r\n}\r\n\r\n.edit-input:focus {\r\n border-color: #1890ff; \r\n white-space: normal;\r\n overflow: visible;\r\n text-overflow: clip;\r\n}\r\n\r\n.new-input {\r\n border-color: #faad14;\r\n}\r\n\r\n.save-btn {\r\n padding: 2px;\r\n background-color: #52c41a;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n white-space: nowrap;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n flex-shrink: 0;\r\n user-select: none;\r\n /* 防止按钮被压缩 */\r\n position: absolute;\r\n top:0;\r\n right:0; \r\n}\r\n\r\n.save-btn:hover {\r\n background-color: #73d13d;\r\n}\r\n\r\n.save-btn-placeholder {\r\n width: 46px;\r\n /* 与保存按钮相同的宽度,用于占位 */\r\n height: 0;\r\n visibility: hidden;\r\n flex-shrink: 0;\r\n}\r\n\r\n/* 添加按钮样式 */\r\n.add-btn {\r\n width: 34px;\r\n height: 34px;\r\n border-radius: 50%;\r\n background-color: #f0f0f0;\r\n border: 2px dashed #d9d9d9;\r\n font-size: 20px;\r\n color: #999;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.3s;\r\n cursor: pointer;\r\n user-select: none;\r\n}\r\n\r\n/* .grid-item.add-option:hover */\r\n .add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n.add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n/* 确认弹窗样式 */\r\n.confirm-modal {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000;\r\n}\r\n\r\n.confirm-content {\r\n background-color: white;\r\n padding: 24px;\r\n border-radius: 8px;\r\n min-width: 300px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.confirm-content h3 {\r\n margin-top: 0;\r\n margin-bottom: 12px;\r\n color: #333;\r\n font-size: 16px;\r\n}\r\n\r\n.confirm-content p {\r\n margin-bottom: 20px;\r\n color: #666;\r\n font-size: 14px;\r\n}\r\n\r\n.confirm-buttons {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 12px;\r\n}\r\n\r\n.confirm-btn {\r\n padding: 6px 16px;\r\n border-radius: 4px;\r\n border: 1px solid #d9d9d9;\r\n background-color: white;\r\n font-size: 14px;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n}\r\n.cancel{\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n.confirm-btn.cancel:hover {\r\n background-color: #3da1ff;\r\n}\r\n\r\n.confirm-btn.confirm {\r\n background-color: #ff4d4f;\r\n color: white;\r\n border-color: #ff4d4f;\r\n}\r\n\r\n.confirm-btn.confirm:hover {\r\n background-color: #ff7875;\r\n border-color: #ff7875;\r\n}\r\n\r\n/* 演示控制样式 */\r\n.demo-controls {\r\n margin-top: 30px;\r\n padding-top: 20px;\r\n border-top: 1px solid #eee;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 15px;\r\n}\r\n\r\n.demo-stats {\r\n padding: 10px;\r\n background-color: #f0f8ff;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n color: #666;\r\n border-left: 4px solid #1890ff;\r\n}\r\n\r\n.mode-toggle {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n\r\n.mode-toggle span {\r\n font-size: 14px;\r\n color: #666;\r\n}\r\n\r\n.toggle-buttons {\r\n display: flex;\r\n border-radius: 4px;\r\n overflow: hidden;\r\n border: 1px solid #d9d9d9;\r\n}\r\n\r\n.mode-btn {\r\n padding: 6px 16px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n background-color: #f5f5f5;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.mode-btn.active {\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n\r\n.mode-btn:not(.active):hover {\r\n background-color: #e6f7ff;\r\n}\r\n\r\n.demo-options {\r\n display: flex;\r\n gap: 10px;\r\n flex-wrap: wrap;\r\n}\r\n\r\n.demo-btn {\r\n padding: 6px 16px;\r\n background-color: #722ed1;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.demo-btn.active {\r\n background-color: #9254de;\r\n}\r\n\r\n.demo-btn:hover {\r\n background-color: #9254de;\r\n}\r\n\r\n\r\n\r\n \r\n</style>","<template>\r\n <div class=\"to_input_tips\" v-show=\"modelValue\">\r\n <slot></slot>\r\n </div>\r\n</template>\r\n\r\n <script>\r\n export default {\r\n props:{\r\n modelValue:{\r\n type:Boolean,\r\n default: false,\r\n },\r\n delay:{\r\n type:Number,\r\n default: 2000,\r\n },\r\n }, \r\n watch:{\r\n modelValue(n,o){\r\n if(n){\r\n setTimeout(() => {\r\n this.$emit('update:modelValue',false);\r\n }, this.delay);\r\n }\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.to_input_tips {\r\n display: table;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n color: #fff;\r\n padding: 10px;\r\n border-radius: 4px;\r\n margin: 0 auto;\r\n position: absolute;\r\n top: 50px;\r\n left: 0;\r\n right: 0; \r\n}\r\n\r\n</style>","import { render } from \"./index.vue?vue&type=template&id=1e8c4bc7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1e8c4bc7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1e8c4bc7\"]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=f06df04a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f06df04a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f06df04a\"]])\n\nexport default __exports__","// package/public-js/letter.js\r\n// 处理首字母大小\r\nexport function handleFirstUpperCase(str) {\r\n return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase());\r\n}\r\n\r\n\r\nexport function handleDrawDownHump(str) {\r\n return str;\r\n}","// package/public-js/num.js\r\n// 四舍五入Math.round(number)\r\nexport function handleRoundOff(val) {\r\n return val && Math.round(val);\r\n}\r\n","// package/public-js/index.js\r\nimport { handleFirstUpperCase, } from \"./letter.js\";\r\nimport { handleRoundOff } from \"./num.js\";\r\nexport default { handleFirstUpperCase, handleDrawDownHump, handleRoundOff };\r\n","//package/index.js\r\nimport HorizRadioSelfNaming from \"../package/horiz-radio-self-naming/index.vue\"; // 引入封装好的组件\r\nimport publicjs from \"../package/public-js/index.js\"; // 引入封装好的方法\r\nconst coms = [HorizRadioSelfNaming]; // 将来如果有其它组件,都可以写到这个数组里\r\n\r\n// 批量组件注册\r\nconst install = function (Vue) {\r\n coms.forEach((com) => {\r\n Vue.component(com.name, com);\r\n });\r\n};\r\n\r\nexport default { install, publicjs }; // 这个方法以后再使用的时候可以被use调用\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__203__","sfc","props","target","__vccOpts","key","val","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","p","window","currentScript","document","src","match","class","_createElementVNode","_hoisted_12","_createElementBlock","_hoisted_1","_hoisted_2","$data","isEditMode","onClick","_cache","$event","_hoisted_3","_Fragment","_renderList","options","option","id","_normalizeClass","editingFocusId","_hoisted_7","type","name","onFocus","$options","handleEditFocus","onBlur","handleEditBlur","onInput","handleEditInput","onKeydown","_withKeys","handleSaveOption","spellcheck","ref","_hoisted_9","isAddingNew","_hoisted_10","_hoisted_11","newOptionText","args","handleNewOptionFocus","handleNewOptionBlur","handleSaveNewOption","placeholder","handleAddClick","selected","$props","modelValue","handleOptionSelect","_hoisted_5","_hoisted_6","_toDisplayString","_createVNode","_component_tips","showInputTips","showDiscardConfirm","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","handleCancelDiscard","handleConfirmDiscard","isDebug","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","active","_hoisted_24","isFewOptions","toggleOptionsCount","_renderSlot","_ctx","$slots","Boolean","default","delay","Number","watch","n","setTimeout","$emit","__exports__","String","list","Function","add","update","components","tips","data","selectedOption","editValues","originalValues","mounted","getData","forEach","methods","then","res","console","log","rows","find","it","opt","event","trim","newName","originalOption","$nextTick","$refs","newOptionInput","focus","text","catch","error","cancelNewOption","render","handleFirstUpperCase","str","replace","L","toUpperCase","handleRoundOff","Math","round","handleDrawDownHump","coms","HorizRadioSelfNaming","install","Vue","com","component","publicjs"],"sourceRoot":""}
1
+ {"version":3,"file":"zi-ming-ui.umd.min.js","mappings":"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","sources":["webpack://zi-ming-ui/webpack/universalModuleDefinition","webpack://zi-ming-ui/./node_modules/vue-loader/dist/exportHelper.js","webpack://zi-ming-ui/external umd {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://zi-ming-ui/webpack/bootstrap","webpack://zi-ming-ui/webpack/runtime/define property getters","webpack://zi-ming-ui/webpack/runtime/hasOwnProperty shorthand","webpack://zi-ming-ui/webpack/runtime/make namespace object","webpack://zi-ming-ui/webpack/runtime/publicPath","webpack://zi-ming-ui/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue","webpack://zi-ming-ui/./src/package/tips/index.vue","webpack://zi-ming-ui/./src/package/tips/index.vue?d7d6","webpack://zi-ming-ui/./src/package/horiz-radio-self-naming/index.vue?e969","webpack://zi-ming-ui/./src/package/public-js/letter.js","webpack://zi-ming-ui/./src/package/public-js/num.js","webpack://zi-ming-ui/./src/package/public-js/index.js","webpack://zi-ming-ui/./src/package/index.js","webpack://zi-ming-ui/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"zi-ming-ui\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"zi-ming-ui\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__203__) {\nreturn ","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__203__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","<template>\r\n <div class=\"radio-group-container\">\r\n <!-- 编辑/完成按钮 -->\r\n <div class=\"header\">\r\n <div v-if=\"!isEditMode\" class=\"edit-btn\" @click=\"isEditMode = true\">编辑</div>\r\n <div v-else class=\"edit-btn edit-save-btn\" @click=\"isEditMode = false\">完成</div>\r\n </div>\r\n\r\n <!-- 选项容器 - 使用网格布局,固定列宽 -->\r\n <div class=\"radio-grid\">\r\n <!-- 正常模式显示 -->\r\n <template v-if=\"!isEditMode\">\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { selected: modelValue === option.id }]\" @click=\"handleOptionSelect(option.id)\">\r\n <div class=\"radio-visual\"></div>\r\n <div class=\"option-label\">{{ option.name }}</div>\r\n </div>\r\n </template>\r\n\r\n <!-- 编辑模式显示 -->\r\n <template v-else>\r\n <!-- 现有选项 -->\r\n <div v-for=\"option in options\" :key=\"option.id\"\r\n :class=\"['grid-item', { 'editing-focus': editingFocusId === option.id }]\">\r\n <div class=\"edit-option\">\r\n <input type=\"text\" class=\"edit-input\" :value=\"option.name\" @focus=\"handleEditFocus(option.id)\"\r\n @blur=\"handleEditBlur(option.id, $event)\" @input=\"handleEditInput(option.id, $event)\"\r\n @keydown.enter=\"handleSaveOption(option.id, $event)\" spellcheck=\"false\" ref=\"editInputs\" />\r\n <div v-if=\"editingFocusId === option.id\" class=\"save-btn\" @click=\"handleSaveOption(option.id)\">\r\n 保存\r\n </div>\r\n <!-- <div v-else class=\"save-btn-placeholder\"></div> -->\r\n </div>\r\n </div>\r\n\r\n <!-- 新增选项(黄色边框) -->\r\n <div v-if=\"isAddingNew\" class=\"grid-item new-option\">\r\n <div class=\"edit-option new-option-input\">\r\n <input type=\"text\" class=\"edit-input new-input\" v-model.trim=\"newOptionText\" @focus=\"handleNewOptionFocus\"\r\n @blur=\"handleNewOptionBlur\" @keydown.enter=\"handleSaveNewOption\" placeholder=\"请输入新选项\" spellcheck=\"false\"\r\n ref=\"newOptionInput\" />\r\n <div class=\"save-btn\" @click=\"handleSaveNewOption\">保存</div>\r\n </div>\r\n </div>\r\n\r\n <!-- 添加按钮 -->\r\n <div v-if=\"!isAddingNew\" class=\"grid-item add-option\" @click=\"handleAddClick\">\r\n <div class=\"add-btn\">+</div>\r\n </div>\r\n </template>\r\n\r\n\r\n </div>\r\n \r\n <tips v-model=\"showInputTips\">\r\n 单击选项文字,进行输入,并编辑\r\n </tips>\r\n <!-- 放弃新增确认框 -->\r\n <div v-if=\"showDiscardConfirm\" class=\"confirm-modal\">\r\n <div class=\"confirm-content\">\r\n <h3>确认放弃</h3>\r\n <p>您未入内容,是否放弃新增选项?</p>\r\n <div class=\"confirm-buttons\">\r\n <div class=\"confirm-btn cancel\" @click=\"handleCancelDiscard\">继续输入</div>\r\n <div class=\"confirm-btn confirm\" @click=\"handleConfirmDiscard\">放弃新增</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <!-- 演示控制 -->\r\n <div class=\"demo-controls\" v-if=\"isDebug\" >\r\n <div class=\"demo-stats\">\r\n 当前选中: 选项{{ modelValue }} | 编辑聚焦: {{ editingFocusId ? '选项' + editingFocusId : '无' }} | 新增: {{ isAddingNew ?\r\n '是' :\r\n '否' }}\r\n </div>\r\n <div class=\"mode-toggle\">\r\n <span>当前模式:</span>\r\n <div class=\"toggle-buttons\">\r\n <div :class=\"['mode-btn', { active: !isEditMode }]\" @click=\"isEditMode = false\">\r\n 正常模式\r\n </div>\r\n <div :class=\"['mode-btn', { active: isEditMode }]\" @click=\"isEditMode = true\">\r\n 编辑模式\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"demo-options\">\r\n <div :class=\"['demo-btn', { active: editingFocusId !== null }]\"\r\n @click=\"editingFocusId = editingFocusId === 1 ? null : 1\">\r\n {{ editingFocusId === 1 ? '取消' : '设置' }}选项聚焦\r\n </div>\r\n <div :class=\"['demo-btn', { active: isAddingNew }]\" @click=\"isAddingNew = !isAddingNew\">\r\n {{ isAddingNew ? '隐藏' : '显示' }}新增选项\r\n </div>\r\n <div :class=\"['demo-btn', { active: showDiscardConfirm }]\" @click=\"showDiscardConfirm = !showDiscardConfirm\">\r\n {{ showDiscardConfirm ? '隐藏' : '显示' }}确认弹窗\r\n </div>\r\n <div :class=\"['demo-btn', { active: isFewOptions }]\" @click=\"toggleOptionsCount\">\r\n 显示 {{ isFewOptions ? '12' : '3' }} 个选项\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import tips from '../tips/index.vue'\r\nexport default {\r\n name: 'FixedWidthGridRadioGroup',\r\n props:{\r\n modelValue:[String,Number], \r\n list:[Function],\r\n add:[Function],\r\n update:[Function],\r\n },\r\n components:{\r\n tips\r\n },\r\n data() {\r\n return {\r\n isDebug:false,\r\n showInputTips:null,\r\n isEditMode: false,\r\n selectedOption: 1,\r\n editingFocusId: null,\r\n isAddingNew: false,\r\n showDiscardConfirm: false,\r\n newOptionText: '',\r\n isFewOptions: false,\r\n options:[],\r\n editValues: {}, // 用于存储编辑中的值\r\n originalValues: {}, // 用于存储编辑前的值\r\n \r\n };\r\n },\r\n \r\n mounted() {\r\n // 初始化编辑值 \r\n this.getData();\r\n },\r\n watch:{\r\n isEditMode(n,o){\r\n if(n){\r\n this.showInputTips = true; \r\n }\r\n },\r\n options(n,o){\r\n if(n){\r\n n.forEach(option => { \r\n this.originalValues[option.id] = option.name;\r\n });\r\n }else{\r\n this.editValues = []\r\n this.originalValues = []\r\n }\r\n }\r\n },\r\n methods: { \r\n getData(data){\r\n this.list(data).then(res=>{\r\n if(res && res.data && res.data.rows){\r\n console.log('getData',res.data.rows)\r\n this.options = res.data.rows;\r\n }else{\r\n this.options = []\r\n }\r\n })\r\n },\r\n\r\n toggleOptionsCount() {\r\n this.isFewOptions = !this.isFewOptions;\r\n },\r\n\r\n handleOptionSelect(id) {\r\n if (!this.isEditMode) { \r\n this.$emit('update:modelValue', id )\r\n this.$emit('change',this.options.find(it=>it.id == id))\r\n }\r\n },\r\n\r\n handleEditFocus(id) {\r\n this.editingFocusId = id;\r\n let one = this.options.find(opt => opt.id === id);\r\n let name = one ? one.name :null;\r\n // 存储原始值\r\n this.originalValues[id] = this.editValues[id] || name || '';\r\n },\r\n\r\n handleEditBlur(id, event) {\r\n // 延迟处理,避免与保存按钮点击冲突\r\n setTimeout(() => {\r\n if (this.editingFocusId === id) {\r\n // 如果没有点击保存,恢复原始值\r\n if (this.editValues[id] !== this.originalValues[id]) {\r\n this.editValues[id] = this.originalValues[id];\r\n // 更新DOM\r\n if (event.target) {\r\n event.target.value = this.originalValues[id];\r\n }\r\n }\r\n this.editingFocusId = null;\r\n }\r\n }, 500);\r\n },\r\n\r\n handleEditInput(id, event) {\r\n this.editValues[id] = event.target.value.trim();\r\n },\r\n\r\n handleSaveOption(id) {\r\n console.log(this.editValues,id)\r\n let one = this.editValues[id] || '';\r\n const newName = one.trim() || '';\r\n const originalOption = this.options.find(opt => opt.id === id);\r\n\r\n if (newName && originalOption && newName !== originalOption.name) {\r\n // 在实际应用中,这里应该更新数据\r\n console.log(`保存选项 ${id}: ${newName}`);\r\n // 示例:更新选项名称\r\n originalOption.name = newName;\r\n this.originalValues[id] = newName;\r\n\r\n this.update({id,name:newName}).then(res=>{\r\n\r\n })\r\n\r\n }\r\n\r\n this.editingFocusId = null;\r\n },\r\n\r\n handleAddClick() {\r\n this.isAddingNew = true;\r\n this.newOptionText = '';\r\n\r\n // 聚焦到新输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleNewOptionFocus() {\r\n // 新增选项聚焦时不需要特殊处理\r\n },\r\n\r\n handleNewOptionBlur(event) {\r\n const text = this.newOptionText.trim();\r\n if (!text) {\r\n this.showDiscardConfirm = true;\r\n }\r\n },\r\n\r\n handleSaveNewOption() {\r\n const newName = this.newOptionText.trim(); \r\n if (newName) { \r\n this.$emit('toadd',newName) \r\n console.log(`添加新选项: ${newName}`); \r\n this.add({name:newName}).then(res=>{\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false; \r\n this.getData()\r\n }).catch(res=>{\r\n console.error('添加新选项 失败了')\r\n })\r\n }\r\n }, \r\n handleCancelDiscard() {\r\n this.showDiscardConfirm = false;\r\n\r\n // 重新聚焦到输入框\r\n this.$nextTick(() => {\r\n if (this.$refs.newOptionInput) {\r\n this.$refs.newOptionInput.focus();\r\n }\r\n });\r\n },\r\n\r\n handleConfirmDiscard() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n },\r\n\r\n cancelNewOption() {\r\n this.isAddingNew = false;\r\n this.newOptionText = '';\r\n this.showDiscardConfirm = false;\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.radio-group-container {\r\n display: table;\r\n /* 稍微增加最大宽度以容纳固定宽度网格 */\r\n /* margin: 0 auto; */\r\n padding: 10px;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 8px;\r\n background-color: #f9f9f9;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n position: relative;\r\n}\r\n\r\n.header {\r\n display: none; \r\n position: absolute;\r\n right:-56px;\r\n top:0; \r\n height: 100%;\r\n padding-right: 20px;\r\n}\r\n\r\n.radio-group-container:hover .header {\r\n display: table; \r\n opacity: 0.2;\r\n}\r\n.radio-group-container .header:hover { \r\n display: table; \r\n opacity: 1;\r\n}\r\n\r\n.edit-btn {\r\n padding: 6px;\r\n background-color: #1890ff;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n display: inline-block;\r\n cursor: default;\r\n user-select: none;\r\n cursor: pointer;\r\n}\r\n\r\n.edit-save-btn{\r\n background-color: #52c41a;\r\n}\r\n\r\n\r\n/* 网格布局容器 - 固定列宽 */\r\n.radio-grid {\r\n display: grid;\r\n /* 每行5个元素,每个元素固定宽度为150px */\r\n grid-template-columns: repeat(5, 100px);\r\n gap: 5px;\r\n /* 元素之间的间距 */\r\n /* width: 100%; */\r\n /* 网格容器最小宽度为5 * 150px + 4 * 12px = 798px */\r\n /* min-width: 798px; */\r\n /* 如果容器宽度不够,允许水平滚动 */\r\n overflow-x: auto;\r\n padding-bottom: 5px;\r\n /* 为滚动条留出空间 */\r\n}\r\n\r\n/* 网格项 - 每个选项,固定宽度 */\r\n.grid-item {\r\n width: 100px;\r\n /* 固定宽度 */\r\n height: 60px;\r\n /* padding: 12px 8px; */\r\n border: 2px solid #e0e0e0;\r\n border-radius: 6px;\r\n background-color: white;\r\n transition: all 0.3s;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n position: relative;\r\n cursor: pointer;\r\n user-select: none;\r\n /* 确保项目不会因为内容而改变宽度 */\r\n flex-shrink: 0; \r\n}\r\n\r\n.grid-item.selected {\r\n border-color: #1890ff;\r\n background-color: #e6f7ff;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.editing-focus {\r\n border-color: #1890ff;\r\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\r\n cursor: default;\r\n}\r\n\r\n.grid-item.new-option {\r\n border-color: #faad14;\r\n border-style: dashed;\r\n background-color: #fff7e6;\r\n cursor: default;\r\n}\r\n\r\n.grid-item.add-option {\r\n border-style: dashed;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n}\r\n\r\n\r\n\r\n/* 单选按钮视觉样式 */\r\n.radio-visual {\r\n display: none;\r\n /* 在这个设计中我们不显示单选按钮的视觉标记 */\r\n}\r\n\r\n.option-label {\r\n width: 100%;\r\n text-align: center;\r\n font-size: 14px;\r\n color: #333;\r\n padding: 4px 0;\r\n /* 文本溢出时显示省略号 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n/* 编辑模式输入框样式 */\r\n.edit-option {\r\n width: 100%;\r\n /* display: flex;\r\n align-items: center;\r\n gap: 2px; */\r\n}\r\n\r\n.edit-input {\r\n width: 100%;\r\n height: 60px;\r\n /* flex: 1; */\r\n /* padding: 8px 12px; */\r\n border: 1px solid #d9d9d9;\r\n border-radius: 4px;\r\n border: none;\r\n font-size: 14px;\r\n outline: none;\r\n transition: border-color 0.3s;\r\n box-sizing: border-box;\r\n background-color: rgba(0, 0, 0, 0);\r\n cursor: text;\r\n /* 确保输入框不会超出容器 */\r\n /* max-width: 100px; */\r\n /* 根据150px宽度计算,减去内边距和按钮宽度 */\r\n /* 输入框文本溢出处理 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n text-align: center;\r\n}\r\n\r\n.edit-input:focus {\r\n border-color: #1890ff; \r\n white-space: normal;\r\n overflow: visible;\r\n text-overflow: clip;\r\n}\r\n\r\n.new-input {\r\n border-color: #faad14;\r\n}\r\n\r\n.save-btn {\r\n padding: 2px;\r\n background-color: #52c41a;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 12px;\r\n white-space: nowrap;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n flex-shrink: 0;\r\n user-select: none;\r\n /* 防止按钮被压缩 */\r\n position: absolute;\r\n top:0;\r\n right:0; \r\n}\r\n\r\n.save-btn:hover {\r\n background-color: #73d13d;\r\n}\r\n\r\n.save-btn-placeholder {\r\n width: 46px;\r\n /* 与保存按钮相同的宽度,用于占位 */\r\n height: 0;\r\n visibility: hidden;\r\n flex-shrink: 0;\r\n}\r\n\r\n/* 添加按钮样式 */\r\n.add-btn {\r\n width: 34px;\r\n height: 34px;\r\n border-radius: 50%;\r\n background-color: #f0f0f0;\r\n border: 2px dashed #d9d9d9;\r\n font-size: 20px;\r\n color: #999;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.3s;\r\n cursor: pointer;\r\n user-select: none;\r\n}\r\n\r\n/* .grid-item.add-option:hover */\r\n .add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n.add-btn {\r\n background-color: #e6f7ff;\r\n border-color: #1890ff;\r\n color: #1890ff;\r\n}\r\n\r\n/* 确认弹窗样式 */\r\n.confirm-modal {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000;\r\n}\r\n\r\n.confirm-content {\r\n background-color: white;\r\n padding: 24px;\r\n border-radius: 8px;\r\n min-width: 300px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.confirm-content h3 {\r\n margin-top: 0;\r\n margin-bottom: 12px;\r\n color: #333;\r\n font-size: 16px;\r\n}\r\n\r\n.confirm-content p {\r\n margin-bottom: 20px;\r\n color: #666;\r\n font-size: 14px;\r\n}\r\n\r\n.confirm-buttons {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 12px;\r\n}\r\n\r\n.confirm-btn {\r\n padding: 6px 16px;\r\n border-radius: 4px;\r\n border: 1px solid #d9d9d9;\r\n background-color: white;\r\n font-size: 14px;\r\n display: inline-block;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background-color 0.3s;\r\n}\r\n.cancel{\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n.confirm-btn.cancel:hover {\r\n background-color: #3da1ff;\r\n}\r\n\r\n.confirm-btn.confirm {\r\n background-color: #ff4d4f;\r\n color: white;\r\n border-color: #ff4d4f;\r\n}\r\n\r\n.confirm-btn.confirm:hover {\r\n background-color: #ff7875;\r\n border-color: #ff7875;\r\n}\r\n\r\n/* 演示控制样式 */\r\n.demo-controls {\r\n margin-top: 30px;\r\n padding-top: 20px;\r\n border-top: 1px solid #eee;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 15px;\r\n}\r\n\r\n.demo-stats {\r\n padding: 10px;\r\n background-color: #f0f8ff;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n color: #666;\r\n border-left: 4px solid #1890ff;\r\n}\r\n\r\n.mode-toggle {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n\r\n.mode-toggle span {\r\n font-size: 14px;\r\n color: #666;\r\n}\r\n\r\n.toggle-buttons {\r\n display: flex;\r\n border-radius: 4px;\r\n overflow: hidden;\r\n border: 1px solid #d9d9d9;\r\n}\r\n\r\n.mode-btn {\r\n padding: 6px 16px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n background-color: #f5f5f5;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.mode-btn.active {\r\n background-color: #1890ff;\r\n color: white;\r\n}\r\n\r\n.mode-btn:not(.active):hover {\r\n background-color: #e6f7ff;\r\n}\r\n\r\n.demo-options {\r\n display: flex;\r\n gap: 10px;\r\n flex-wrap: wrap;\r\n}\r\n\r\n.demo-btn {\r\n padding: 6px 16px;\r\n background-color: #722ed1;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n transition: background-color 0.3s;\r\n user-select: none;\r\n}\r\n\r\n.demo-btn.active {\r\n background-color: #9254de;\r\n}\r\n\r\n.demo-btn:hover {\r\n background-color: #9254de;\r\n}\r\n\r\n\r\n\r\n \r\n</style>","<template>\r\n <div class=\"to_input_tips\" v-show=\"modelValue\">\r\n <slot></slot>\r\n </div>\r\n</template>\r\n\r\n <script>\r\n export default {\r\n props:{\r\n modelValue:{\r\n type:Boolean,\r\n default: false,\r\n },\r\n delay:{\r\n type:Number,\r\n default: 2000,\r\n },\r\n }, \r\n watch:{\r\n modelValue(n,o){\r\n if(n){\r\n setTimeout(() => {\r\n this.$emit('update:modelValue',false);\r\n }, this.delay);\r\n }\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.to_input_tips {\r\n display: table;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n color: #fff;\r\n padding: 10px;\r\n border-radius: 4px;\r\n margin: 0 auto;\r\n position: absolute;\r\n top: 50px;\r\n left: 0;\r\n right: 0; \r\n}\r\n\r\n</style>","import { render } from \"./index.vue?vue&type=template&id=1e8c4bc7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1e8c4bc7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1e8c4bc7\"]])\n\nexport default __exports__","import { render } from \"./index.vue?vue&type=template&id=b6864cf2&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=b6864cf2&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b6864cf2\"]])\n\nexport default __exports__","// package/public-js/letter.js\r\n// 处理首字母大小\r\nexport function handleFirstUpperCase(str) {\r\n return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase());\r\n}\r\n\r\n\r\nexport function handleDrawDownHump(str) {\r\n return str;\r\n}","// package/public-js/num.js\r\n// 四舍五入Math.round(number)\r\nexport function handleRoundOff(val) {\r\n return val && Math.round(val);\r\n}\r\n","// package/public-js/index.js\r\nimport { handleFirstUpperCase, } from \"./letter.js\";\r\nimport { handleRoundOff } from \"./num.js\";\r\nexport default { handleFirstUpperCase, handleDrawDownHump, handleRoundOff };\r\n","//package/index.js\r\nimport HorizRadioSelfNaming from \"../package/horiz-radio-self-naming/index.vue\"; // 引入封装好的组件\r\nimport publicjs from \"../package/public-js/index.js\"; // 引入封装好的方法\r\nconst coms = [HorizRadioSelfNaming]; // 将来如果有其它组件,都可以写到这个数组里\r\n\r\n// 批量组件注册\r\nconst install = function (Vue) {\r\n coms.forEach((com) => {\r\n Vue.component(com.name, com);\r\n });\r\n};\r\n\r\nexport default { install, publicjs }; // 这个方法以后再使用的时候可以被use调用\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__203__","sfc","props","target","__vccOpts","key","val","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","p","window","currentScript","document","src","match","class","_createElementVNode","_hoisted_12","_createElementBlock","_hoisted_1","_hoisted_2","$data","isEditMode","onClick","_cache","$event","_hoisted_3","_Fragment","_renderList","options","option","id","_normalizeClass","editingFocusId","_hoisted_7","type","name","onFocus","$options","handleEditFocus","onBlur","handleEditBlur","onInput","handleEditInput","onKeydown","_withKeys","handleSaveOption","spellcheck","ref","_hoisted_9","isAddingNew","_hoisted_10","_hoisted_11","newOptionText","args","handleNewOptionFocus","handleNewOptionBlur","handleSaveNewOption","placeholder","handleAddClick","selected","$props","modelValue","handleOptionSelect","_hoisted_5","_hoisted_6","_toDisplayString","_createVNode","_component_tips","showInputTips","showDiscardConfirm","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","handleCancelDiscard","handleConfirmDiscard","isDebug","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","active","_hoisted_24","isFewOptions","toggleOptionsCount","_renderSlot","_ctx","$slots","Boolean","default","delay","Number","watch","n","setTimeout","$emit","__exports__","String","list","Function","add","update","components","tips","data","selectedOption","editValues","originalValues","mounted","getData","forEach","methods","then","res","rows","console","log","find","it","one","opt","event","trim","newName","originalOption","$nextTick","$refs","newOptionInput","focus","text","catch","error","cancelNewOption","render","handleFirstUpperCase","str","replace","L","toUpperCase","handleRoundOff","Math","round","handleDrawDownHump","coms","HorizRadioSelfNaming","install","Vue","com","component","publicjs"],"sourceRoot":""}