element-ps 1.0.14 → 1.0.17

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 (202) hide show
  1. package/dist/index.full.js +154 -137
  2. package/dist/index.full.min.js +4 -4
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +4 -4
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +153 -138
  7. package/es/components/descriptions/index.d.ts +14 -2
  8. package/es/components/descriptions/src/description-item.d.ts +7 -1
  9. package/es/components/descriptions/src/descriptions.type.d.ts +1 -0
  10. package/es/components/input-number/index.d.ts +2 -0
  11. package/es/components/input-number/src/input-number.vue.d.ts +2 -0
  12. package/es/components/rate/index.d.ts +75 -246
  13. package/es/components/rate/src/rate.d.ts +26 -0
  14. package/es/components/rate/src/rate.vue.d.ts +108 -0
  15. package/es/components/select-v2/index.d.ts +6 -6
  16. package/es/components/select-v2/src/defaults.d.ts +1 -1
  17. package/es/components/select-v2/src/select.vue.d.ts +3 -3
  18. package/es/index.mjs +9 -8
  19. package/es/index.mjs.map +1 -1
  20. package/es/packages/components/alert/index.mjs +2 -2
  21. package/es/packages/components/alert/src/alert.mjs +5 -34
  22. package/es/packages/components/alert/src/alert.mjs.map +1 -1
  23. package/es/packages/components/alert/src/alert.vue_vue&type=script&lang.mjs +1 -1
  24. package/es/packages/components/alert/src/alert2.mjs +34 -5
  25. package/es/packages/components/alert/src/alert2.mjs.map +1 -1
  26. package/es/packages/components/badge/index.mjs +2 -2
  27. package/es/packages/components/badge/src/badge.mjs +5 -20
  28. package/es/packages/components/badge/src/badge.mjs.map +1 -1
  29. package/es/packages/components/badge/src/badge.vue_vue&type=script&lang.mjs +1 -1
  30. package/es/packages/components/badge/src/badge2.mjs +20 -5
  31. package/es/packages/components/badge/src/badge2.mjs.map +1 -1
  32. package/es/packages/components/card/index.mjs +2 -2
  33. package/es/packages/components/card/src/card.mjs +17 -5
  34. package/es/packages/components/card/src/card.mjs.map +1 -1
  35. package/es/packages/components/card/src/card.vue_vue&type=script&lang.mjs +1 -1
  36. package/es/packages/components/card/src/card2.mjs +5 -17
  37. package/es/packages/components/card/src/card2.mjs.map +1 -1
  38. package/es/packages/components/cascader/src/index.vue_vue&type=script&lang.mjs.map +1 -1
  39. package/es/packages/components/cascader/src/index.vue_vue&type=template&id=0429c2db&lang.mjs +8 -6
  40. package/es/packages/components/cascader/src/index.vue_vue&type=template&id=0429c2db&lang.mjs.map +1 -1
  41. package/es/packages/components/descriptions/src/description-item.mjs +3 -0
  42. package/es/packages/components/descriptions/src/description-item.mjs.map +1 -1
  43. package/es/packages/components/descriptions/src/descriptions-cell.mjs +2 -1
  44. package/es/packages/components/descriptions/src/descriptions-cell.mjs.map +1 -1
  45. package/es/packages/components/divider/index.mjs +2 -2
  46. package/es/packages/components/divider/src/divider.mjs +15 -5
  47. package/es/packages/components/divider/src/divider.mjs.map +1 -1
  48. package/es/packages/components/divider/src/divider.vue_vue&type=script&lang.mjs +1 -1
  49. package/es/packages/components/divider/src/divider2.mjs +5 -15
  50. package/es/packages/components/divider/src/divider2.mjs.map +1 -1
  51. package/es/packages/components/image/index.mjs +2 -2
  52. package/es/packages/components/image/src/image.mjs +44 -5
  53. package/es/packages/components/image/src/image.mjs.map +1 -1
  54. package/es/packages/components/image/src/image.vue_vue&type=script&lang.mjs +1 -1
  55. package/es/packages/components/image/src/image2.mjs +5 -44
  56. package/es/packages/components/image/src/image2.mjs.map +1 -1
  57. package/es/packages/components/index.mjs +9 -8
  58. package/es/packages/components/index.mjs.map +1 -1
  59. package/es/packages/components/input-number/src/input-number.vue_vue&type=script&lang.mjs +4 -2
  60. package/es/packages/components/input-number/src/input-number.vue_vue&type=script&lang.mjs.map +1 -1
  61. package/es/packages/components/input-number/src/input-number.vue_vue&type=template&id=dec60af6&lang.mjs.map +1 -1
  62. package/es/packages/components/menu/index.mjs +4 -4
  63. package/es/packages/components/menu/src/menu-item-group.mjs +4 -5
  64. package/es/packages/components/menu/src/menu-item-group.mjs.map +1 -1
  65. package/es/packages/components/menu/src/menu-item-group.vue_vue&type=script&lang.mjs +1 -1
  66. package/es/packages/components/menu/src/menu-item-group2.mjs +5 -4
  67. package/es/packages/components/menu/src/menu-item-group2.mjs.map +1 -1
  68. package/es/packages/components/menu/src/menu-item.mjs +18 -5
  69. package/es/packages/components/menu/src/menu-item.mjs.map +1 -1
  70. package/es/packages/components/menu/src/menu-item.vue_vue&type=script&lang.mjs +1 -1
  71. package/es/packages/components/menu/src/menu-item2.mjs +5 -18
  72. package/es/packages/components/menu/src/menu-item2.mjs.map +1 -1
  73. package/es/packages/components/rate/index.mjs +6 -8
  74. package/es/packages/components/rate/index.mjs.map +1 -1
  75. package/es/packages/components/rate/src/rate.mjs +87 -0
  76. package/es/packages/components/rate/src/rate.mjs.map +1 -0
  77. package/es/packages/components/rate/src/{index.vue_vue&type=script&lang.mjs → rate.vue_vue&type=script&lang.mjs} +19 -88
  78. package/es/packages/components/rate/src/rate.vue_vue&type=script&lang.mjs.map +1 -0
  79. package/es/packages/components/rate/src/{index.vue_vue&type=template&id=55b4fa7d&lang.mjs → rate.vue_vue&type=template&id=38c42df6&lang.mjs} +1 -1
  80. package/es/packages/components/rate/src/rate.vue_vue&type=template&id=38c42df6&lang.mjs.map +1 -0
  81. package/es/packages/components/rate/src/rate2.mjs +7 -0
  82. package/es/packages/components/rate/src/rate2.mjs.map +1 -0
  83. package/es/packages/components/select-v2/src/defaults.mjs +1 -1
  84. package/es/packages/components/select-v2/src/defaults.mjs.map +1 -1
  85. package/es/packages/components/select-v2/src/select.vue_vue&type=script&lang.mjs.map +1 -1
  86. package/es/packages/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.mjs +4 -4
  87. package/es/packages/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.mjs.map +1 -1
  88. package/es/packages/components/select-v2/src/useSelect.mjs +8 -8
  89. package/es/packages/components/select-v2/src/useSelect.mjs.map +1 -1
  90. package/es/packages/components/tag/index.mjs +2 -2
  91. package/es/packages/components/tag/src/tag.mjs +5 -26
  92. package/es/packages/components/tag/src/tag.mjs.map +1 -1
  93. package/es/packages/components/tag/src/tag.vue_vue&type=script&lang.mjs +1 -1
  94. package/es/packages/components/tag/src/tag2.mjs +26 -5
  95. package/es/packages/components/tag/src/tag2.mjs.map +1 -1
  96. package/es/version.d.ts +1 -1
  97. package/es/version.mjs +1 -1
  98. package/es/version.mjs.map +1 -1
  99. package/lib/components/descriptions/index.d.ts +14 -2
  100. package/lib/components/descriptions/src/description-item.d.ts +7 -1
  101. package/lib/components/descriptions/src/descriptions.type.d.ts +1 -0
  102. package/lib/components/input-number/index.d.ts +2 -0
  103. package/lib/components/input-number/src/input-number.vue.d.ts +2 -0
  104. package/lib/components/rate/index.d.ts +75 -246
  105. package/lib/components/rate/src/rate.d.ts +26 -0
  106. package/lib/components/rate/src/rate.vue.d.ts +108 -0
  107. package/lib/components/select-v2/index.d.ts +6 -6
  108. package/lib/components/select-v2/src/defaults.d.ts +1 -1
  109. package/lib/components/select-v2/src/select.vue.d.ts +3 -3
  110. package/lib/index.js +11 -8
  111. package/lib/index.js.map +1 -1
  112. package/lib/packages/components/alert/index.js +2 -2
  113. package/lib/packages/components/alert/src/alert.js +5 -33
  114. package/lib/packages/components/alert/src/alert.js.map +1 -1
  115. package/lib/packages/components/alert/src/alert.vue_vue&type=script&lang.js +1 -1
  116. package/lib/packages/components/alert/src/alert2.js +33 -5
  117. package/lib/packages/components/alert/src/alert2.js.map +1 -1
  118. package/lib/packages/components/badge/index.js +2 -2
  119. package/lib/packages/components/badge/src/badge.js +5 -19
  120. package/lib/packages/components/badge/src/badge.js.map +1 -1
  121. package/lib/packages/components/badge/src/badge.vue_vue&type=script&lang.js +1 -1
  122. package/lib/packages/components/badge/src/badge2.js +19 -5
  123. package/lib/packages/components/badge/src/badge2.js.map +1 -1
  124. package/lib/packages/components/card/index.js +2 -2
  125. package/lib/packages/components/card/src/card.js +16 -5
  126. package/lib/packages/components/card/src/card.js.map +1 -1
  127. package/lib/packages/components/card/src/card.vue_vue&type=script&lang.js +1 -1
  128. package/lib/packages/components/card/src/card2.js +5 -16
  129. package/lib/packages/components/card/src/card2.js.map +1 -1
  130. package/lib/packages/components/cascader/src/index.vue_vue&type=script&lang.js.map +1 -1
  131. package/lib/packages/components/cascader/src/index.vue_vue&type=template&id=0429c2db&lang.js +8 -6
  132. package/lib/packages/components/cascader/src/index.vue_vue&type=template&id=0429c2db&lang.js.map +1 -1
  133. package/lib/packages/components/descriptions/src/description-item.js +3 -0
  134. package/lib/packages/components/descriptions/src/description-item.js.map +1 -1
  135. package/lib/packages/components/descriptions/src/descriptions-cell.js +2 -1
  136. package/lib/packages/components/descriptions/src/descriptions-cell.js.map +1 -1
  137. package/lib/packages/components/divider/index.js +2 -2
  138. package/lib/packages/components/divider/src/divider.js +14 -5
  139. package/lib/packages/components/divider/src/divider.js.map +1 -1
  140. package/lib/packages/components/divider/src/divider.vue_vue&type=script&lang.js +1 -1
  141. package/lib/packages/components/divider/src/divider2.js +5 -14
  142. package/lib/packages/components/divider/src/divider2.js.map +1 -1
  143. package/lib/packages/components/image/index.js +2 -2
  144. package/lib/packages/components/image/src/image.js +44 -5
  145. package/lib/packages/components/image/src/image.js.map +1 -1
  146. package/lib/packages/components/image/src/image.vue_vue&type=script&lang.js +1 -1
  147. package/lib/packages/components/image/src/image2.js +5 -44
  148. package/lib/packages/components/image/src/image2.js.map +1 -1
  149. package/lib/packages/components/index.js +11 -8
  150. package/lib/packages/components/index.js.map +1 -1
  151. package/lib/packages/components/input-number/src/input-number.vue_vue&type=script&lang.js +4 -2
  152. package/lib/packages/components/input-number/src/input-number.vue_vue&type=script&lang.js.map +1 -1
  153. package/lib/packages/components/input-number/src/input-number.vue_vue&type=template&id=dec60af6&lang.js.map +1 -1
  154. package/lib/packages/components/menu/index.js +4 -4
  155. package/lib/packages/components/menu/src/menu-item-group.js +4 -6
  156. package/lib/packages/components/menu/src/menu-item-group.js.map +1 -1
  157. package/lib/packages/components/menu/src/menu-item-group.vue_vue&type=script&lang.js +1 -1
  158. package/lib/packages/components/menu/src/menu-item-group2.js +6 -4
  159. package/lib/packages/components/menu/src/menu-item-group2.js.map +1 -1
  160. package/lib/packages/components/menu/src/menu-item.js +18 -5
  161. package/lib/packages/components/menu/src/menu-item.js.map +1 -1
  162. package/lib/packages/components/menu/src/menu-item.vue_vue&type=script&lang.js +1 -1
  163. package/lib/packages/components/menu/src/menu-item2.js +5 -18
  164. package/lib/packages/components/menu/src/menu-item2.js.map +1 -1
  165. package/lib/packages/components/rate/index.js +8 -8
  166. package/lib/packages/components/rate/index.js.map +1 -1
  167. package/lib/packages/components/rate/src/rate.js +92 -0
  168. package/lib/packages/components/rate/src/rate.js.map +1 -0
  169. package/lib/packages/components/rate/src/{index.vue_vue&type=script&lang.js → rate.vue_vue&type=script&lang.js} +19 -88
  170. package/lib/packages/components/rate/src/rate.vue_vue&type=script&lang.js.map +1 -0
  171. package/lib/packages/components/rate/src/{index.vue_vue&type=template&id=55b4fa7d&lang.js → rate.vue_vue&type=template&id=38c42df6&lang.js} +1 -1
  172. package/lib/packages/components/rate/src/rate.vue_vue&type=template&id=38c42df6&lang.js.map +1 -0
  173. package/lib/packages/components/rate/src/rate2.js +12 -0
  174. package/lib/packages/components/rate/src/rate2.js.map +1 -0
  175. package/lib/packages/components/select-v2/src/defaults.js +1 -1
  176. package/lib/packages/components/select-v2/src/defaults.js.map +1 -1
  177. package/lib/packages/components/select-v2/src/select.vue_vue&type=script&lang.js.map +1 -1
  178. package/lib/packages/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.js +4 -4
  179. package/lib/packages/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.js.map +1 -1
  180. package/lib/packages/components/select-v2/src/useSelect.js +8 -8
  181. package/lib/packages/components/select-v2/src/useSelect.js.map +1 -1
  182. package/lib/packages/components/tag/index.js +2 -2
  183. package/lib/packages/components/tag/src/tag.js +5 -25
  184. package/lib/packages/components/tag/src/tag.js.map +1 -1
  185. package/lib/packages/components/tag/src/tag.vue_vue&type=script&lang.js +1 -1
  186. package/lib/packages/components/tag/src/tag2.js +25 -5
  187. package/lib/packages/components/tag/src/tag2.js.map +1 -1
  188. package/lib/version.d.ts +1 -1
  189. package/lib/version.js +1 -1
  190. package/lib/version.js.map +1 -1
  191. package/package.json +1 -1
  192. package/web-types.json +1 -1
  193. package/es/components/rate/src/index.vue.d.ts +0 -141
  194. package/es/packages/components/rate/src/index.mjs +0 -7
  195. package/es/packages/components/rate/src/index.mjs.map +0 -1
  196. package/es/packages/components/rate/src/index.vue_vue&type=script&lang.mjs.map +0 -1
  197. package/es/packages/components/rate/src/index.vue_vue&type=template&id=55b4fa7d&lang.mjs.map +0 -1
  198. package/lib/components/rate/src/index.vue.d.ts +0 -141
  199. package/lib/packages/components/rate/src/index.js +0 -12
  200. package/lib/packages/components/rate/src/index.js.map +0 -1
  201. package/lib/packages/components/rate/src/index.vue_vue&type=script&lang.js.map +0 -1
  202. package/lib/packages/components/rate/src/index.vue_vue&type=template&id=55b4fa7d&lang.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"select.vue_vue&type=template&id=13e598a4&lang.js","sources":["../../../../../../../packages/components/select-v2/src/select.vue?vue&type=template&id=13e598a4&lang.js"],"sourcesContent":["<template>\n <div\n ref=\"selectRef\"\n :class=\"[selectSize ? 'el-select-v2--' + selectSize : '']\"\n class=\"el-select-v2\"\n >\n <div\n ref=\"selectionRef\"\n class=\"el-select-v2__wrapper\"\n :class=\"{\n 'is-focused': states.isComposing,\n 'is-hovering': states.comboBoxHovering,\n 'is-filterable': filterable,\n 'is-disabled': disabled,\n }\"\n >\n <div v-if=\"$slots.prefix\">\n <slot name=\"prefix\"></slot>\n </div>\n <div v-if=\"multiple\" class=\"el-select-v2__selection\">\n <template v-if=\"collapseTags && modelValue.length > 0\">\n <div class=\"el-select-v2__selected-item\">\n <ps-tag\n :closable=\"!selectDisabled && !states.cachedOptions[0]?.disable\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >{{ states.cachedOptions[0].label }}</span\n >\n </ps-tag>\n <ps-tag\n v-if=\"modelValue.length > 1\"\n :closable=\"false\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >+ {{ modelValue.length - 1 }}</span\n >\n </ps-tag>\n </div>\n </template>\n\n <template v-else>\n <div\n v-for=\"(selected, idx) in states.cachedOptions\"\n :key=\"idx\"\n class=\"el-select-v2__selected-item\"\n >\n <ps-tag\n :key=\"getValueKey(selected)\"\n :closable=\"!selectDisabled && !selected.disabled\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >{{ getLabel(selected) }}</span\n >\n </ps-tag>\n </div>\n </template>\n <div\n class=\"el-select-v2__selected-item el-select-v2__input-wrapper\"\n :style=\"inputWrapperStyle\"\n >\n <input\n :id=\"id\"\n ref=\"inputRef\"\n :autocomplete=\"autocomplete\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n autocapitalize=\"off\"\n :aria-expanded=\"expanded\"\n :aria-labelledby=\"label\"\n class=\"el-select-v2__combobox-input\"\n :class=\"[selectSize ? `is-${selectSize}` : '']\"\n :disabled=\"disabled\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n type=\"text\"\n :name=\"name\"\n :unselectable=\"expanded ? 'on' : undefined\"\n />\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n class=\"el-select-v2__input-calculator\"\n v-text=\"states.displayInputValue\"\n >\n </span>\n </div>\n </div>\n <template v-else>\n <div class=\"el-select-v2__selected-item el-select-v2__input-wrapper\">\n <input\n :id=\"id\"\n ref=\"inputRef\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n :aria-labelledby=\"label\"\n :aria-expanded=\"expanded\"\n autocapitalize=\"off\"\n :autocomplete=\"autocomplete\"\n class=\"el-select-v2__combobox-input\"\n :disabled=\"disabled\"\n :name=\"name\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n type=\"text\"\n :unselectable=\"expanded ? 'on' : undefined\"\n />\n </div>\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n class=\"el-select-v2__selected-item el-select-v2__input-calculator\"\n v-text=\"states.displayInputValue\"\n ></span>\n </template>\n <span\n v-if=\"shouldShowPlaceholder\"\n :class=\"{\n 'el-select-v2__placeholder': true,\n 'is-transparent':\n states.isComposing ||\n (placeholder && multiple ? modelValue.length === 0 : !modelValue),\n }\"\n >{{ currentPlaceholder }}</span\n >\n <span class=\"el-select-v2__suffix\">\n <ps-icon\n v-if=\"iconComponent\"\n v-show=\"!showClearBtn\"\n :class=\"['el-select-v2__caret', 'el-input__icon', iconReverse]\"\n >\n <component :is=\"iconComponent\" />\n </ps-icon>\n <ps-icon\n v-if=\"showClearBtn && clearIcon\"\n class=\"el-select-v2__caret el-input__icon\"\n >\n <component :is=\"clearIcon\" />\n </ps-icon>\n </span>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, provide, toRefs, reactive } from 'vue'\nimport PsTag from '@element-ps/components/tag'\nimport useSelect from './useSelect'\nimport { selectV2InjectionKey } from './token'\nimport { SelectProps } from './defaults'\nimport PsIcon from '@element-ps/components/icon'\n\nexport default defineComponent({\n name: 'PsSelectV2',\n components: {\n PsTag,\n PsIcon\n },\n props: SelectProps,\n setup(props, { emit }) {\n const API = useSelect(props, emit)\n // TODO, remove the any cast to align the actual API.\n provide(selectV2InjectionKey, {\n props: reactive({\n ...toRefs(props),\n }),\n } as any)\n\n return API\n },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot","_createVNode","_createBlock","_toDisplayString"],"mappings":";;;;;;;;;EAmB2B,OAAM;AAAA;;;EAElB,OAAM;AAAA;;;qBA0FR,OAAM;;;qBAsCP,OAAM;;;;;0BApJhBA;IACE,KAAI;AAAA,IACH,4BAAQ,qCAAgC,uBACnC;AAAA;IAENC;MACE,KAAI;AAAA,MACJ,2BAAM;;;;;;;MAQK,YAAO,2BAAlBD;QACEE;;MAES,kCAAXF,8BAAA;QACkB,qBAAgB,gBAAW,+BACzCA,8BAAA;UACEG;YACG,WAAW,2CAA0B,qBAAP,mBAAyB;AAAA,YACvD,MAAM;YACP,MAAK;AAAA,YACL,uBAAA;AAAA;iCAEA;cAAAF;gBACE,OAAM;AAAA,gBACL;;;qCAGG,YAAO,iBAAiB;;;;UAIxB,gBAAW,+BADnBG;;YAEG,UAAU;AAAA,YACV,MAAM;YACP,MAAK;AAAA,YACL,uBAAA;AAAA;iCAEA;cAAAH;gBACE,OAAM;AAAA,gBACL;;;iBAGA,2BAAK,gBAAW;;;;oCAOvBD,gEAC4B,YAAO,gBAAzB,UAAU;kCADpBA;YAEG,KAAK;AAAA,YACN,OAAM;AAAA;YAENG;cACG,KAAK,iBAAY;AAAA,cACjB,WAAW,wBAAmB,SAAS;AAAA,cACvC,MAAM;cACP,MAAK;AAAA,cACL,uBAAA;AAAA;mCAEA;gBAAAF;kBACE,OAAM;AAAA,kBACL;;;uCAGG,cAAS;;;;;;QAKrBA;UACE,OAAM;AAAA,UACL,0BAAO;;UAERA;YACG,IAAI;YACL,KAAI;AAAA,YACH,cAAc;YACf,qBAAkB;AAAA,YAClB,iBAAc;AAAA,YACd,gBAAe;AAAA,YACd,iBAAe;YACf,mBAAiB;YAClB,2BAAM,iCACG,wBAAmB;YAC3B,UAAU;YACX,MAAK;AAAA,YACJ,WAAW;YACZ,YAAW;AAAA,YACX,MAAK;AAAA,YACJ,MAAM;YACN,cAAc,uBAAkB;AAAA;UAG3B,oCADRD;;YAEE,KAAI;AAAA,YACJ,eAAY;AAAA,YACZ,OAAM;AAAA,yBACNK,gCAAe;AAAA;;8BAKrBL;QACEC,8BAAA;UACEA;YACG,IAAI;YACL,KAAI;AAAA,YACJ,qBAAkB;AAAA,YAClB,iBAAc;AAAA,YACb,mBAAiB;YACjB,iBAAe;YAChB,gBAAe;AAAA,YACd,cAAc;YACf,OAAM;AAAA,YACL,UAAU;YACV,MAAM;YACP,MAAK;AAAA,YACJ,WAAW;YACZ,YAAW;AAAA,YACX,MAAK;AAAA,YACJ,cAAc,uBAAkB;AAAA;;QAI7B,oCADRD;;UAEE,KAAI;AAAA,UACJ,eAAY;AAAA,UACZ,OAAM;AAAA,uBACNK,gCAAe;AAAA;;MAIX,+CADRL;;QAEG;;;;6BAMG;MAENC,+BAAA;QAEU,0DADRG;;UAGG,oEAAiD;;+BAElD;8BAAAA,4CAAgB;;;;uBAHP;;QAMH,qBAAgB,mCADxBA;;UAEE,OAAM;AAAA;+BAEN;8BAAAA,4CAAgB;;;;;;;;;;;"}
