vxe-pc-ui 4.11.44 → 4.12.0

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.
Files changed (68) hide show
  1. package/es/button/src/button.js +18 -6
  2. package/es/date-picker/src/date-picker.js +17 -5
  3. package/es/date-range-picker/src/date-range-picker.js +17 -5
  4. package/es/icon/style.css +1 -1
  5. package/es/icon-picker/src/icon-picker.js +36 -74
  6. package/es/pulldown/src/pulldown.js +26 -6
  7. package/es/select/src/select.js +21 -7
  8. package/es/style.css +1 -1
  9. package/es/style.min.css +1 -1
  10. package/es/table-select/src/table-select.js +17 -7
  11. package/es/tree-select/src/tree-select.js +21 -7
  12. package/es/ui/index.js +1 -1
  13. package/es/ui/src/log.js +1 -1
  14. package/lib/button/src/button.js +18 -9
  15. package/lib/button/src/button.min.js +1 -1
  16. package/lib/date-picker/src/date-picker.js +19 -7
  17. package/lib/date-picker/src/date-picker.min.js +1 -1
  18. package/lib/date-range-picker/src/date-range-picker.js +19 -7
  19. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  20. package/lib/icon/style/style.css +1 -1
  21. package/lib/icon/style/style.min.css +1 -1
  22. package/lib/icon-picker/src/icon-picker.js +39 -80
  23. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  24. package/lib/index.umd.js +185 -146
  25. package/lib/index.umd.min.js +1 -1
  26. package/lib/pulldown/src/pulldown.js +26 -9
  27. package/lib/pulldown/src/pulldown.min.js +1 -1
  28. package/lib/select/src/select.js +22 -10
  29. package/lib/select/src/select.min.js +1 -1
  30. package/lib/style.css +1 -1
  31. package/lib/style.min.css +1 -1
  32. package/lib/table-select/src/table-select.js +18 -12
  33. package/lib/table-select/src/table-select.min.js +1 -1
  34. package/lib/tree-select/src/tree-select.js +22 -10
  35. package/lib/tree-select/src/tree-select.min.js +1 -1
  36. package/lib/ui/index.js +1 -1
  37. package/lib/ui/index.min.js +1 -1
  38. package/lib/ui/src/log.js +1 -1
  39. package/lib/ui/src/log.min.js +1 -1
  40. package/package.json +1 -1
  41. package/packages/button/src/button.ts +19 -6
  42. package/packages/date-picker/src/date-picker.ts +18 -5
  43. package/packages/date-range-picker/src/date-range-picker.ts +18 -5
  44. package/packages/icon-picker/src/icon-picker.ts +37 -71
  45. package/packages/pulldown/src/pulldown.ts +27 -6
  46. package/packages/select/src/select.ts +21 -7
  47. package/packages/table-select/src/table-select.ts +17 -7
  48. package/packages/tree-select/src/tree-select.ts +21 -7
  49. package/types/components/button.d.ts +18 -0
  50. package/types/components/date-picker.d.ts +8 -0
  51. package/types/components/date-range-picker.d.ts +8 -0
  52. package/types/components/icon-picker.d.ts +24 -0
  53. package/types/components/pulldown.d.ts +28 -0
  54. package/types/components/select.d.ts +26 -0
  55. package/types/components/table-select.d.ts +16 -1
  56. package/types/components/tree-select.d.ts +20 -2
  57. /package/es/icon/{iconfont.1768284745337.ttf → iconfont.1768384392686.ttf} +0 -0
  58. /package/es/icon/{iconfont.1768284745337.woff → iconfont.1768384392686.woff} +0 -0
  59. /package/es/icon/{iconfont.1768284745337.woff2 → iconfont.1768384392686.woff2} +0 -0
  60. /package/es/{iconfont.1768284745337.ttf → iconfont.1768384392686.ttf} +0 -0
  61. /package/es/{iconfont.1768284745337.woff → iconfont.1768384392686.woff} +0 -0
  62. /package/es/{iconfont.1768284745337.woff2 → iconfont.1768384392686.woff2} +0 -0
  63. /package/lib/icon/style/{iconfont.1768284745337.ttf → iconfont.1768384392686.ttf} +0 -0
  64. /package/lib/icon/style/{iconfont.1768284745337.woff → iconfont.1768384392686.woff} +0 -0
  65. /package/lib/icon/style/{iconfont.1768284745337.woff2 → iconfont.1768384392686.woff2} +0 -0
  66. /package/lib/{iconfont.1768284745337.ttf → iconfont.1768384392686.ttf} +0 -0
  67. /package/lib/{iconfont.1768284745337.woff → iconfont.1768384392686.woff} +0 -0
  68. /package/lib/{iconfont.1768284745337.woff2 → iconfont.1768384392686.woff2} +0 -0
