From 152f4dbf3d6b2758c36b9d47d664a4e1c492b5e2 Mon Sep 17 00:00:00 2001 From: Shana-AE <31391693+Shana-AE@users.noreply.github.com> Date: Fri, 11 Mar 2022 14:35:16 +0800 Subject: [PATCH 01/14] fix(components): [rate] fix disbaledVoidIcon typo (#6456) fix #6455 --- packages/components/rate/src/rate.ts | 2 +- packages/components/rate/src/rate.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/components/rate/src/rate.ts b/packages/components/rate/src/rate.ts index 74fcfca8ad..82e6e949ad 100644 --- a/packages/components/rate/src/rate.ts +++ b/packages/components/rate/src/rate.ts @@ -55,7 +55,7 @@ export const rateProps = buildProps({ type: iconPropType, default: () => Star, }, - disabledvoidIcon: { + disabledVoidIcon: { type: iconPropType, default: () => StarFilled, }, diff --git a/packages/components/rate/src/rate.vue b/packages/components/rate/src/rate.vue index e28b9995d4..4ad03553df 100644 --- a/packages/components/rate/src/rate.vue +++ b/packages/components/rate/src/rate.vue @@ -155,7 +155,7 @@ export default defineComponent({ getValueFromMap(props.modelValue, componentMap.value) ) const voidComponent = computed(() => - rateDisabled.value ? props.disabledvoidIcon : props.voidIcon + rateDisabled.value ? props.disabledVoidIcon : props.voidIcon ) const activeComponent = computed(() => getValueFromMap(currentValue.value, componentMap.value) From e1447d9c7c733812858bb7e43a40040e8f56fd5d Mon Sep 17 00:00:00 2001 From: Alan Wang Date: Fri, 11 Mar 2022 01:36:15 -0500 Subject: [PATCH 02/14] fix(components): [select] display error when setting persistent to false (#6522) --- packages/components/select/src/option.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/components/select/src/option.vue b/packages/components/select/src/option.vue index 8546c05d55..8e1ecf5cdf 100644 --- a/packages/components/select/src/option.vue +++ b/packages/components/select/src/option.vue @@ -25,6 +25,7 @@ import { getCurrentInstance, onBeforeUnmount, reactive, + nextTick, } from 'vue' import { useNamespace } from '@element-plus/hooks' import { useOption } from './useOption' @@ -74,7 +75,9 @@ export default defineComponent({ }) // if option is not selected, remove it from cache if (select.cachedOptions.get(key) === vm && !doesSelected) { - select.cachedOptions.delete(key) + nextTick(() => { + select.cachedOptions.delete(key) + }) } select.onOptionDestroy(key, vm) }) From 045703228b9fd9928aa7b9133bf6c93602ee6092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=A4=A7=E5=A4=A7?= <249812928@qq.com> Date: Fri, 11 Mar 2022 14:56:29 +0800 Subject: [PATCH 03/14] fix(components): [el-input] pass input-style props to input-wrapper (#6506) Co-authored-by: zhangtian --- packages/components/input/src/input.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/components/input/src/input.vue b/packages/components/input/src/input.vue index dc7c693ff2..bfea862b48 100644 --- a/packages/components/input/src/input.vue +++ b/packages/components/input/src/input.vue @@ -209,7 +209,10 @@ export default defineComponent({ const validateIcon = computed( () => ValidateComponentsMap[validateState.value] ) - const containerStyle = computed(() => rawAttrs.style as StyleValue) + const containerStyle = computed(() => [ + rawAttrs.style, + props.inputStyle, + ]) const computedTextareaStyle = computed(() => [ props.inputStyle, _textareaCalcStyle.value, From 063c56446135176971f532bd0eb2e88a0b137d43 Mon Sep 17 00:00:00 2001 From: msidolphin Date: Fri, 11 Mar 2022 15:05:29 +0800 Subject: [PATCH 04/14] fix(components): [el-table] escape special html characters (#6520) * fix(components): [el-table] escape special html characters * fix: use 3rd package --- package.json | 1 + packages/components/table/src/util.ts | 2 ++ pnpm-lock.yaml | 7 ++++--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 72e8874a93..a72297b33b 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ "@vueuse/core": "^7.7.1", "async-validator": "^4.0.7", "dayjs": "^1.10.8", + "escape-html": "^1.0.3", "lodash": "^4.17.21", "lodash-es": "^4.17.21", "lodash-unified": "^1.0.2", diff --git a/packages/components/table/src/util.ts b/packages/components/table/src/util.ts index 2f62e3894a..d163ae6bd7 100644 --- a/packages/components/table/src/util.ts +++ b/packages/components/table/src/util.ts @@ -1,5 +1,6 @@ import { createPopper } from '@popperjs/core' import { get } from 'lodash-unified' +import escapeHtml from 'escape-html' import { hasOwn, off, on } from '@element-plus/utils' import { useZIndex } from '@element-plus/hooks' import type { @@ -326,6 +327,7 @@ export function createTablePopper( const isLight = tooltipEffect === 'light' const content = document.createElement('div') content.className = `el-popper ${isLight ? 'is-light' : 'is-dark'}` + popperContent = escapeHtml(popperContent) content.innerHTML = popperContent content.style.zIndex = String(nextZIndex()) document.body.appendChild(content) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be1a9a11f3..1649520775 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,6 +54,7 @@ importers: cz-conventional-changelog: ^3.3.0 dayjs: ^1.10.8 esbuild: ^0.14.25 + escape-html: ^1.0.3 eslint: ^8.10.0 eslint-define-config: ^1.2.5 expect-type: ^0.13.0 @@ -103,6 +104,7 @@ importers: '@vueuse/core': 7.7.1_vue@3.2.31 async-validator: 4.0.7 dayjs: 1.10.8 + escape-html: 1.0.3 lodash: 4.17.21 lodash-es: 4.17.21 lodash-unified: 1.0.2_da03a4540fbd16bbaafbb96724306afd @@ -5985,8 +5987,7 @@ packages: dev: true /escape-html/1.0.3: - resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} - dev: true + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} /escape-string-regexp/1.0.5: resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} @@ -9951,7 +9952,7 @@ packages: dev: true /path-name/1.0.0: - resolution: {integrity: sha1-jKBjpj3nmC36lXYO2v/RAhRJTyQ=} + resolution: {integrity: sha512-/dcAb5vMXH0f51yvMuSUqFpxUcA8JelbRmE5mW/p4CUJxrNgK24IkstnV7ENtg2IDGBOu6izKTG6eilbnbNKWQ==} dev: true /path-parse/1.0.7: From 36e80869ab0be3464a964d59cee83a8cad27e2d6 Mon Sep 17 00:00:00 2001 From: blackie Date: Fri, 11 Mar 2022 15:09:09 +0800 Subject: [PATCH 05/14] fix(components): [autocomplete] fix shaking at first open (#6342) * fix(components): [auto-complete] fix shaking at first open * fix(components): [autocomplete] remove added file by oversight --- packages/components/autocomplete/src/autocomplete.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/components/autocomplete/src/autocomplete.vue b/packages/components/autocomplete/src/autocomplete.vue index b5164654e5..9b83dded22 100644 --- a/packages/components/autocomplete/src/autocomplete.vue +++ b/packages/components/autocomplete/src/autocomplete.vue @@ -13,7 +13,7 @@ trigger="click" :transition="`${ns.namespace.value}-zoom-in-top`" persistent - @show="onSuggestionShow" + @before-show="onSuggestionShow" >
Date: Fri, 11 Mar 2022 15:39:44 +0800 Subject: [PATCH 06/14] chore(project): add escape-html as dependency for main entry (#6534) - Add `escape-html` as dependency for `packages/element-plus` --- packages/element-plus/package.json | 1 + pnpm-lock.yaml | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/element-plus/package.json b/packages/element-plus/package.json index fe0a70900b..e2d56bb265 100644 --- a/packages/element-plus/package.json +++ b/packages/element-plus/package.json @@ -54,6 +54,7 @@ "@vueuse/core": "^7.7.1", "async-validator": "^4.0.7", "dayjs": "^1.10.8", + "escape-html": "^1.0.3", "lodash": "^4.17.21", "lodash-es": "^4.17.21", "lodash-unified": "^1.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1649520775..a52c4755ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -244,6 +244,7 @@ importers: async-validator: ^4.0.7 csstype: ^2.6.19 dayjs: ^1.10.8 + escape-html: ^1.0.3 lodash: ^4.17.21 lodash-es: ^4.17.21 lodash-unified: ^1.0.2 @@ -257,6 +258,7 @@ importers: '@vueuse/core': 7.7.1_vue@3.2.31 async-validator: 4.0.7 dayjs: 1.10.8 + escape-html: 1.0.3 lodash: 4.17.21 lodash-es: 4.17.21 lodash-unified: 1.0.2_da03a4540fbd16bbaafbb96724306afd @@ -5987,7 +5989,7 @@ packages: dev: true /escape-html/1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} /escape-string-regexp/1.0.5: resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} From 61c6b97183461ec035daf5370614f6da8bd832eb Mon Sep 17 00:00:00 2001 From: msidolphin Date: Fri, 11 Mar 2022 15:56:07 +0800 Subject: [PATCH 07/14] fix(components): [el-upload] jitter when remove file in the list (#6505) * fix(components): [el-upload] jitter when remove file in the list * chore: improve code --- .../components/upload/src/upload-list.vue | 5 +++- .../theme-chalk/src/common/transition.scss | 7 ++++- packages/theme-chalk/src/upload.scss | 27 ++++++++----------- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/packages/components/upload/src/upload-list.vue b/packages/components/upload/src/upload-list.vue index 0a438f4d95..13c87c8d65 100644 --- a/packages/components/upload/src/upload-list.vue +++ b/packages/components/upload/src/upload-list.vue @@ -33,7 +33,10 @@ alt="" />
Date: Fri, 11 Mar 2022 02:56:23 -0500 Subject: [PATCH 08/14] feat(components): [select]add collapse-tags-tooltip (#6245) * feat(components): [select]add collapse-tags-tooltip * feat(components): [select] collapse-tags-tooltip set width * feat(components): [select] collapse-tags-tooltip set fallback-placements * feat(components): [select] resolve conflicts * feat(components): [select] add v-if on tooltip --- docs/en-US/component/select.md | 3 +- docs/examples/select/multiple.vue | 81 ++++++++++++------- .../select/__tests__/select.spec.ts | 75 ++++++++++++++++- packages/components/select/src/select.vue | 49 ++++++++++- packages/theme-chalk/src/select.scss | 14 ++++ 5 files changed, 188 insertions(+), 34 deletions(-) diff --git a/docs/en-US/component/select.md b/docs/en-US/component/select.md index e64151b12a..3b71c334b4 100644 --- a/docs/en-US/component/select.md +++ b/docs/en-US/component/select.md @@ -47,7 +47,7 @@ select/clearable Multiple select uses tags to display selected options. -:::demo Set `multiple` attribute for `el-select` to enable multiple mode. In this case, the value of `v-model` will be an array of selected options. By default the selected options will be displayed as Tags. You can collapse them to a text by using `collapse-tags` attribute. +:::demo Set `multiple` attribute for `el-select` to enable multiple mode. In this case, the value of `v-model` will be an array of selected options. By default the selected options will be displayed as Tags. You can collapse them to a text by using `collapse-tags` attribute. You can check them when mouse hover collapse text by using `collapse-tags-tooltip` attribute. select/multiple @@ -120,6 +120,7 @@ If the binding value of Select is an object, make sure to assign `value-key` as | size | size of Input | string | large/default/small | default | | clearable | whether select can be cleared | boolean | — | false | | collapse-tags | whether to collapse tags to a text when multiple selecting | boolean | — | false | +| collapse-tags-tooltip | whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true | boolean | true / false | false | | multiple-limit | maximum number of options user can select when `multiple` is `true`. No limit when set to 0 | number | — | 0 | | name | the name attribute of select input | string | — | — | | effect | Tooltip theme, built-in theme: `dark` / `light` | string | string | light | diff --git a/docs/examples/select/multiple.vue b/docs/examples/select/multiple.vue index 503bf0cefd..686fb67b94 100644 --- a/docs/examples/select/multiple.vue +++ b/docs/examples/select/multiple.vue @@ -1,34 +1,58 @@