1
+ {"version":3,"file":"select.vue_vue&type=template&id=13e598a4&lang.js","sources":["../../../../../../../packages/components/select-v2/src/select.vue?vue&type=template&id=13e598a4&lang.js"],"sourcesContent":["<template>\n <div\n ref=\"selectRef\"\n :class=\"[selectSize ? 'el-select-v2--' + selectSize : '']\"\n class=\"el-select-v2\"\n >\n <div\n ref=\"selectionRef\"\n class=\"el-select-v2__wrapper\"\n :class=\"{\n 'is-focused': states.isComposing,\n 'is-hovering': states.comboBoxHovering,\n 'is-filterable': filterable,\n 'is-disabled': disabled,\n }\"\n >\n <div v-if=\"$slots.prefix\">\n <slot name=\"prefix\"></slot>\n </div>\n <div v-if=\"multiple\" class=\"el-select-v2__selection\">\n <template v-if=\"collapseTags && _modelValue.length > 0\">\n <div class=\"el-select-v2__selected-item\">\n <ps-tag\n :closable=\"!selectDisabled && !states.cachedOptions[0]?.disable\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >{{ states.cachedOptions[0].label }}</span\n >\n </ps-tag>\n <ps-tag\n v-if=\"_modelValue.length > 1\"\n :closable=\"false\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >+ {{ _modelValue.length - 1 }}</span\n >\n </ps-tag>\n </div>\n </template>\n\n <template v-else>\n <div\n v-for=\"(selected, idx) in states.cachedOptions\"\n :key=\"idx\"\n class=\"el-select-v2__selected-item\"\n >\n <ps-tag\n :key=\"getValueKey(selected)\"\n :closable=\"!selectDisabled && !selected.disabled\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >{{ getLabel(selected) }}</span\n >\n </ps-tag>\n </div>\n </template>\n <div\n class=\"el-select-v2__selected-item el-select-v2__input-wrapper\"\n :style=\"inputWrapperStyle\"\n >\n <input\n :id=\"id\"\n ref=\"inputRef\"\n :autocomplete=\"autocomplete\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n autocapitalize=\"off\"\n :aria-expanded=\"expanded\"\n :aria-labelledby=\"label\"\n class=\"el-select-v2__combobox-input\"\n :class=\"[selectSize ? `is-${selectSize}` : '']\"\n :disabled=\"disabled\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n type=\"text\"\n :name=\"name\"\n :unselectable=\"expanded ? 'on' : undefined\"\n />\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n class=\"el-select-v2__input-calculator\"\n v-text=\"states.displayInputValue\"\n >\n </span>\n </div>\n </div>\n <template v-else>\n <div class=\"el-select-v2__selected-item el-select-v2__input-wrapper\">\n <input\n :id=\"id\"\n ref=\"inputRef\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n :aria-labelledby=\"label\"\n :aria-expanded=\"expanded\"\n autocapitalize=\"off\"\n :autocomplete=\"autocomplete\"\n class=\"el-select-v2__combobox-input\"\n :disabled=\"disabled\"\n :name=\"name\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n type=\"text\"\n :unselectable=\"expanded ? 'on' : undefined\"\n />\n </div>\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n class=\"el-select-v2__selected-item el-select-v2__input-calculator\"\n v-text=\"states.displayInputValue\"\n ></span>\n </template>\n <span\n v-if=\"shouldShowPlaceholder\"\n :class=\"{\n 'el-select-v2__placeholder': true,\n 'is-transparent':\n states.isComposing ||\n (placeholder && multiple ? _modelValue.length === 0 : !_modelValue),\n }\"\n >{{ currentPlaceholder }}</span\n >\n <span class=\"el-select-v2__suffix\">\n <ps-icon\n v-if=\"iconComponent\"\n v-show=\"!showClearBtn\"\n :class=\"['el-select-v2__caret', 'el-input__icon', iconReverse]\"\n >\n <component :is=\"iconComponent\" />\n </ps-icon>\n <ps-icon\n v-if=\"showClearBtn && clearIcon\"\n class=\"el-select-v2__caret el-input__icon\"\n >\n <component :is=\"clearIcon\" />\n </ps-icon>\n </span>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, provide, toRefs, reactive } from 'vue'\nimport PsTag from '@element-ps/components/tag'\nimport useSelect from './useSelect'\nimport { selectV2InjectionKey } from './token'\nimport { SelectProps } from './defaults'\nimport PsIcon from '@element-ps/components/icon'\n\nexport default defineComponent({\n name: 'PsSelectV2',\n components: {\n PsTag,\n PsIcon\n },\n props: SelectProps,\n setup(props, { emit }) {\n const API = useSelect(props, emit)\n provide(selectV2InjectionKey, {\n props: reactive({\n ...toRefs(props),\n }),\n } as any)\n\n return API\n },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot","_createVNode","_createBlock","_toDisplayString"],"mappings":";;;;;;;;;EAmB2B,OAAM;AAAA;;;EAElB,OAAM;AAAA;;;qBA0FR,OAAM;;;qBAsCP,OAAM;;;;;0BApJhBA;IACE,KAAI;AAAA,IACH,4BAAQ,qCAAgC,uBACnC;AAAA;IAENC;MACE,KAAI;AAAA,MACJ,2BAAM;;;;;;;MAQK,YAAO,2BAAlBD;QACEE;;MAES,kCAAXF,8BAAA;QACkB,qBAAgB,iBAAY,+BAC1CA,8BAAA;UACEG;YACG,WAAW,2CAA0B,qBAAP,mBAAyB;AAAA,YACvD,MAAM;YACP,MAAK;AAAA,YACL,uBAAA;AAAA;iCAEA;cAAAF;gBACE,OAAM;AAAA,gBACL;;;qCAGG,YAAO,iBAAiB;;;;UAIxB,iBAAY,+BADpBG;;YAEG,UAAU;AAAA,YACV,MAAM;YACP,MAAK;AAAA,YACL,uBAAA;AAAA;iCAEA;cAAAH;gBACE,OAAM;AAAA,gBACL;;;iBAGA,2BAAK,iBAAY;;;;oCAOxBD,gEAC4B,YAAO,gBAAzB,UAAU;kCADpBA;YAEG,KAAK;AAAA,YACN,OAAM;AAAA;YAENG;cACG,KAAK,iBAAY;AAAA,cACjB,WAAW,wBAAmB,SAAS;AAAA,cACvC,MAAM;cACP,MAAK;AAAA,cACL,uBAAA;AAAA;mCAEA;gBAAAF;kBACE,OAAM;AAAA,kBACL;;;uCAGG,cAAS;;;;;;QAKrBA;UACE,OAAM;AAAA,UACL,0BAAO;;UAERA;YACG,IAAI;YACL,KAAI;AAAA,YACH,cAAc;YACf,qBAAkB;AAAA,YAClB,iBAAc;AAAA,YACd,gBAAe;AAAA,YACd,iBAAe;YACf,mBAAiB;YAClB,2BAAM,iCACG,wBAAmB;YAC3B,UAAU;YACX,MAAK;AAAA,YACJ,WAAW;YACZ,YAAW;AAAA,YACX,MAAK;AAAA,YACJ,MAAM;YACN,cAAc,uBAAkB;AAAA;UAG3B,oCADRD;;YAEE,KAAI;AAAA,YACJ,eAAY;AAAA,YACZ,OAAM;AAAA,yBACNK,gCAAe;AAAA;;8BAKrBL;QACEC,8BAAA;UACEA;YACG,IAAI;YACL,KAAI;AAAA,YACJ,qBAAkB;AAAA,YAClB,iBAAc;AAAA,YACb,mBAAiB;YACjB,iBAAe;YAChB,gBAAe;AAAA,YACd,cAAc;YACf,OAAM;AAAA,YACL,UAAU;YACV,MAAM;YACP,MAAK;AAAA,YACJ,WAAW;YACZ,YAAW;AAAA,YACX,MAAK;AAAA,YACJ,cAAc,uBAAkB;AAAA;;QAI7B,oCADRD;;UAEE,KAAI;AAAA,UACJ,eAAY;AAAA,UACZ,OAAM;AAAA,uBACNK,gCAAe;AAAA;;MAIX,+CADRL;;QAEG;;;;6BAMG;MAENC,+BAAA;QAEU,0DADRG;;UAGG,oEAAiD;;+BAElD;8BAAAA,4CAAgB;;;;uBAHP;;QAMH,qBAAgB,mCADxBA;;UAEE,OAAM;AAAA;+BAEN;8BAAAA,4CAAgB;;;;;;;;;;;"}
@@ -55,7 +55,7 @@ const useSelect = (props) => {
55
55
  const expanded = vue.ref(false);
56
56
  const selectDisabled = vue.computed(() => props.disabled || elForm.disabled);
57
57
  const showClearBtn = vue.computed(() => {
58
- const hasValue = props.multiple ? Array.isArray(props.modelValue) && props.modelValue.length > 0 : props.modelValue !== void 0 && props.modelValue !== null && props.modelValue !== "";
58
+ const hasValue = props.multiple ? Array.isArray(props._modelValue) && props._modelValue.length > 0 : props._modelValue !== void 0 && props._modelValue !== null && props._modelValue !== "";
59
59
  const criteria = props.clearable && !selectDisabled.value && states.comboBoxHovering && hasValue;
60
60
  return criteria;
61
61
  });
@@ -102,8 +102,8 @@ const useSelect = (props) => {
102
102
  };
103
103
  });