@@ -23,6 +23,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
23
23
  default: () => (0, _ui.getConfig)().iconPicker.size || (0, _ui.getConfig)().size
24
24
  },
25
25
  className: [String, Function],
26
+ /**
27
+ * 已废弃,请使用 popupConfig.className
28
+ * @deprecated
29
+ */
26
30
  popupClassName: [String, Function],
27
31
  showIconTitle: {
28
32
  type: Boolean,
@@ -38,6 +42,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
38
42
  },
39
43
  icons: Array,
40
44
  placement: String,
45
+ popupConfig: Object,
41
46
  transfer: {
42
47
  type: Boolean,
43
48
  default: null
@@ -112,6 +117,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
112
117
  const {
113
118
  transfer
114
119
  } = props;
120
+ const popupOpts = computePopupOpts.value;
121
+ if (_xeUtils.default.isBoolean(popupOpts.transfer)) {
122
+ return popupOpts.transfer;
123
+ }
115
124
  if (transfer === null) {
116
125
  const globalTransfer = (0, _ui.getConfig)().iconPicker.transfer;
117
126
  if (_xeUtils.default.isBoolean(globalTransfer)) {
@@ -157,6 +166,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
157
166
  };
158
167
  });
159
168
  });
169
+ const computePopupOpts = (0, _vue.computed)(() => {
170
+ return Object.assign({}, (0, _ui.getConfig)().iconPicker.popupConfig, props.popupConfig);
171
+ });
160
172
  const computeIconGroupList = (0, _vue.computed)(() => {
161
173
  const iconList = computeIconList.value;
162
174
  return _xeUtils.default.chunk(iconList, 4);
@@ -174,83 +186,29 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
174
186
  }
175
187
  };
176
188
  const updatePlacement = () => {
177
- return (0, _vue.nextTick)().then(() => {
178
- const {
179
- placement
180
- } = props;
181
- const {
182
- panelIndex
183
- } = reactData;
184
- const el = refElem.value;
185
- const panelElem = refOptionPanel.value;
186
- const btnTransfer = computeBtnTransfer.value;
187
- if (panelElem && el) {
188
- const targetHeight = el.offsetHeight;
189
- const targetWidth = el.offsetWidth;
190
- const panelHeight = panelElem.offsetHeight;
191
- const panelWidth = panelElem.offsetWidth;
192
- const marginSize = 5;
193
- const panelStyle = {
194
- zIndex: panelIndex
195
- };
196
- const {
197
- boundingTop,
198
- boundingLeft,
199
- visibleHeight,
200
- visibleWidth
201
- } = (0, _dom.getAbsolutePos)(el);
202
- let panelPlacement = 'bottom';
203
- if (btnTransfer) {
204
- let left = boundingLeft;
205
- let top = boundingTop + targetHeight;
206
- if (placement === 'top') {
207
- panelPlacement = 'top';
208
- top = boundingTop - panelHeight;
209
- } else if (!placement) {
210
- // 如果下面不够放,则向上
211
- if (top + panelHeight + marginSize > visibleHeight) {
212
- panelPlacement = 'top';
213
- top = boundingTop - panelHeight;
214
- }
215
- // 如果上面不够放,则向下(优先)
216
- if (top < marginSize) {
217
- panelPlacement = 'bottom';
218
- top = boundingTop + targetHeight;
219
- }
220
- }
221
- // 如果溢出右边
222
- if (left + panelWidth + marginSize > visibleWidth) {
223
- left -= left + panelWidth + marginSize - visibleWidth;
224
- }
225
- // 如果溢出左边
226
- if (left < marginSize) {
227
- left = marginSize;
228
- }
229
- Object.assign(panelStyle, {
230
- left: `${left}px`,
231
- top: `${top}px`,
232
- minWidth: `${targetWidth}px`
233
- });
234
- } else {
235
- if (placement === 'top') {
236
- panelPlacement = 'top';
237
- panelStyle.bottom = `${targetHeight}px`;
238
- } else if (!placement) {
239
- // 如果下面不够放,则向上
240
- if (boundingTop + targetHeight + panelHeight > visibleHeight) {
241
- // 如果上面不够放,则向下(优先)
242
- if (boundingTop - targetHeight - panelHeight > marginSize) {
243
- panelPlacement = 'top';
244
- panelStyle.bottom = `${targetHeight}px`;
245
- }
246
- }
247
- }
248
- }
249
- reactData.panelStyle = panelStyle;
250
- reactData.panelPlacement = panelPlacement;
251
- return (0, _vue.nextTick)();
252
- }
253
- });
189
+ const {
190
+ placement
191
+ } = props;
192
+ const {
193
+ panelIndex
194
+ } = reactData;
195
+ const targetElem = refElem.value;
196
+ const panelElem = refOptionPanel.value;
197
+ const btnTransfer = computeBtnTransfer.value;
198
+ const popupOpts = computePopupOpts.value;
199
+ const handleStyle = () => {
200
+ const ppObj = (0, _dom.updatePanelPlacement)(targetElem, panelElem, {
201
+ placement: popupOpts.placement || placement,
202
+ teleportTo: btnTransfer
203
+ });
204
+ const panelStyle = Object.assign(ppObj.style, {
205
+ zIndex: panelIndex
206
+ });
207
+ reactData.panelStyle = panelStyle;
208
+ reactData.panelPlacement = ppObj.placement;
209
+ };
210
+ handleStyle();
211
+ return (0, _vue.nextTick)().then(handleStyle);
254
212
  };
