UNPKG

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 7.05 kB
{"version":3,"file":"index.mjs","sources":["../../../../../packages/element/check-card/src/index.tsx"],"sourcesContent":["import { provide } from 'vue'\nimport { useNamespace } from '@ideaz/hooks'\nimport { get } from 'lodash-unified'\nimport { isValid } from '@ideaz/utils'\nimport ZCheckCardItem from './CheckCardItem'\nimport { checkCardGroupProps } from './props'\nimport type { CheckCardItemProps, CheckCardValueType } from './props'\n\nexport default defineComponent({\n name: 'ZCheckCard',\n components: { ZCheckCardItem },\n props: checkCardGroupProps,\n emits: ['change', 'update:modelValue'],\n setup(props, { slots, expose, emit }) {\n const ns = useNamespace('check-card')\n const size = useFormSize()\n\n const stateValue = computed({\n get() {\n return props.modelValue || props.value\n },\n set(val) {\n emit('update:modelValue', val)\n emit('change', val)\n },\n })\n\n const getOptions = () => {\n return (props.options as CheckCardItemProps[])?.map(\n (option) => {\n if (typeof option === 'string') {\n return {\n title: option,\n value: option,\n }\n }\n return option\n },\n )\n }\n\n const toggleOption = (option: CheckCardItemProps) => {\n if (!props.multiple) {\n let changeValue\n\n changeValue = stateValue.value\n\n if (changeValue === option.value)\n changeValue = undefined\n\n else\n changeValue = option.value\n\n stateValue.value = changeValue\n }\n\n if (props.multiple) {\n let changeValue = []\n const stateValues = stateValue.value as CheckCardValueType[]\n const hasOption = stateValues.includes(option.value!)\n changeValue = [...(stateValues || [])]\n if (!hasOption)\n changeValue.push(option.value!)\n\n if (hasOption) {\n changeValue = changeValue.filter(\n itemValue => itemValue !== option.value,\n )\n }\n const newOptions = getOptions()\n const newValue = changeValue\n // ?.filter((val) => registerValueMap.current.has(val))\n ?.sort((a, b) => {\n const indexA = newOptions.findIndex((opt: { title: string, value: any } | CheckCardItemProps) => opt.value === a || get(opt, props.alias?.value || 'value', '') === a)\n const indexB = newOptions.findIndex((opt: { title: string, value: any } | CheckCardItemProps) => opt.value === b || get(opt, props.alias?.value || 'value', '') === b)\n return indexA - indexB\n })\n\n stateValue.value = newValue\n }\n }\n\n const children = () => {\n const { loading, multiple, options } = props\n if (loading) {\n // eslint-disable-next-line unicorn/no-new-array\n return new Array(options?.length || slots.default?.()?.length || 1)\n .fill(0)\n .map((_, index) => <ZCheckCardItem key={index} loading />)\n }\n\n if (options && options.length > 0) {\n const optionValue = stateValue.value\n return (getOptions() as CheckCardItemProps[]).map((option) => {\n const value = get(option, props.alias?.value || 'value', '')\n return (\n <ZCheckCardItem\n key={value.toString()}\n {...option}\n disabled={get(option, props.alias?.disabled || 'disabled', false)}\n size={option.size || size.value}\n value={value}\n bordered={isValid(option.bordered) ? option.bordered : props.bordered}\n checked={\n multiple\n ? (optionValue as CheckCardValueType[])?.includes(value)\n : (optionValue as CheckCardValueType) === value\n }\n title={get(option, props.alias?.title || 'title', '')}\n />\n )\n })\n }\n\n return slots.default?.()\n }\n\n provide(\n 'check-card-group',\n computed(() => {\n return {\n toggleOption,\n bordered: props.bordered,\n value: stateValue.value,\n disabled: props.disabled,\n size: size.value,\n loading: props.loading,\n multiple: props.multiple,\n }\n }),\n )\n\n expose({\n toggleOption,\n })\n\n return () => {\n return <div class={ns.b('group')}>{children()}</div>\n }\n },\n})\n"],"names":["CheckCard","defineComponent","name","components","ZCheckCardItem","props","emits","emit","ns","useNamespace","size","useFormSize","get","_a","option","title","value","changeValue","stateValues","stateValue","hasOption","newOptions","getOptions","newValue","a","b","indexA","opt","indexB","options","loading","_b","slots","_","index","createVNode","CheckCardItem","optionValue","mergeProps","isValid","_c","provide","expose","toggleOption"],"mappings":"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"}