104
104
  const shouldShowPlaceholder = vue.computed(() => {
105
- if (shared.isArray(props.modelValue)) {
106
- return props.modelValue.length === 0 && !states.displayInputValue;
105
+ if (shared.isArray(props._modelValue)) {
106
+ return props._modelValue.length === 0 && !states.displayInputValue;
107
107
  }
108
108
  return props.filterable ? states.displayInputValue.length === 0 : true;
109
109
  });
@@ -113,10 +113,10 @@ const useSelect = (props) => {
113
113
  });
114
114
  const initStates = () => {
115
115
  if (props.multiple) {
116
- if (props.modelValue.length > 0) {
116
+ if (props._modelValue.length > 0) {
117
117
  let initHovering = false;
118
118
  states.cachedOptions.length = 0;
119
- props.modelValue.map((selected) => {
119
+ props._modelValue.map((selected) => {
120
120
  const itemIndex = filteredOptions.value.findIndex((option) => option.value === selected);
121
121
  if (~itemIndex) {
122
122
  states.cachedOptions.push(filteredOptions.value[itemIndex]);
@@ -127,13 +127,13 @@ const useSelect = (props) => {
127
127
  states.cachedOptions = [];
128
128
  }
129
129
  } else {
130
- if (props.modelValue) {
130
+ if (props._modelValue) {
131
131
  const options = filteredOptions.value;
132
- const selectedItemIndex = options.findIndex((o) => o.value === props.modelValue);
132
+ const selectedItemIndex = options.findIndex((o) => o.value === props._modelValue);
133
133
  if (~selectedItemIndex) {
134
134
  states.selectedLabel = options[selectedItemIndex].label;
135
135
  } else {
136
- states.selectedLabel = `${props.modelValue}`;
136
+ states.selectedLabel = `${props._modelValue}`;
137
137
  }
138
138
  } else {
139
139
  states.selectedLabel = "";
@@ -1 +1 @@
1
- {"version":3,"file":"useSelect.js","sources":["../../../../../../../packages/components/select-v2/src/useSelect.ts"],"sourcesContent":["import { computed, ref, reactive, inject, onMounted } from 'vue'\nimport { isArray } from '@vue/shared'\nimport { ArrowUp } from '@element-plus/icons'\nimport { elFormKey, elFormItemKey } from '@element-ps/tokens'\nimport { useLocaleInject } from '@element-ps/hooks'\nimport { useGlobalConfig } from '@element-ps/utils/util'\nimport { flattenOptions } from './util'\nimport type { SelectProps } from './defaults'\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-ps/tokens'\nimport type { OptionType, Option } from './select.types'\n\nconst DEFAULT_INPUT_PLACEHOLDER = ''\nconst MINIMUM_INPUT_WIDTH = 11\nconst TAG_BASE_WIDTH = {\n small: 42,\n mini: 33,\n}\n\nconst useSelect = (props: ExtractPropTypes<typeof SelectProps>) => {\n // inject\n const { t } = useLocaleInject()\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const $ELEMENT = useGlobalConfig()\n\n const states = reactive({\n inputValue: DEFAULT_INPUT_PLACEHOLDER,\n displayInputValue: DEFAULT_INPUT_PLACEHOLDER,\n calculatedWidth: 0,\n cachedPlaceholder: '',\n cachedOptions: [] as Option[],\n createdOptions: [] as Option[],\n createdLabel: '',\n createdSelected: false,\n currentPlaceholder: '',\n hoveringIndex: -1,\n comboBoxHovering: false,\n isOnComposition: false,\n isSilentBlur: false,\n isComposing: false,\n inputLength: 20,\n selectWidth: 200,\n initialInputHeight: 0,\n previousQuery: null,\n previousValue: '',\n query: '',\n selectedLabel: '',\n softFocus: false,\n tagInMultiLine: false,\n })\n\n // DOM & Component refs\n const inputRef = ref(null) // el-input ref\n const selectRef = ref(null)\n const selectionRef = ref(null) // tags ref\n const calculatorRef = ref<HTMLElement>(null as any as HTMLElement)\n\n // the controller of the expanded popup\n const expanded = ref(false)\n\n const selectDisabled = computed(() => props.disabled || elForm.disabled)\n\n const showClearBtn = computed(() => {\n const hasValue = props.multiple\n ? Array.isArray(props.modelValue) && props.modelValue.length > 0\n : props.modelValue !== undefined &&\n props.modelValue !== null &&\n props.modelValue !== ''\n\n const criteria =\n props.clearable &&\n !selectDisabled.value &&\n states.comboBoxHovering &&\n hasValue\n return criteria\n })\n\n const iconComponent = computed(() =>\n props.remote && props.filterable ? '' : ArrowUp\n )\n\n const iconReverse = computed(() =>\n iconComponent.value && expanded.value ? 'is-reverse' : ''\n )\n\n const filteredOptions = computed(() => {\n const isValidOption = (o: Option): boolean => {\n // fill the conditions here.\n const query = states.inputValue\n // when query was given, we should test on the label see whether the label contains the given query\n const containsQueryString = query ? o.label.includes(query) : true\n return containsQueryString\n }\n if (props.loading) {\n return []\n }\n return flattenOptions(\n (props.options as OptionType[])\n .concat(states.createdOptions)\n .map((v) => {\n if (isArray(v.options)) {\n const filtered = v.options.filter(isValidOption)\n if (filtered.length > 0) {\n return {\n ...v,\n options: filtered,\n }\n }\n } else {\n if (props.remote || isValidOption(v as Option)) {\n return v\n }\n }\n return null\n })\n .filter((v) => v !== null) as any\n )\n })\n\n const selectSize = computed(\n () => props.size || elFormItem.size || $ELEMENT.size\n )\n\n const collapseTagSize = computed(() =>\n ['small', 'mini'].indexOf(selectSize.value) > -1 ? 'mini' : 'small'\n )\n\n const tagMaxWidth = computed(() => {\n const select = selectionRef.value\n const size = collapseTagSize.value\n const paddingLeft = select\n ? parseInt(getComputedStyle(select).paddingLeft)\n : 0\n const paddingRight = select\n ? parseInt(getComputedStyle(select).paddingRight)\n : 0\n return (\n states.selectWidth - paddingRight - paddingLeft - TAG_BASE_WIDTH[size]\n )\n })\n\n const inputWrapperStyle = computed(() => {\n return {\n width: `${\n states.calculatedWidth === 0\n ? MINIMUM_INPUT_WIDTH\n : Math.ceil(states.calculatedWidth) + MINIMUM_INPUT_WIDTH\n }px`,\n } as CSSProperties\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (isArray(props.modelValue)) {\n return props.modelValue.length === 0 && !states.displayInputValue\n }\n\n // when it's not multiple mode, we only determine this flag based on filterable and expanded\n // when filterable flag is true, which means we have input box on the screen\n return props.filterable ? states.displayInputValue.length === 0 : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder || t('el.select.placeholder')\n return props.multiple ? _placeholder : states.selectedLabel || _placeholder\n })\n\n const initStates = () => {\n if (props.multiple) {\n if ((props.modelValue as Array<any>).length > 0) {\n let initHovering = false\n states.cachedOptions.length = 0\n ;(props.modelValue as Array<any>).map((selected) => {\n const itemIndex = filteredOptions.value.findIndex(\n (option) => (option as any).value === selected\n )\n if (~itemIndex) {\n states.cachedOptions.push(\n filteredOptions.value[itemIndex] as Option\n )\n initHovering = true\n }\n })\n } else {\n states.cachedOptions = []\n }\n } else {\n if (props.modelValue) {\n const options = filteredOptions.value\n const selectedItemIndex = options.findIndex(\n (o) => (o as any).value === props.modelValue\n )\n if (~selectedItemIndex) {\n states.selectedLabel = (options[selectedItemIndex] as any).label\n } else {\n states.selectedLabel = `${props.modelValue}`\n }\n } else {\n states.selectedLabel = ''\n }\n }\n }\n\n onMounted(() => {\n initStates()\n })\n\n return {\n // data exports\n collapseTagSize,\n currentPlaceholder,\n expanded,\n iconComponent,\n iconReverse,\n inputWrapperStyle,\n // readonly,\n shouldShowPlaceholder,\n selectDisabled,\n selectSize,\n showClearBtn,\n states,\n tagMaxWidth,\n\n // refs items exports\n calculatorRef,\n inputRef,\n selectRef,\n selectionRef,\n }\n}\n\nexport default useSelect\n"],"names":["useLocaleInject","inject","elFormKey","elFormItemKey","useGlobalConfig","reactive","ref","computed","ArrowUp","flattenOptions","isArray"],"mappings":"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"}
1
+ {"version":3,"file":"useSelect.js","sources":["../../../../../../../packages/components/select-v2/src/useSelect.ts"],"sourcesContent":["import { computed, ref, reactive, inject, onMounted } from 'vue'\nimport { isArray } from '@vue/shared'\nimport { ArrowUp } from '@element-plus/icons'\nimport { elFormKey, elFormItemKey } from '@element-ps/tokens'\nimport { useLocaleInject } from '@element-ps/hooks'\nimport { useGlobalConfig } from '@element-ps/utils/util'\nimport { flattenOptions } from './util'\nimport type { SelectProps } from './defaults'\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-ps/tokens'\nimport type { OptionType, Option } from './select.types'\n\nconst DEFAULT_INPUT_PLACEHOLDER = ''\nconst MINIMUM_INPUT_WIDTH = 11\nconst TAG_BASE_WIDTH = {\n small: 42,\n mini: 33,\n}\n\nconst useSelect = (props: ExtractPropTypes<typeof SelectProps>) => {\n // inject\n const { t } = useLocaleInject()\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const $ELEMENT = useGlobalConfig()\n\n const states = reactive({\n inputValue: DEFAULT_INPUT_PLACEHOLDER,\n displayInputValue: DEFAULT_INPUT_PLACEHOLDER,\n calculatedWidth: 0,\n cachedPlaceholder: '',\n cachedOptions: [] as Option[],\n createdOptions: [] as Option[],\n createdLabel: '',\n createdSelected: false,\n currentPlaceholder: '',\n hoveringIndex: -1,\n comboBoxHovering: false,\n isOnComposition: false,\n isSilentBlur: false,\n isComposing: false,\n inputLength: 20,\n selectWidth: 200,\n initialInputHeight: 0,\n previousQuery: null,\n previousValue: '',\n query: '',\n selectedLabel: '',\n softFocus: false,\n tagInMultiLine: false,\n })\n\n // DOM & Component refs\n const inputRef = ref(null) // el-input ref\n const selectRef = ref(null)\n const selectionRef = ref(null) // tags ref\n const calculatorRef = ref<HTMLElement>(null as any as HTMLElement)\n\n // the controller of the expanded popup\n const expanded = ref(false)\n\n const selectDisabled = computed(() => props.disabled || elForm.disabled)\n\n const showClearBtn = computed(() => {\n const hasValue = props.multiple\n ? Array.isArray(props._modelValue) && props._modelValue.length > 0\n : props._modelValue !== undefined &&\n props._modelValue !== null &&\n props._modelValue !== ''\n\n const criteria =\n props.clearable &&\n !selectDisabled.value &&\n states.comboBoxHovering &&\n hasValue\n return criteria\n })\n\n const iconComponent = computed(() =>\n props.remote && props.filterable ? '' : ArrowUp\n )\n\n const iconReverse = computed(() =>\n iconComponent.value && expanded.value ? 'is-reverse' : ''\n )\n\n const filteredOptions = computed(() => {\n const isValidOption = (o: Option): boolean => {\n // fill the conditions here.\n const query = states.inputValue\n // when query was given, we should test on the label see whether the label contains the given query\n const containsQueryString = query ? o.label.includes(query) : true\n return containsQueryString\n }\n if (props.loading) {\n return []\n }\n return flattenOptions(\n (props.options as OptionType[])\n .concat(states.createdOptions)\n .map((v) => {\n if (isArray(v.options)) {\n const filtered = v.options.filter(isValidOption)\n if (filtered.length > 0) {\n return {\n ...v,\n options: filtered,\n }\n }\n } else {\n if (props.remote || isValidOption(v as Option)) {\n return v\n }\n }\n return null\n })\n .filter((v) => v !== null) as any\n )\n })\n\n const selectSize = computed(\n () => props.size || elFormItem.size || $ELEMENT.size\n )\n\n const collapseTagSize = computed(() =>\n ['small', 'mini'].indexOf(selectSize.value) > -1 ? 'mini' : 'small'\n )\n\n const tagMaxWidth = computed(() => {\n const select = selectionRef.value\n const size = collapseTagSize.value\n const paddingLeft = select\n ? parseInt(getComputedStyle(select).paddingLeft)\n : 0\n const paddingRight = select\n ? parseInt(getComputedStyle(select).paddingRight)\n : 0\n return (\n states.selectWidth - paddingRight - paddingLeft - TAG_BASE_WIDTH[size]\n )\n })\n\n const inputWrapperStyle = computed(() => {\n return {\n width: `${\n states.calculatedWidth === 0\n ? MINIMUM_INPUT_WIDTH\n : Math.ceil(states.calculatedWidth) + MINIMUM_INPUT_WIDTH\n }px`,\n } as CSSProperties\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (isArray(props._modelValue)) {\n return props._modelValue.length === 0 && !states.displayInputValue\n }\n\n // when it's not multiple mode, we only determine this flag based on filterable and expanded\n // when filterable flag is true, which means we have input box on the screen\n return props.filterable ? states.displayInputValue.length === 0 : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder || t('el.select.placeholder')\n return props.multiple ? _placeholder : states.selectedLabel || _placeholder\n })\n\n const initStates = () => {\n if (props.multiple) {\n if ((props._modelValue as Array<any>).length > 0) {\n let initHovering = false\n states.cachedOptions.length = 0\n ;(props._modelValue as Array<any>).map((selected) => {\n const itemIndex = filteredOptions.value.findIndex(\n (option) => (option as any).value === selected\n )\n if (~itemIndex) {\n states.cachedOptions.push(\n filteredOptions.value[itemIndex] as Option\n )\n initHovering = true\n }\n })\n } else {\n states.cachedOptions = []\n }\n } else {\n if (props._modelValue) {\n const options = filteredOptions.value\n const selectedItemIndex = options.findIndex(\n (o) => (o as any).value === props._modelValue\n )\n if (~selectedItemIndex) {\n states.selectedLabel = (options[selectedItemIndex] as any).label\n } else {\n states.selectedLabel = `${props._modelValue}`\n }\n } else {\n states.selectedLabel = ''\n }\n }\n }\n\n onMounted(() => {\n initStates()\n })\n\n return {\n // data exports\n collapseTagSize,\n currentPlaceholder,\n expanded,\n iconComponent,\n iconReverse,\n inputWrapperStyle,\n // readonly,\n shouldShowPlaceholder,\n selectDisabled,\n selectSize,\n showClearBtn,\n states,\n tagMaxWidth,\n\n // refs items exports\n calculatorRef,\n inputRef,\n selectRef,\n selectionRef,\n }\n}\n\nexport default useSelect\n"],"names":["useLocaleInject","inject","elFormKey","elFormItemKey","useGlobalConfig","reactive","ref","computed","ArrowUp","flattenOptions","isArray"],"mappings":"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"}
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var withInstall = require('../../utils/with-install.js');
6
- require('./src/tag2.js');
7
- var tag = require('./src/tag.js');
6
+ require('./src/tag.js');
7
+ var tag = require('./src/tag2.js');
8
8
  var tag_vue_vue_type_script_lang = require('./src/tag.vue_vue&type=script&lang.js');
9
9
 
10
10
  const PsTag = withInstall.withInstall(tag_vue_vue_type_script_lang["default"]);
@@ -2,31 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var props = require('../../../utils/props.js');
5
+ var tag_vue_vue_type_script_lang = require('./tag.vue_vue&type=script&lang.js');
6
+ var tag_vue_vue_type_template_id_525996c5_lang = require('./tag.vue_vue&type=template&id=525996c5&lang.js');
6
7
 
7
- const tagProps = props.buildProps({
8
- closable: Boolean,
9
- type: {
10
- type: String,
11
- values: ["success", "info", "warning", "danger", ""],
12
- default: ""
13
- },
14
- hit: Boolean,
15
- disableTransitions: Boolean,
16
- color: {
17
- type: String,
18
- default: ""
19
- },
20
- size: {
21
- type: String,
22
- values: ["large", "medium", "small", "mini"]
23
- },
24
- effect: {
25
- type: String,
26
- values: ["dark", "light", "plain"],
27
- default: "light"
28
- }
29
- });
8
+ tag_vue_vue_type_script_lang["default"].render = tag_vue_vue_type_template_id_525996c5_lang.render;
9
+ tag_vue_vue_type_script_lang["default"].__file = "packages/components/tag/src/tag.vue";
30
10
 
31
- exports.tagProps = tagProps;
11
+ exports["default"] = tag_vue_vue_type_script_lang["default"];
32
12
  //# sourceMappingURL=tag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","sources":["../../../../../../../packages/components/tag/src/tag.ts"],"sourcesContent":["import { buildProps } from '@element-ps/utils/props'\n\nimport type { ExtractPropTypes } from 'vue'\n\nexport const tagProps = buildProps({\n closable: Boolean,\n type: {\n type: String,\n values: ['success', 'info', 'warning', 'danger', ''],\n default: '',\n },\n hit: Boolean,\n disableTransitions: Boolean,\n color: {\n type: String,\n default: '',\n },\n size: {\n type: String,\n values: ['large', 'medium', 'small', 'mini'],\n },\n effect: {\n type: String,\n values: ['dark', 'light', 'plain'],\n default: 'light',\n },\n} as const)\nexport type TagProps = ExtractPropTypes<typeof tagProps>\n"],"names":["buildProps"],"mappings":";;;;;;MAIa,WAAWA,iBAAW;AAAA,EACjC,UAAU;AAAA,EACV,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,QAAQ,CAAC,WAAW,QAAQ,WAAW,UAAU;AAAA,IACjD,SAAS;AAAA;AAAA,EAEX,KAAK;AAAA,EACL,oBAAoB;AAAA,EACpB,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,QAAQ,CAAC,SAAS,UAAU,SAAS;AAAA;AAAA,EAEvC,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC,QAAQ,SAAS;AAAA,IAC1B,SAAS;AAAA;AAAA;;;;"}
1
+ {"version":3,"file":"tag.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -6,7 +6,7 @@ var vue = require('vue');
6
6
  var index = require('../../icon/index.js');
7
7
  var util = require('../../../utils/util.js');
8
8
  var icons = require('@element-plus/icons');
9
- var tag = require('./tag.js');
9
+ var tag = require('./tag2.js');
10
10
 
11
11
  var script = vue.defineComponent({
12
12
  name: "PsTag",
@@ -2,11 +2,31 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tag_vue_vue_type_script_lang = require('./tag.vue_vue&type=script&lang.js');
6
- var tag_vue_vue_type_template_id_525996c5_lang = require('./tag.vue_vue&type=template&id=525996c5&lang.js');
5
+ var props = require('../../../utils/props.js');
7
6
 
8
- tag_vue_vue_type_script_lang["default"].render = tag_vue_vue_type_template_id_525996c5_lang.render;
9
- tag_vue_vue_type_script_lang["default"].__file = "packages/components/tag/src/tag.vue";
7
+ const tagProps = props.buildProps({
8
+ closable: Boolean,
9
+ type: {
10
+ type: String,
11
+ values: ["success", "info", "warning", "danger", ""],
12
+ default: ""
13
+ },
14
+ hit: Boolean,
15
+ disableTransitions: Boolean,
16
+ color: {
17
+ type: String,
18
+ default: ""
19
+ },
20
+ size: {
21
+ type: String,
22
+ values: ["large", "medium", "small", "mini"]
23
+ },
24
+ effect: {
25
+ type: String,
26
+ values: ["dark", "light", "plain"],
27
+ default: "light"
28
+ }
29
+ });
10
30
 
11
- exports["default"] = tag_vue_vue_type_script_lang["default"];
31
+ exports.tagProps = tagProps;
12
32
  //# sourceMappingURL=tag2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tag2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
1
+ {"version":3,"file":"tag2.js","sources":["../../../../../../../packages/components/tag/src/tag.ts"],"sourcesContent":["import { buildProps } from '@element-ps/utils/props'\n\nimport type { ExtractPropTypes } from 'vue'\n\nexport const tagProps = buildProps({\n closable: Boolean,\n type: {\n type: String,\n values: ['success', 'info', 'warning', 'danger', ''],\n default: '',\n },\n hit: Boolean,\n disableTransitions: Boolean,\n color: {\n type: String,\n default: '',\n },\n size: {\n type: String,\n values: ['large', 'medium', 'small', 'mini'],\n },\n effect: {\n type: String,\n values: ['dark', 'light', 'plain'],\n default: 'light',\n },\n} as const)\nexport type TagProps = ExtractPropTypes<typeof tagProps>\n"],"names":["buildProps"],"mappings":";;;;;;MAIa,WAAWA,iBAAW;AAAA,EACjC,UAAU;AAAA,EACV,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,QAAQ,CAAC,WAAW,QAAQ,WAAW,UAAU;AAAA,IACjD,SAAS;AAAA;AAAA,EAEX,KAAK;AAAA,EACL,oBAAoB;AAAA,EACpB,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,QAAQ,CAAC,SAAS,UAAU,SAAS;AAAA;AAAA,EAEvC,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC,QAAQ,SAAS;AAAA,IAC1B,SAAS;AAAA;AAAA;;;;"}
package/lib/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const version = "1.0.7";
1
+ export declare const version = "1.0.15";
package/lib/version.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const version = "1.0.7";
5
+ const version = "1.0.15";
6
6
 
7
7
  exports.version = version;
8
8
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../../../packages/element-ps/version.ts"],"sourcesContent":["export const version = '1.0.7'\n"],"names":[],"mappings":";;;;MAAa,UAAU;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../../../packages/element-ps/version.ts"],"sourcesContent":["export const version = '1.0.15'\n"],"names":[],"mappings":";;;;MAAa,UAAU;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "element-ps",
3
- "version": "1.0.14",
3
+ "version": "1.0.17",
4
4
  "description": "A Component Library for Vue 3",
5
5
  "homepage": "https://element-plus.org/",
6
6
  "keywords": [
package/web-types.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json","framework":"vue","name":"element-ps","version":"1.0.14","contributions":{"html":{"types-syntax":"typescript","description-markup":"markdown"}}}
1
+ {"$schema":"https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json","framework":"vue","name":"element-ps","version":"1.0.17","contributions":{"html":{"types-syntax":"typescript","description-markup":"markdown"}}}
@@ -1,141 +0,0 @@
1
- import type { PropType, Component } from 'vue';
2
- declare const _default: import("vue").DefineComponent<{
3
- modelValue: {
4
- type: NumberConstructor;
5
- default: number;
6
- };
7
- lowThreshold: {
8
- type: NumberConstructor;
9
- default: number;
10
- };
11
- highThreshold: {
12
- type: NumberConstructor;
13
- default: number;
14
- };
15
- max: {
16
- type: NumberConstructor;
17
- default: number;
18
- };
19
- colors: {
20
- type: (ObjectConstructor | ArrayConstructor)[];
21
- default: () => string[];
22
- };
23
- voidColor: {
24
- type: StringConstructor;
25
- default: string;
26
- };
27
- disabledVoidColor: {
28
- type: StringConstructor;
29
- default: string;
30
- };
31
- icons: {
32
- type: PropType<string[] | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
33
- default: () => import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{}>, {}>[];
34
- };
35
- voidIcon: {
36
- type: PropType<string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
37
- default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{}>, {}>;
38
- };
39
- disabledvoidIcon: {
40
- type: PropType<string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
41
- default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{}>, {}>;
42
- };
43
- disabled: {
44
- type: BooleanConstructor;
45
- default: boolean;
46
- };
47
- allowHalf: {
48
- type: BooleanConstructor;
49
- default: boolean;
50
- };
51
- showText: {
52
- type: BooleanConstructor;
53
- default: boolean;
54
- };
55
- showScore: {
56
- type: BooleanConstructor;
57
- default: boolean;
58
- };
59
- textColor: {
60
- type: StringConstructor;
61
- default: string;
62
- };
63
- texts: {
64
- type: PropType<string[]>;
65
- default: () => string[];
66
- };
67
- scoreTemplate: {
68
- type: StringConstructor;
69
- default: string;
70
- };
71
- }, {
72
- hoverIndex: import("vue").Ref<number>;
73
- currentValue: import("vue").Ref<number>;
74
- rateDisabled: import("vue").ComputedRef<boolean | undefined>;
75
- text: import("vue").ComputedRef<string>;
76
- decimalStyle: import("vue").ComputedRef<{
77
- color: any;
78
- width: string;
79
- }>;
80
- decimalIconComponent: import("vue").ComputedRef<any>;
81
- iconComponents: import("vue").ComputedRef<any[]>;
82
- showDecimalIcon: (item: number) => boolean;
83
- getIconStyle: (item: number) => {
84
- color: any;
85
- };
86
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
87
- modelValue?: unknown;
88
- lowThreshold?: unknown;
89
- highThreshold?: unknown;
90
- max?: unknown;
91
- colors?: unknown;
92
- voidColor?: unknown;
93
- disabledVoidColor?: unknown;
94
- icons?: unknown;
95
- voidIcon?: unknown;
96
- disabledvoidIcon?: unknown;
97
- disabled?: unknown;
98
- allowHalf?: unknown;
99
- showText?: unknown;
100
- showScore?: unknown;
101
- textColor?: unknown;
102
- texts?: unknown;
103
- scoreTemplate?: unknown;
104
- } & {
105
- disabled: boolean;
106
- modelValue: number;
107
- max: number;
108
- textColor: string;
109
- showText: boolean;
110
- lowThreshold: number;
111
- highThreshold: number;
112
- colors: Record<string, any> | unknown[];
113
- voidColor: string;
114
- disabledVoidColor: string;
115
- icons: string[] | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
116
- voidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
117
- disabledvoidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
118
- allowHalf: boolean;
119
- showScore: boolean;
120
- texts: string[];
121
- scoreTemplate: string;
122
- } & {}>, {
123
- disabled: boolean;
124
- modelValue: number;
125
- max: number;
126
- textColor: string;
127
- showText: boolean;
128
- lowThreshold: number;
129
- highThreshold: number;
130
- colors: Record<string, any> | unknown[];
131
- voidColor: string;
132
- disabledVoidColor: string;
133
- icons: string[] | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
134
- voidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
135
- disabledvoidIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
136
- allowHalf: boolean;
137
- showScore: boolean;
138
- texts: string[];
139
- scoreTemplate: string;
140
- }>;
141
- export default _default;
@@ -1,7 +0,0 @@
1
- import script from './index.vue_vue&type=script&lang.mjs';
2
- export { default } from './index.vue_vue&type=script&lang.mjs';
3
- import { render } from './index.vue_vue&type=template&id=55b4fa7d&lang.mjs';
4
-
5
- script.render = render;
6
- script.__file = "packages/components/rate/src/index.vue";
7
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.vue_vue&type=script&lang.mjs","sources":["../../../../../../../packages/components/rate/src/index.vue"],"sourcesContent":["<template>\n <div\n class=\"el-rate\"\n role=\"slider\"\n :aria-valuenow=\"currentValue\"\n :aria-valuetext=\"text\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n tabindex=\"0\"\n >\n <span\n v-for=\"(item, key) in max\"\n :key=\"key\"\n class=\"el-rate__item\"\n :style=\"{ cursor: rateDisabled ? 'auto' : 'pointer' }\"\n >\n <ps-icon\n :class=\"[{ hover: hoverIndex === item }]\"\n class=\"el-rate__icon\"\n :style=\"getIconStyle(item)\"\n >\n <component :is=\"iconComponents[item - 1]\" />\n <ps-icon\n v-if=\"showDecimalIcon(item)\"\n :style=\"decimalStyle\"\n class=\"el-rate__icon el-rate__decimal\"\n >\n <component :is=\"decimalIconComponent\" />\n </ps-icon>\n </ps-icon>\n </span>\n <span\n v-if=\"showText || showScore\"\n class=\"el-rate__text\"\n :style=\"{ color: textColor }\"\n >{{ text }}</span\n >\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, ref } from 'vue'\nimport { isObject, isArray } from '@vue/shared'\nimport { elFormKey } from '@element-ps/tokens'\nimport { PsIcon } from '@element-ps/components/icon'\nimport { StarFilled, Star } from '@element-plus/icons'\n\nimport type { PropType, Component } from 'vue'\nimport type { ElFormContext } from '@element-ps/tokens'\n\nexport default defineComponent({\n name: 'PsRate',\n components: { PsIcon, StarFilled, Star },\n props: {\n modelValue: {\n type: Number,\n default: 0,\n },\n lowThreshold: {\n type: Number,\n default: 2,\n },\n highThreshold: {\n type: Number,\n default: 4,\n },\n max: {\n type: Number,\n default: 5,\n },\n colors: {\n type: [Array, Object],\n default: () => ['#F7BA2A', '#F7BA2A', '#F7BA2A'],\n },\n voidColor: {\n type: String,\n default: '#C6D1DE',\n },\n disabledVoidColor: {\n type: String,\n default: '#EFF2F7',\n },\n icons: {\n type: [Array, Object] as PropType<string[] | Component>,\n default: () => [StarFilled, StarFilled, StarFilled],\n },\n voidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Star,\n },\n disabledvoidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: StarFilled,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n allowHalf: {\n type: Boolean,\n default: false,\n },\n showText: {\n type: Boolean,\n default: false,\n },\n showScore: {\n type: Boolean,\n default: false,\n },\n textColor: {\n type: String,\n default: '#1f2d3d',\n },\n texts: {\n type: Array as PropType<string[]>,\n default: () => [\n 'Extremely bad',\n 'Disappointed',\n 'Fair',\n 'Satisfied',\n 'Surprise',\n ],\n },\n scoreTemplate: {\n type: String,\n default: '{value}',\n },\n },\n setup(props) {\n const elForm = inject(elFormKey, {} as ElFormContext)\n\n const currentValue = ref(props.modelValue)\n\n const rateDisabled = computed(() => props.disabled || elForm.disabled)\n\n const text = computed(() => {\n let result = ''\n if (props.showScore) {\n result = props.scoreTemplate.replace(\n /\\{\\s*value\\s*\\}/,\n rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n )\n } else if (props.showText) {\n result = props.texts[Math.ceil(currentValue.value) - 1]\n }\n return result\n })\n\n function getValueFromMap(value: unknown, map: Record<string, unknown>) {\n const matchedKeys = Object.keys(map)\n .filter((key) => {\n const val = map[key]\n const excluded = isObject(val) ? val.excluded : false\n return excluded ? value < key : value <= key\n })\n .sort((a: never, b: never) => a - b)\n const matchedValue = map[matchedKeys[0]]\n return isObject(matchedValue)\n ? matchedValue.value || matchedValue\n : matchedValue || ''\n }\n\n const valueDecimal = computed(\n () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n )\n const colorMap = computed(() =>\n isArray(props.colors)\n ? {\n [props.lowThreshold]: props.colors[0],\n [props.highThreshold]: { value: props.colors[1], excluded: true },\n [props.max]: props.colors[2],\n }\n : props.colors\n )\n const activeColor = computed(() =>\n getValueFromMap(currentValue.value, colorMap.value)\n )\n const decimalStyle = computed(() => {\n let width = ''\n if (rateDisabled.value) {\n width = `${valueDecimal.value}%`\n } else if (props.allowHalf) {\n width = '50%'\n }\n return {\n color: activeColor.value,\n width,\n }\n })\n\n const componentMap = computed(() =>\n isArray(props.icons)\n ? {\n [props.lowThreshold]: props.icons[0],\n [props.highThreshold]: {\n value: props.icons[1],\n excluded: true,\n },\n [props.max]: props.icons[2],\n }\n : props.icons\n )\n\n const decimalIconComponent = computed(() =>\n getValueFromMap(props.modelValue, componentMap.value)\n )\n const voidComponent = computed(() =>\n rateDisabled.value ? props.disabledvoidIcon : props.voidIcon\n )\n const activeComponent = computed(() =>\n getValueFromMap(currentValue.value, componentMap.value)\n )\n const iconComponents = computed(() => {\n const result = Array(props.max)\n const threshold = currentValue.value\n // if (props.allowHalf && currentValue.value !== Math.floor(currentValue.value)) {\n // threshold--\n // }\n result.fill(activeComponent.value, 0, threshold)\n result.fill(voidComponent.value, threshold, props.max)\n return result\n })\n\n const pointerAtLeftHalf = ref(true)\n\n function showDecimalIcon(item: number) {\n const showWhenDisabled =\n rateDisabled.value &&\n valueDecimal.value > 0 &&\n item - 1 < props.modelValue &&\n item > props.modelValue\n /* istanbul ignore next */\n const showWhenAllowHalf =\n props.allowHalf &&\n pointerAtLeftHalf.value &&\n item - 0.5 <= currentValue.value &&\n item > currentValue.value\n return showWhenDisabled || showWhenAllowHalf\n }\n\n function getIconStyle(item: number) {\n const voidColor = rateDisabled.value\n ? props.disabledVoidColor\n : props.voidColor\n return {\n color: item <= currentValue.value ? activeColor.value : voidColor,\n }\n }\n\n const hoverIndex = ref(-1)\n\n return {\n hoverIndex,\n\n currentValue,\n rateDisabled,\n text,\n decimalStyle,\n decimalIconComponent,\n iconComponents,\n\n showDecimalIcon,\n getIconStyle,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;;;AAiDA,aAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY,EAAE,QAAQ,YAAY;AAAA,EAClC,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,KAAK;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,QAAQ;AAAA,MACN,MAAM,CAAC,OAAO;AAAA,MACd,SAAS,MAAM,CAAC,WAAW,WAAW;AAAA;AAAA,IAExC,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,OAAO;AAAA,MACL,MAAM,CAAC,OAAO;AAAA,MACd,SAAS,MAAM,CAAC,YAAY,YAAY;AAAA;AAAA,IAE1C,UAAU;AAAA,MACR,MAAM,CAAC,QAAQ;AAAA,MACf,SAAS;AAAA;AAAA,IAEX,kBAAkB;AAAA,MAChB,MAAM,CAAC,QAAQ;AAAA,MACf,SAAS;AAAA;AAAA,IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA;AAAA,IAGJ,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA,EAGb,MAAM,OAAO;AACX,UAAM,SAAS,OAAO,WAAW;AAEjC,UAAM,eAAe,IAAI,MAAM;AAE/B,UAAM,eAAe,SAAS,MAAM,MAAM,YAAY,OAAO;AAE7D,UAAM,OAAO,SAAS,MAAM;AAC1B,UAAI,SAAS;AACb,UAAI,MAAM,WAAW;AACnB,iBAAS,MAAM,cAAc,QAC3B,mBACA,aAAa,QAAQ,GAAG,MAAM,eAAe,GAAG,aAAa;AAAA,iBAEtD,MAAM,UAAU;AACzB,iBAAS,MAAM,MAAM,KAAK,KAAK,aAAa,SAAS;AAAA;AAEvD,aAAO;AAAA;AAGT,6BAAyB,OAAgB,KAA8B;AACrE,YAAM,cAAc,OAAO,KAAK,KAC7B,OAAO,CAAC,QAAQ;AACf,cAAM,MAAM,IAAI;AAChB,cAAM,WAAW,SAAS,OAAO,IAAI,WAAW;AAChD,eAAO,WAAW,QAAQ,MAAM,SAAS;AAAA,SAE1C,KAAK,CAAC,GAAU,MAAa,IAAI;AACpC,YAAM,eAAe,IAAI,YAAY;AACrC,aAAO,SAAS,gBACZ,aAAa,SAAS,eACtB,gBAAgB;AAAA;AAGtB,UAAM,eAAe,SACnB,MAAM,MAAM,aAAa,MAAM,KAAK,MAAM,MAAM,cAAc;AAEhE,UAAM,WAAW,SAAS,MACxB,QAAQ,MAAM,UACV;AAAA,OACG,MAAM,eAAe,MAAM,OAAO;AAAA,OAClC,MAAM,gBAAgB,EAAE,OAAO,MAAM,OAAO,IAAI,UAAU;AAAA,OAC1D,MAAM,MAAM,MAAM,OAAO;AAAA,QAE5B,MAAM;AAEZ,UAAM,cAAc,SAAS,MAC3B,gBAAgB,aAAa,OAAO,SAAS;AAE/C,UAAM,eAAe,SAAS,MAAM;AAClC,UAAI,QAAQ;AACZ,UAAI,aAAa,OAAO;AACtB,gBAAQ,GAAG,aAAa;AAAA,iBACf,MAAM,WAAW;AAC1B,gBAAQ;AAAA;AAEV,aAAO;AAAA,QACL,OAAO,YAAY;AAAA,QACnB;AAAA;AAAA;AAIJ,UAAM,eAAe,SAAS,MAC5B,QAAQ,MAAM,SACV;AAAA,OACC,MAAM,eAAe,MAAM,MAAM;AAAA,OACjC,MAAM,gBAAgB;AAAA,QACrB,OAAO,MAAM,MAAM;AAAA,QACnB,UAAU;AAAA;AAAA,OAEX,MAAM,MAAM,MAAM,MAAM;AAAA,QAEzB,MAAM;AAGZ,UAAM,uBAAuB,SAAS,MACpC,gBAAgB,MAAM,YAAY,aAAa;AAEjD,UAAM,gBAAgB,SAAS,MAC7B,aAAa,QAAQ,MAAM,mBAAmB,MAAM;AAEtD,UAAM,kBAAkB,SAAS,MAC/B,gBAAgB,aAAa,OAAO,aAAa;AAEnD,UAAM,iBAAiB,SAAS,MAAM;AACpC,YAAM,SAAS,MAAM,MAAM;AAC3B,YAAM,YAAY,aAAa;AAI/B,aAAO,KAAK,gBAAgB,OAAO,GAAG;AACtC,aAAO,KAAK,cAAc,OAAO,WAAW,MAAM;AAClD,aAAO;AAAA;AAGT,UAAM,oBAAoB,IAAI;AAE9B,6BAAyB,MAAc;AACrC,YAAM,mBACJ,aAAa,SACb,aAAa,QAAQ,KACrB,OAAO,IAAI,MAAM,cACjB,OAAO,MAAM;AAEf,YAAM,oBACJ,MAAM,aACN,kBAAkB,SAClB,OAAO,OAAO,aAAa,SAC3B,OAAO,aAAa;AACtB,aAAO,oBAAoB;AAAA;AAG7B,0BAAsB,MAAc;AAClC,YAAM,YAAY,aAAa,QAC3B,MAAM,oBACN,MAAM;AACV,aAAO;AAAA,QACL,OAAO,QAAQ,aAAa,QAAQ,YAAY,QAAQ;AAAA;AAAA;AAI5D,UAAM,aAAa,IAAI;AAEvB,WAAO;AAAA,MACL;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA;AAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.vue_vue&type=template&id=55b4fa7d&lang.mjs","sources":["../../../../../../../packages/components/rate/src/index.vue?vue&type=template&id=55b4fa7d&lang.js"],"sourcesContent":["<template>\n <div\n class=\"el-rate\"\n role=\"slider\"\n :aria-valuenow=\"currentValue\"\n :aria-valuetext=\"text\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n tabindex=\"0\"\n >\n <span\n v-for=\"(item, key) in max\"\n :key=\"key\"\n class=\"el-rate__item\"\n :style=\"{ cursor: rateDisabled ? 'auto' : 'pointer' }\"\n >\n <ps-icon\n :class=\"[{ hover: hoverIndex === item }]\"\n class=\"el-rate__icon\"\n :style=\"getIconStyle(item)\"\n >\n <component :is=\"iconComponents[item - 1]\" />\n <ps-icon\n v-if=\"showDecimalIcon(item)\"\n :style=\"decimalStyle\"\n class=\"el-rate__icon el-rate__decimal\"\n >\n <component :is=\"decimalIconComponent\" />\n </ps-icon>\n </ps-icon>\n </span>\n <span\n v-if=\"showText || showScore\"\n class=\"el-rate__text\"\n :style=\"{ color: textColor }\"\n >{{ text }}</span\n >\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, ref } from 'vue'\nimport { isObject, isArray } from '@vue/shared'\nimport { elFormKey } from '@element-ps/tokens'\nimport { PsIcon } from '@element-ps/components/icon'\nimport { StarFilled, Star } from '@element-plus/icons'\n\nimport type { PropType, Component } from 'vue'\nimport type { ElFormContext } from '@element-ps/tokens'\n\nexport default defineComponent({\n name: 'PsRate',\n components: { PsIcon, StarFilled, Star },\n props: {\n modelValue: {\n type: Number,\n default: 0,\n },\n lowThreshold: {\n type: Number,\n default: 2,\n },\n highThreshold: {\n type: Number,\n default: 4,\n },\n max: {\n type: Number,\n default: 5,\n },\n colors: {\n type: [Array, Object],\n default: () => ['#F7BA2A', '#F7BA2A', '#F7BA2A'],\n },\n voidColor: {\n type: String,\n default: '#C6D1DE',\n },\n disabledVoidColor: {\n type: String,\n default: '#EFF2F7',\n },\n icons: {\n type: [Array, Object] as PropType<string[] | Component>,\n default: () => [StarFilled, StarFilled, StarFilled],\n },\n voidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Star,\n },\n disabledvoidIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: StarFilled,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n allowHalf: {\n type: Boolean,\n default: false,\n },\n showText: {\n type: Boolean,\n default: false,\n },\n showScore: {\n type: Boolean,\n default: false,\n },\n textColor: {\n type: String,\n default: '#1f2d3d',\n },\n texts: {\n type: Array as PropType<string[]>,\n default: () => [\n 'Extremely bad',\n 'Disappointed',\n 'Fair',\n 'Satisfied',\n 'Surprise',\n ],\n },\n scoreTemplate: {\n type: String,\n default: '{value}',\n },\n },\n setup(props) {\n const elForm = inject(elFormKey, {} as ElFormContext)\n\n const currentValue = ref(props.modelValue)\n\n const rateDisabled = computed(() => props.disabled || elForm.disabled)\n\n const text = computed(() => {\n let result = ''\n if (props.showScore) {\n result = props.scoreTemplate.replace(\n /\\{\\s*value\\s*\\}/,\n rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n )\n } else if (props.showText) {\n result = props.texts[Math.ceil(currentValue.value) - 1]\n }\n return result\n })\n\n function getValueFromMap(value: unknown, map: Record<string, unknown>) {\n const matchedKeys = Object.keys(map)\n .filter((key) => {\n const val = map[key]\n const excluded = isObject(val) ? val.excluded : false\n return excluded ? value < key : value <= key\n })\n .sort((a: never, b: never) => a - b)\n const matchedValue = map[matchedKeys[0]]\n return isObject(matchedValue)\n ? matchedValue.value || matchedValue\n : matchedValue || ''\n }\n\n const valueDecimal = computed(\n () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n )\n const colorMap = computed(() =>\n isArray(props.colors)\n ? {\n [props.lowThreshold]: props.colors[0],\n [props.highThreshold]: { value: props.colors[1], excluded: true },\n [props.max]: props.colors[2],\n }\n : props.colors\n )\n const activeColor = computed(() =>\n getValueFromMap(currentValue.value, colorMap.value)\n )\n const decimalStyle = computed(() => {\n let width = ''\n if (rateDisabled.value) {\n width = `${valueDecimal.value}%`\n } else if (props.allowHalf) {\n width = '50%'\n }\n return {\n color: activeColor.value,\n width,\n }\n })\n\n const componentMap = computed(() =>\n isArray(props.icons)\n ? {\n [props.lowThreshold]: props.icons[0],\n [props.highThreshold]: {\n value: props.icons[1],\n excluded: true,\n },\n [props.max]: props.icons[2],\n }\n : props.icons\n )\n\n const decimalIconComponent = computed(() =>\n getValueFromMap(props.modelValue, componentMap.value)\n )\n const voidComponent = computed(() =>\n rateDisabled.value ? props.disabledvoidIcon : props.voidIcon\n )\n const activeComponent = computed(() =>\n getValueFromMap(currentValue.value, componentMap.value)\n )\n const iconComponents = computed(() => {\n const result = Array(props.max)\n const threshold = currentValue.value\n // if (props.allowHalf && currentValue.value !== Math.floor(currentValue.value)) {\n // threshold--\n // }\n result.fill(activeComponent.value, 0, threshold)\n result.fill(voidComponent.value, threshold, props.max)\n return result\n })\n\n const pointerAtLeftHalf = ref(true)\n\n function showDecimalIcon(item: number) {\n const showWhenDisabled =\n rateDisabled.value &&\n valueDecimal.value > 0 &&\n item - 1 < props.modelValue &&\n item > props.modelValue\n /* istanbul ignore next */\n const showWhenAllowHalf =\n props.allowHalf &&\n pointerAtLeftHalf.value &&\n item - 0.5 <= currentValue.value &&\n item > currentValue.value\n return showWhenDisabled || showWhenAllowHalf\n }\n\n function getIconStyle(item: number) {\n const voidColor = rateDisabled.value\n ? props.disabledVoidColor\n : props.voidColor\n return {\n color: item <= currentValue.value ? activeColor.value : voidColor,\n }\n }\n\n const hoverIndex = ref(-1)\n\n return {\n hoverIndex,\n\n currentValue,\n rateDisabled,\n text,\n decimalStyle,\n decimalIconComponent,\n iconComponents,\n\n showDecimalIcon,\n getIconStyle,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createVNode","_createBlock"],"mappings":";;;;;sBACEA;IACE,OAAM;AAAA,IACN,MAAK;AAAA,IACJ,iBAAe;IACf,kBAAgB;IACjB,iBAAc;AAAA,IACb,iBAAe;IAChB,UAAS;AAAA;sBAETA,8CACwB,WAAd,MAAM;0BADhBA;QAEG;AAAA,QACD,OAAM;AAAA,QACL,gCAAiB;;QAElBC;UACG,iCAAiB,oBAAe,SAC3B;AAAA,UACL,sBAAO,kBAAa;AAAA;2BAErB;0BAAAC,oCAAgB,oBAAe;YAEvB,qBAAgB,sBADxBA;;cAEG,sBAAO;cACR,OAAM;AAAA;+BAEN;8BAAAA,oCAAgB;;;;;;;;;IAKd,iBAAY,+BADpBF;;MAEE,OAAM;AAAA,MACL,+BAAgB;uBACb;;;;;;"}