255
213
  const showOptionPanel = () => {
256
214
  const {
@@ -543,7 +501,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
543
501
  const renderVN = () => {
544
502
  const {
545
503
  className,
546
- popupClassName,
547
504
  clearable
548
505
  } = props;
549
506
  const {
@@ -558,6 +515,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
558
515
  const btnTransfer = computeBtnTransfer.value;
559
516
  const formReadonly = computeFormReadonly.value;
560
517
  const inpPlaceholder = computeInpPlaceholder.value;
518
+ const popupOpts = computePopupOpts.value;
519
+ const ppClassName = popupOpts.className || props.popupClassName;
561
520
  if (formReadonly) {
562
521
  return (0, _vue.h)('div', {
563
522
  ref: refElem,
@@ -603,9 +562,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
603
562
  disabled: btnTransfer ? !initialized : true
604
563
  }, [(0, _vue.h)('div', {
605
564
  ref: refOptionPanel,
606
- class: ['vxe-table--ignore-clear vxe-ico-picker--panel', popupClassName ? _xeUtils.default.isFunction(popupClassName) ? popupClassName({
565
+ class: ['vxe-table--ignore-clear vxe-ico-picker--panel', ppClassName ? _xeUtils.default.isFunction(ppClassName) ? ppClassName({
607
566
  $iconPicker: $xeIconPicker
608
- }) : popupClassName : '', {
567
+ }) : ppClassName : '', {
609
568
  [`size--${vSize}`]: vSize,
610
569
  'is--transfer': btnTransfer,
611
570
  'ani--leave': isAniVisible,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeIconPicker",props:{modelValue:String,placeholder:String,clearable:Boolean,size:{type:String,default:()=>(0,_ui.getConfig)().iconPicker.size||(0,_ui.getConfig)().size},className:[String,Function],popupClassName:[String,Function],showIconTitle:{type:Boolean,default:()=>(0,_ui.getConfig)().iconPicker.showIconTitle},readonly:{type:Boolean,default:null},disabled:{type:Boolean,default:null},icons:Array,placement:String,transfer:{type:Boolean,default:null}},emits:["update:modelValue","change","clear","click"],setup(d,e){const t=e["emit"],l=(0,_vue.inject)("$xeModal",null),n=(0,_vue.inject)("$xeDrawer",null),u=(0,_vue.inject)("$xeTable",null),a=(0,_vue.inject)("$xeForm",null),o=(0,_vue.inject)("xeFormItemInfo",null);var i=_xeUtils.default.uniqueId();const p=(0,_ui.useSize)(d)["computeSize"],f=(0,_vue.reactive)({initialized:!1,selectIcon:""+(d.modelValue||""),panelIndex:0,panelStyle:{},panelPlacement:null,visiblePanel:!1,isAniVisible:!1,isActivated:!1}),r={},g=(0,_vue.ref)(),m=(0,_vue.ref)(),b=(0,_vue.ref)(),c={refElem:g},x={xID:i,props:d,context:e,reactData:f,getRefMaps:()=>c};const h=(0,_vue.computed)(()=>{var e=d["readonly"];return null===e?!!a&&a.props.readonly:e}),E=(0,_vue.computed)(()=>{var e=d["disabled"];return null===e?!!a&&a.props.disabled:e}),k=(0,_vue.computed)(()=>{var e=d["transfer"];if(null===e){var i=(0,_ui.getConfig)().iconPicker.transfer;if(_xeUtils.default.isBoolean(i))return i;if(u||l||n||a)return!0}return e}),P=(0,_vue.computed)(()=>{var e=d["placeholder"];return(e=e||(0,_ui.getConfig)().select.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseSelect")}),s=(0,_vue.computed)(()=>{let e=d["icons"];return(e=e&&e.length?e:(0,_ui.getConfig)().iconPicker.icons||[]).map(e=>_xeUtils.default.isString(e)?{title:e,icon:"vxe-icon-"+(""+(e||"")).replace(/^vxe-icon-/,"")}:{title:""+(e.title||""),icon:e.icon||"",iconRender:e.iconRender})}),I=(0,_vue.computed)(()=>{var e=s.value;return _xeUtils.default.chunk(e,4)}),T=(0,_vue.computed)(()=>{const i=f["selectIcon"];var e=s.value;return i?e.find(e=>e.icon===i):null}),v=()=>(0,_vue.nextTick)().then(()=>{var t=d["placement"],n=f["panelIndex"],u=g.value,a=b.value,e=k.value;if(a&&u){var o=u.offsetHeight,r=u.offsetWidth,c=a.offsetHeight,a=a.offsetWidth,n={zIndex:n},{boundingTop:u,boundingLeft:s,visibleHeight:v,visibleWidth:_}=(0,_dom.getAbsolutePos)(u);let l="bottom";if(e){let e=s,i=u+o;"top"===t?(l="top",i=u-c):t||(i+c+5>v&&(l="top",i=u-c),i<5&&(l="bottom",i=u+o)),e+a+5>_&&(e-=e+a+5-_),e<5&&(e=5),Object.assign(n,{left:e+"px",top:i+"px",minWidth:r+"px"})}else"top"===t?(l="top",n.bottom=o+"px"):t||v<u+o+c&&5<u-o-c&&(l="top",n.bottom=o+"px");return f.panelStyle=n,f.panelPlacement=l,(0,_vue.nextTick)()}}),_=()=>{var e=r["hpTimeout"];E.value||(e&&(clearTimeout(e),r.hpTimeout=void 0),f.initialized||(f.initialized=!0),f.isActivated=!0,f.isAniVisible=!0,setTimeout(()=>{f.visiblePanel=!0},10),f.panelIndex<(0,_utils.getLastZIndex)()&&(f.panelIndex=(0,_utils.nextZIndex)()),v())},A=()=>{f.visiblePanel=!1,r.hpTimeout=setTimeout(()=>{f.isAniVisible=!1},350)},y=(e,i)=>{(f.selectIcon=i)!==d.modelValue&&(t("update:modelValue",i),K("change",{value:i},e),a)&&o&&a.triggerItemEvent(e,o.itemConfig.field,i)},S=()=>{E.value||f.visiblePanel||_()},N=()=>{f.isActivated=!1},V=(e,i)=>{y(e,i),K("clear",{value:i},e)},C=(e,i)=>{V(i,null),A()},L=e=>{e.preventDefault(),(f.visiblePanel?A:_)()},O=e=>{L(e),K("click",{},e)},B=e=>{var i=f["visiblePanel"];E.value||i&&(i=b.value,((0,_dom.getEventTargetNode)(e,i).flag?v:A)())},R=e=>{var i,l,t=f["visiblePanel"];E.value||(i=g.value,l=b.value,f.isActivated=(0,_dom.getEventTargetNode)(e,i).flag||(0,_dom.getEventTargetNode)(e,l).flag,t&&!f.isActivated&&A())},w=e=>{var i,l,t,n,u,a,o,r=d["clearable"],c=f["visiblePanel"];E.value||(i=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.TAB),l=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ENTER),t=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ESCAPE),n=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),u=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN),a=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.DELETE),o=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.SPACEBAR),i&&(f.isActivated=!1),c?t||i?A():l?(e.preventDefault(),e.stopPropagation()):(n||u||o)&&e.preventDefault():(n||u||l||o)&&f.isActivated&&(e.preventDefault(),_()),f.isActivated&&a&&r&&V(e,null))},z=()=>{var{visiblePanel:e,isActivated:i}=f;e&&A(),i&&(f.isActivated=!1),(e||i)&&(e=m.value)&&e.blur()},K=(e,i,l)=>{t(e,(0,_ui.createEvent)(l,{$iconPicker:x},i))},D=(i={dispatchEvent:K,isPanelVisible(){return f.visiblePanel},togglePanel(){return(f.visiblePanel?A:_)(),(0,_vue.nextTick)()},hidePanel(){return f.visiblePanel&&A(),(0,_vue.nextTick)()},showPanel(){return f.visiblePanel||_(),(0,_vue.nextTick)()},focus(){var e=m.value;return f.isActivated=!0,e&&e.blur(),(0,_vue.nextTick)()},blur(){var e=m.value;return e&&e.blur(),(f.isActivated=!1,_vue.nextTick)()}},(e,i)=>{i=i.icon;y(e,i),A()});Object.assign(x,i);return(0,_vue.watch)(()=>d.modelValue,e=>{f.selectIcon=""+(e||"")}),(0,_vue.onMounted)(()=>{_ui.globalEvents.on(x,"mousewheel",B),_ui.globalEvents.on(x,"mousedown",R),_ui.globalEvents.on(x,"keydown",w),_ui.globalEvents.on(x,"blur",z)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(x,"mousewheel"),_ui.globalEvents.off(x,"mousedown"),_ui.globalEvents.off(x,"keydown"),_ui.globalEvents.off(x,"blur")}),(0,_vue.provide)("$xeIconPicker",x),x.renderVN=()=>{var{className:e,popupClassName:i,clearable:l}=d,{initialized:t,isActivated:n,isAniVisible:u,visiblePanel:a,selectIcon:o}=f,r=p.value,c=E.value,s=k.value,v=h.value,_=P.value;return v?(0,_vue.h)("div",{ref:g,class:["vxe-ico-picker--readonly",e]},[(0,_vue.h)("i",{class:o})]):(0,_vue.h)("div",{ref:g,class:["vxe-ico-picker",e?_xeUtils.default.isFunction(e)?e({$iconPicker:x}):e:"",{["size--"+r]:r,"show--clear":l&&!c&&!!o,"is--visible":a,"is--disabled":c,"is--active":n}]},[(0,_vue.h)("div",{class:"vxe-ico-picker--inner",onClick:O},[(0,_vue.h)("input",{ref:m,class:"vxe-ico-picker--input",onFocus:S,onBlur:N}),o?(()=>{var e=f["selectIcon"],i=T.value;if(i){var l=i["iconRender"],t=l?_ui.renderer.get(l.name):null,t=t?t.renderIconPickerOptionIcon:null;if(t&&l)return(0,_vue.h)("div",{key:"inc",class:"vxe-ico-picker--icon"},(0,_vn.getSlotVNs)(t(l,{$iconPicker:x,option:i})))}return(0,_vue.h)("div",{key:"ind",class:"vxe-ico-picker--icon"},[(0,_vue.h)("i",{class:e})])})():(0,_vue.h)("div",{class:"vxe-ico-picker--placeholder"},_),(0,_vue.h)("div",{class:"vxe-ico-picker--suffix"},[(0,_vue.h)("div",{class:"vxe-ico-picker--clear-icon",onClick:C},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().INPUT_CLEAR})]),(0,_vue.h)("div",{class:"vxe-ico-picker--suffix-icon"},[(0,_vue.h)("i",{class:a?(0,_ui.getIcon)().ICON_PICKER_OPEN:(0,_ui.getIcon)().ICON_PICKER_CLOSE})])])]),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!s||!t},[(0,_vue.h)("div",{ref:b,class:["vxe-table--ignore-clear vxe-ico-picker--panel",i?_xeUtils.default.isFunction(i)?i({$iconPicker:x}):i:"",{["size--"+r]:r,"is--transfer":s,"ani--leave":u,"ani--enter":a}],placement:f.panelPlacement,style:f.panelStyle},[t&&(a||u)?(0,_vue.h)("div",{class:"vxe-ico-picker--panel-wrapper"},[(()=>{const t=d["showIconTitle"];var e=I.value;const n=E.value;return(0,_vue.h)("div",{class:"vxe-ico-picker--list-wrapper"},e.map(e=>(0,_vue.h)("div",{class:"vxe-ico-picker--list"},e.map(i=>{var e=i["iconRender"],l=e?_ui.renderer.get(e.name):null,l=l?l.renderIconPickerOptionIcon:null;return(0,_vue.h)("div",{class:"vxe-ico-picker--item",onClick(e){n||D(e,i)}},[(0,_vue.h)("div",{class:"vxe-ico-picker--item-icon"},l&&e?(0,_vn.getSlotVNs)(l(e,{$iconPicker:x,option:i})):[(0,_vue.h)("i",{class:i.icon||""})]),t?(0,_vue.h)("div",{class:"vxe-ico-picker--item-title"},""+(i.title||"")):(0,_ui.renderEmptyElement)(x)])}))))})()]):(0,_ui.renderEmptyElement)(x)])])])},x},render(){return this.renderVN()}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeIconPicker",props:{modelValue:String,placeholder:String,clearable:Boolean,size:{type:String,default:()=>(0,_ui.getConfig)().iconPicker.size||(0,_ui.getConfig)().size},className:[String,Function],popupClassName:[String,Function],showIconTitle:{type:Boolean,default:()=>(0,_ui.getConfig)().iconPicker.showIconTitle},readonly:{type:Boolean,default:null},disabled:{type:Boolean,default:null},icons:Array,placement:String,popupConfig:Object,transfer:{type:Boolean,default:null}},emits:["update:modelValue","change","clear","click"],setup(d,e){const n=e["emit"],l=(0,_vue.inject)("$xeModal",null),t=(0,_vue.inject)("$xeDrawer",null),a=(0,_vue.inject)("$xeTable",null),u=(0,_vue.inject)("$xeForm",null),r=(0,_vue.inject)("xeFormItemInfo",null);var i=_xeUtils.default.uniqueId();const p=(0,_ui.useSize)(d)["computeSize"],f=(0,_vue.reactive)({initialized:!1,selectIcon:""+(d.modelValue||""),panelIndex:0,panelStyle:{},panelPlacement:null,visiblePanel:!1,isAniVisible:!1,isActivated:!1}),o={},g=(0,_vue.ref)(),m=(0,_vue.ref)(),x=(0,_vue.ref)(),c={refElem:g},E={xID:i,props:d,context:e,reactData:f,getRefMaps:()=>c};const b=(0,_vue.computed)(()=>{var e=d["readonly"];return null===e?!!u&&u.props.readonly:e}),h=(0,_vue.computed)(()=>{var e=d["disabled"];return null===e?!!u&&u.props.disabled:e}),k=(0,_vue.computed)(()=>{var e=d["transfer"],i=I.value;if(_xeUtils.default.isBoolean(i.transfer))return i.transfer;if(null===e){i=(0,_ui.getConfig)().iconPicker.transfer;if(_xeUtils.default.isBoolean(i))return i;if(a||l||t||u)return!0}return e}),P=(0,_vue.computed)(()=>{var e=d["placeholder"];return(e=e||(0,_ui.getConfig)().select.placeholder)?(0,_utils.getFuncText)(e):(0,_ui.getI18n)("vxe.base.pleaseSelect")}),s=(0,_vue.computed)(()=>{let e=d["icons"];return(e=e&&e.length?e:(0,_ui.getConfig)().iconPicker.icons||[]).map(e=>_xeUtils.default.isString(e)?{title:e,icon:"vxe-icon-"+(""+(e||"")).replace(/^vxe-icon-/,"")}:{title:""+(e.title||""),icon:e.icon||"",iconRender:e.iconRender})}),I=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().iconPicker.popupConfig,d.popupConfig)),T=(0,_vue.computed)(()=>{var e=s.value;return _xeUtils.default.chunk(e,4)}),A=(0,_vue.computed)(()=>{const i=f["selectIcon"];var e=s.value;return i?e.find(e=>e.icon===i):null}),v=()=>{const l=d["placement"],n=f["panelIndex"],t=g.value,a=x.value,u=k.value,r=I.value;var e=()=>{var e=(0,_dom.updatePanelPlacement)(t,a,{placement:r.placement||l,teleportTo:u}),i=Object.assign(e.style,{zIndex:n});f.panelStyle=i,f.panelPlacement=e.placement};return e(),(0,_vue.nextTick)().then(e)},_=()=>{var e=o["hpTimeout"];h.value||(e&&(clearTimeout(e),o.hpTimeout=void 0),f.initialized||(f.initialized=!0),f.isActivated=!0,f.isAniVisible=!0,setTimeout(()=>{f.visiblePanel=!0},10),f.panelIndex<(0,_utils.getLastZIndex)()&&(f.panelIndex=(0,_utils.nextZIndex)()),v())},y=()=>{f.visiblePanel=!1,o.hpTimeout=setTimeout(()=>{f.isAniVisible=!1},350)},C=(e,i)=>{(f.selectIcon=i)!==d.modelValue&&(n("update:modelValue",i),K("change",{value:i},e),u)&&r&&u.triggerItemEvent(e,r.itemConfig.field,i)},N=()=>{h.value||f.visiblePanel||_()},S=()=>{f.isActivated=!1},V=(e,i)=>{C(e,i),K("clear",{value:i},e)},O=(e,i)=>{V(i,null),y()},L=e=>{e.preventDefault(),(f.visiblePanel?y:_)()},B=e=>{L(e),K("click",{},e)},R=e=>{var i=f["visiblePanel"];h.value||i&&(i=x.value,((0,_dom.getEventTargetNode)(e,i).flag?v:y)())},w=e=>{var i,l,n=f["visiblePanel"];h.value||(i=g.value,l=x.value,f.isActivated=(0,_dom.getEventTargetNode)(e,i).flag||(0,_dom.getEventTargetNode)(e,l).flag,n&&!f.isActivated&&y())},z=e=>{var i,l,n,t,a,u,r,o=d["clearable"],c=f["visiblePanel"];h.value||(i=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.TAB),l=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ENTER),n=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ESCAPE),t=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_UP),a=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.ARROW_DOWN),u=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.DELETE),r=_ui.globalEvents.hasKey(e,_ui.GLOBAL_EVENT_KEYS.SPACEBAR),i&&(f.isActivated=!1),c?n||i?y():l?(e.preventDefault(),e.stopPropagation()):(t||a||r)&&e.preventDefault():(t||a||l||r)&&f.isActivated&&(e.preventDefault(),_()),f.isActivated&&u&&o&&V(e,null))},D=()=>{var{visiblePanel:e,isActivated:i}=f;e&&y(),i&&(f.isActivated=!1),(e||i)&&(e=m.value)&&e.blur()},K=(e,i,l)=>{n(e,(0,_ui.createEvent)(l,{$iconPicker:E},i))},U=(i={dispatchEvent:K,isPanelVisible(){return f.visiblePanel},togglePanel(){return(f.visiblePanel?y:_)(),(0,_vue.nextTick)()},hidePanel(){return f.visiblePanel&&y(),(0,_vue.nextTick)()},showPanel(){return f.visiblePanel||_(),(0,_vue.nextTick)()},focus(){var e=m.value;return f.isActivated=!0,e&&e.blur(),(0,_vue.nextTick)()},blur(){var e=m.value;return e&&e.blur(),(f.isActivated=!1,_vue.nextTick)()}},(e,i)=>{i=i.icon;C(e,i),y()});Object.assign(E,i);return(0,_vue.watch)(()=>d.modelValue,e=>{f.selectIcon=""+(e||"")}),(0,_vue.onMounted)(()=>{_ui.globalEvents.on(E,"mousewheel",R),_ui.globalEvents.on(E,"mousedown",w),_ui.globalEvents.on(E,"keydown",z),_ui.globalEvents.on(E,"blur",D)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(E,"mousewheel"),_ui.globalEvents.off(E,"mousedown"),_ui.globalEvents.off(E,"keydown"),_ui.globalEvents.off(E,"blur")}),(0,_vue.provide)("$xeIconPicker",E),E.renderVN=()=>{var{className:e,clearable:i}=d,{initialized:l,isActivated:n,isAniVisible:t,visiblePanel:a,selectIcon:u}=f,r=p.value,o=h.value,c=k.value,s=b.value,v=P.value,_=I.value.className||d.popupClassName;return s?(0,_vue.h)("div",{ref:g,class:["vxe-ico-picker--readonly",e]},[(0,_vue.h)("i",{class:u})]):(0,_vue.h)("div",{ref:g,class:["vxe-ico-picker",e?_xeUtils.default.isFunction(e)?e({$iconPicker:E}):e:"",{["size--"+r]:r,"show--clear":i&&!o&&!!u,"is--visible":a,"is--disabled":o,"is--active":n}]},[(0,_vue.h)("div",{class:"vxe-ico-picker--inner",onClick:B},[(0,_vue.h)("input",{ref:m,class:"vxe-ico-picker--input",onFocus:N,onBlur:S}),u?(()=>{var e=f["selectIcon"],i=A.value;if(i){var l=i["iconRender"],n=l?_ui.renderer.get(l.name):null,n=n?n.renderIconPickerOptionIcon:null;if(n&&l)return(0,_vue.h)("div",{key:"inc",class:"vxe-ico-picker--icon"},(0,_vn.getSlotVNs)(n(l,{$iconPicker:E,option:i})))}return(0,_vue.h)("div",{key:"ind",class:"vxe-ico-picker--icon"},[(0,_vue.h)("i",{class:e})])})():(0,_vue.h)("div",{class:"vxe-ico-picker--placeholder"},v),(0,_vue.h)("div",{class:"vxe-ico-picker--suffix"},[(0,_vue.h)("div",{class:"vxe-ico-picker--clear-icon",onClick:O},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().INPUT_CLEAR})]),(0,_vue.h)("div",{class:"vxe-ico-picker--suffix-icon"},[(0,_vue.h)("i",{class:a?(0,_ui.getIcon)().ICON_PICKER_OPEN:(0,_ui.getIcon)().ICON_PICKER_CLOSE})])])]),(0,_vue.h)(_vue.Teleport,{to:"body",disabled:!c||!l},[(0,_vue.h)("div",{ref:x,class:["vxe-table--ignore-clear vxe-ico-picker--panel",_?_xeUtils.default.isFunction(_)?_({$iconPicker:E}):_:"",{["size--"+r]:r,"is--transfer":c,"ani--leave":t,"ani--enter":a}],placement:f.panelPlacement,style:f.panelStyle},[l&&(a||t)?(0,_vue.h)("div",{class:"vxe-ico-picker--panel-wrapper"},[(()=>{const n=d["showIconTitle"];var e=T.value;const t=h.value;return(0,_vue.h)("div",{class:"vxe-ico-picker--list-wrapper"},e.map(e=>(0,_vue.h)("div",{class:"vxe-ico-picker--list"},e.map(i=>{var e=i["iconRender"],l=e?_ui.renderer.get(e.name):null,l=l?l.renderIconPickerOptionIcon:null;return(0,_vue.h)("div",{class:"vxe-ico-picker--item",onClick(e){t||U(e,i)}},[(0,_vue.h)("div",{class:"vxe-ico-picker--item-icon"},l&&e?(0,_vn.getSlotVNs)(l(e,{$iconPicker:E,option:i})):[(0,_vue.h)("i",{class:i.icon||""})]),n?(0,_vue.h)("div",{class:"vxe-ico-picker--item-title"},""+(i.title||"")):(0,_ui.renderEmptyElement)(E)])}))))})()]):(0,_ui.renderEmptyElement)(E)])])])},E},render(){return this.renderVN()}});