UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.45 kB
{"version":3,"file":"options.mjs","names":[],"sources":["../../../../../../packages/components/select/src/options.ts"],"sourcesContent":["import { defineComponent, inject } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { isArray, isFunction, isString } from '@element-plus/utils'\nimport { selectKey } from './token'\n\nimport type { Component, VNode, VNodeNormalizedChildren } from 'vue'\nimport type { OptionValue } from './type'\n\nexport default defineComponent({\n name: 'ElOptions',\n setup(_, { slots }) {\n const select = inject(selectKey)\n let cachedValueList: OptionValue[] = []\n\n return () => {\n const children = slots.default?.()!\n const valueList: OptionValue[] = []\n\n function filterOptions(children?: VNodeNormalizedChildren) {\n if (!isArray(children)) return\n ;(children as VNode[]).forEach((item) => {\n const name = ((item?.type || {}) as Component)?.name\n\n if (name === 'ElOptionGroup') {\n filterOptions(\n !isString(item.children) &&\n !isArray(item.children) &&\n isFunction(item.children?.default)\n ? item.children?.default()\n : item.children\n )\n } else if (name === 'ElOption') {\n valueList.push(item.props?.value)\n } else if (isArray(item.children)) {\n filterOptions(item.children)\n }\n })\n }\n\n if (children.length) {\n filterOptions(children[0]?.children)\n }\n\n if (!isEqual(valueList, cachedValueList)) {\n cachedValueList = valueList\n if (select) {\n select.states.optionValues = valueList\n }\n }\n\n return children\n }\n },\n})\n"],"mappings":";;;;;;AAQA,sBAAe,gBAAgB;CAC7B,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,SAAS,OAAO,UAAU;EAChC,IAAI,kBAAiC,EAAE;AAEvC,eAAa;GACX,MAAM,WAAW,MAAM,WAAW;GAClC,MAAM,YAA2B,EAAE;GAEnC,SAAS,cAAc,UAAoC;AACzD,QAAI,CAAC,QAAQ,SAAS,CAAE;AACvB,IAAC,SAAqB,SAAS,SAAS;KACvC,MAAM,QAAS,MAAM,QAAQ,EAAE,GAAiB;AAEhD,SAAI,SAAS,gBACX,eACE,CAAC,SAAS,KAAK,SAAS,IACtB,CAAC,QAAQ,KAAK,SAAS,IACvB,WAAW,KAAK,UAAU,QAAQ,GAChC,KAAK,UAAU,SAAS,GACxB,KAAK,SACV;cACQ,SAAS,WAClB,WAAU,KAAK,KAAK,OAAO,MAAM;cACxB,QAAQ,KAAK,SAAS,CAC/B,eAAc,KAAK,SAAS;MAE9B;;AAGJ,OAAI,SAAS,OACX,eAAc,SAAS,IAAI,SAAS;AAGtC,OAAI,CAAC,QAAQ,WAAW,gBAAgB,EAAE;AACxC,sBAAkB;AAClB,QAAI,OACF,QAAO,OAAO,eAAe;;AAIjC,UAAO;;;CAGZ,CAAC"}