ideaz-element
Version:
<p align="center"> <a href="" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/logo.svg" alt="Ideaz Element" width="180" style="width: 180px;" /> </a> </p>
1 lines • 8.7 kB
Source Map (JSON)
{"version":3,"file":"CheckCardItem.cjs","sources":["../../../../../packages/element/check-card/src/CheckCardItem.tsx"],"sourcesContent":["import { h } from 'vue'\nimport { isFunction } from '@ideaz/utils'\nimport { useNamespace } from '@ideaz/hooks'\nimport { ElAvatar, ElSkeleton } from 'element-plus'\nimport type { VNode } from 'vue'\nimport type { CheckCardItemProps } from './props'\nimport { checkCardItemProps } from './props'\nimport type CheckCardGroup from '.'\n\nexport default defineComponent({\n name: 'ZCheckCardItem',\n props: checkCardItemProps,\n emits: ['click', 'change'],\n setup(props, { emit }) {\n const stateChecked = ref(props.defaultChecked)\n const checkCardProps = ref<CheckCardItemProps>({} as CheckCardItemProps)\n const multiple = ref(false)\n const checkCardGroup = inject<typeof CheckCardGroup | null>('check-card-group', null)\n const ns = useNamespace('check-card')\n const size = useFormSize()\n\n const getSizeCls = (size?: string) => {\n if (size === 'large')\n return 'lg'\n if (size === 'small')\n return 'sm'\n return ''\n }\n\n watchEffect(() => {\n const {\n defaultChecked,\n checked,\n disabled,\n loading,\n bordered,\n value,\n } = props\n\n checkCardProps.value = {\n defaultChecked,\n checked,\n disabled,\n loading,\n bordered,\n value,\n size: size.value,\n }\n\n checkCardProps.value.checked = stateChecked.value\n\n if (checkCardGroup?.value) {\n checkCardProps.value.disabled\n = props.disabled || checkCardGroup.value.disabled\n checkCardProps.value.loading\n = props.loading || checkCardGroup.value.loading\n checkCardProps.value.bordered = props.bordered\n\n multiple.value = checkCardGroup.value.multiple\n\n const isChecked = checkCardGroup.value.multiple\n ? checkCardGroup.value.value?.includes(props.value)\n : checkCardGroup.value.value === props.value\n\n // check is false\n checkCardProps.value.checked = checkCardProps.value.loading\n ? false\n : isChecked\n checkCardProps.value.size = size.value\n }\n })\n\n const classString = computed(() => {\n const {\n disabled = false,\n loading: cardLoading,\n bordered,\n checked,\n } = checkCardProps.value\n const sizeCls = getSizeCls(size.value)\n\n return {\n [ns.m('loading')]: cardLoading,\n [ns.m(sizeCls)]: sizeCls,\n [ns.m('checked')]: checked,\n [ns.m('multiple')]: multiple.value,\n [ns.m('disabled')]: disabled,\n [ns.m('bordered')]: bordered,\n 'z-check-card': true,\n }\n })\n\n const renderCover = (cover: string | ((h: (type: string, children?: any) => VNode) => VNode)) => {\n return (\n <div class={ns.e('cover')}>\n {typeof cover === 'string'\n ? (\n <img src={cover} alt=\"check-card\" />\n )\n : (\n cover(h)\n )}\n </div>\n )\n }\n\n const handleClick = (e: MouseEvent) => {\n emit('click', e)\n checkCardGroup?.value.toggleOption?.({ value: props.value })\n stateChecked.value = !stateChecked.value\n emit('change', stateChecked.value)\n }\n\n return () => {\n const { disabled = false, loading: cardLoading } = checkCardProps.value\n const { avatar, title, description, cover, extra, style } = props\n\n const metaDom = () => {\n if (cardLoading)\n return <div class=\"px-4 py-3\"><ElSkeleton rows={2} animated /></div>\n\n if (cover)\n return renderCover(cover)\n\n const avatarDom = avatar\n ? (\n <div class={ns.e('avatar')}>\n {typeof avatar === 'string'\n ? (\n <ElAvatar size={48} shape=\"square\" src={avatar} />\n )\n : (\n avatar(h)\n )}\n </div>\n )\n : null\n\n const headerDom = (title || extra) && (\n <div class={ns.e('header')}>\n <div class={ns.e('title')}>\n {isFunction(title) ? title(h) : title}\n </div>\n {extra && (\n <div class={ns.e('extra')}>\n {isFunction(extra) ? extra(h) : extra}\n </div>\n )}\n </div>\n )\n\n const descriptionDom = description\n ? (\n <div class={ns.e('description')}>\n {isFunction(description) ? description(h) : description}\n </div>\n )\n : null\n\n const metaClass = computed(() => {\n return {\n [ns.e('avatar-header')]:\n avatarDom && headerDom && !descriptionDom,\n [ns.e('content')]: true,\n }\n })\n\n return (\n <div class={metaClass.value}>\n {avatarDom}\n {(headerDom || descriptionDom)\n ? (\n <div class={ns.e('detail')}>\n {headerDom}\n {descriptionDom}\n </div>\n )\n : null}\n </div>\n )\n }\n\n return (\n <div\n class={classString.value}\n style={style}\n onClick={(e) => {\n if (!cardLoading && !disabled)\n handleClick(e)\n }}\n >\n {metaDom()}\n </div>\n )\n }\n },\n})\n"],"names":["CheckCardItem","vue","name","props","emits","emit","stateChecked","checkCardProps","multiple","checkCardGroup","ns","useNamespace","size","useFormSize","watchEffect","value","isChecked","_a","classString","disabled","loading","checked","sizeCls","getSizeCls","cardLoading","bordered","cover","style","renderCover","avatarDom","avatar","elementPlus","headerDom","title","extra","is","descriptionDom","description","metaClass","e"],"mappings":"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"}