{"version":3,"file":"advanced-filtering.mjs","sources":["../../../../../../packages/components/advanced-filtering/src/advanced-filtering.ts"],"sourcesContent":["import { buildProps, definePropType, hasValue } from '@ll-plus/utils'\r\nimport { has, isNull, isEqual } from 'lodash-es'\r\n\r\nimport type { ExtractPropTypes } from 'vue'\r\nimport type { FormProps as AntFormProps, TooltipProps } from 'ant-design-vue'\r\nimport type { FormColumn } from '@ll-plus/components'\r\nimport type advancedFiltering from './advanced-filtering.vue'\r\nimport type advancedFilteringParams from './components/advanced-filtering-params.vue'\r\nimport type advancedFilteringTags from './components/advanced-filtering-tags.vue'\r\n\r\nexport interface IAdvancedFilteringTag {\r\n  label: string\r\n  key: string\r\n  value: string | string[]\r\n  showValue: string | string[]\r\n}\r\n\r\nexport const ALL_VALUE: string = '_ALL'\r\n\r\nexport type FilterColumn = FormColumn<{\r\n  unUseDefaultOption?: boolean\r\n  defaultOptionLabel?: string\r\n}>\r\n\r\nexport const initValue = (columns: FilterColumn[], values: any) => {\r\n  const copyValues = {}\r\n  if (columns.length) {\r\n    columns.forEach(column => {\r\n      let value: any = has(values, column.key) ? values[column.key] : null\r\n      if (has(column, 'options') && !column.unUseDefaultOption) {\r\n        if (column.type === 'checkbox-group' || has(column, 'mode')) {\r\n          value =\r\n            !hasValue(value) || (Array.isArray(value) && value.length === 0)\r\n              ? [ALL_VALUE]\r\n              : value\r\n        } else {\r\n          value = !hasValue(value) ? ALL_VALUE : value\r\n        }\r\n      }\r\n      copyValues[column.key] = value\r\n    })\r\n  }\r\n\r\n  return copyValues\r\n}\r\n\r\nexport const filterAllValue = (\r\n  values: string | string[],\r\n  column: FilterColumn\r\n): any => {\r\n  let value: any = null\r\n  if (Array.isArray(values)) {\r\n    value = values.filter(item => item !== ALL_VALUE || !hasValue(values))\r\n    if (column && column.type === 'number-range') {\r\n      value = values ? (values.every(e => !isNull(e)) ? values : null) : null\r\n    }\r\n  } else {\r\n    value = values === ALL_VALUE || !hasValue(values) ? null : values\r\n  }\r\n\r\n  return value\r\n}\r\n\r\nexport const treeDataFormat = (\r\n  arr = [] as any[],\r\n  fieldNames: { [key: string]: string }\r\n) => {\r\n  let options = [] as any[]\r\n  if (!arr) return []\r\n  options = arr.map((e: any) => {\r\n    const obj: any = {}\r\n    obj.label = e[fieldNames.label]\r\n    obj.value = e[fieldNames.value]\r\n    if (e[fieldNames.children] && e[fieldNames.children].length) {\r\n      obj.children = treeDataFormat(e[fieldNames.children], fieldNames)\r\n    }\r\n\r\n    return obj\r\n  })\r\n  return options\r\n}\r\n\r\n// const isEqual = (val1,val2)=>{\r\n\r\n// }\r\n\r\nexport const findLabelByValue = (\r\n  tree: FilterColumn['options'],\r\n  value: any\r\n): string => {\r\n  // 递归函数，用于遍历 Tree 数据\r\n  function _findLabel(nodes: FilterColumn['options']): string[] {\r\n    const labels: string[] = []\r\n    if (!nodes) return []\r\n    for (const node of nodes) {\r\n      if (isEqual(node.value, value)) {\r\n        labels.push(node.label)\r\n      }\r\n      if (node.children && node.children.length > 0) {\r\n        const childLabels = _findLabel(node.children)\r\n        if (childLabels) {\r\n          labels.push(...childLabels)\r\n        }\r\n      }\r\n    }\r\n    return labels.length > 0 ? labels : []\r\n  }\r\n  // 开始递归查找\r\n  return _findLabel(tree).join(',')\r\n}\r\n\r\n// export const hasValue = (value: any) => {\r\n//   return Array.isArray(value)\r\n//     ? value.length > 0\r\n//     : !isNull(value) && !isUndefined(value) && value !== ''\r\n// }\r\n\r\nexport const advancedFilteringProps = buildProps({\r\n  filterColumns: {\r\n    type: definePropType<FilterColumn[]>(Array),\r\n    default: () => []\r\n  },\r\n  value: {\r\n    type: Object,\r\n    default: () => ({})\r\n  },\r\n  formOptions: {\r\n    type: definePropType<AntFormProps>(Object),\r\n    default: () => ({ layout: 'vertical' })\r\n  },\r\n  overlayStyle: {\r\n    type: definePropType<TooltipProps['overlayStyle']>(Object),\r\n    default: () => ({\r\n      width: '500px'\r\n    })\r\n  }\r\n} as const)\r\n\r\nexport const advancedFilteringParamsProps = buildProps({\r\n  filterColumns: {\r\n    type: definePropType<FilterColumn[]>(Array),\r\n    default: () => []\r\n  },\r\n  value: {\r\n    type: Object,\r\n    default: () => ({})\r\n  },\r\n  formOptions: {\r\n    type: definePropType<AntFormProps>(Object),\r\n    default: () => ({ layout: 'vertical' })\r\n  },\r\n  showFooter: {\r\n    type: Boolean,\r\n    default: false\r\n  }\r\n} as const)\r\n\r\nexport const advancedFilteringEmits = {\r\n  change: (value: Record<string, any>) => !!value,\r\n  'update:value': (value: Record<string, any>) => !!value\r\n}\r\n\r\nexport const advancedFilteringParamsEmits = {\r\n  close: () => true,\r\n  confirm: () => true,\r\n  changeValue: (value: Record<string, any>) => !!value,\r\n  'update:value': (value: Record<string, any>) => !!value\r\n}\r\n\r\nexport const advancedFilteringTagsEmits = {\r\n  change: (value: Record<string, any>) => !!value,\r\n  'update:value': (value: Record<string, any>) => !!value\r\n}\r\n\r\n// props\r\nexport type AdvancedFilteringProps = ExtractPropTypes<\r\n  typeof advancedFilteringProps\r\n>\r\n\r\nexport type AdvancedFilteringParamsProps = ExtractPropTypes<\r\n  typeof advancedFilteringParamsProps\r\n>\r\n\r\n// emits\r\nexport type AdvancedFilteringEmits = typeof advancedFilteringEmits\r\n\r\nexport type AdvancedFilteringParamsEmits = typeof advancedFilteringParamsEmits\r\n\r\nexport type AdvancedFilteringTagsEmits = typeof advancedFilteringTagsEmits\r\n\r\n// instance\r\nexport type AdvancedFilteringInstance = InstanceType<typeof advancedFiltering>\r\n\r\nexport type AdvancedFilteringParamsInstance = InstanceType<\r\n  typeof advancedFilteringParams\r\n>\r\n\r\nexport type AdvancedFilteringTagsInstance = InstanceType<\r\n  typeof advancedFilteringTags\r\n>\r\n"],"names":[],"mappings":"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"}