{"version":3,"file":"base-list.mjs","sources":["../../../../../../../packages/components/base-list/src/base-list.tsx"],"sourcesContent":["import {\n  computed,\n  defineComponent,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n} from 'vue'\nimport {\n  at,\n  filter,\n  get,\n  isEmpty,\n  join,\n  mergeWith,\n  remove,\n} from 'lodash-unified'\nimport { createNamespace } from '@xzx-design/utils'\nimport { Pic } from '@xzx-design/icons-vue'\nimport {\n  Cell,\n  Empty,\n  Icon,\n  Image,\n  List,\n  Loading,\n  PullRefresh,\n  showToast,\n} from '../../'\n\nimport type { BaseListOptions } from './types'\n\nconst [name, bem, t] = createNamespace('base-list')\n\nexport default defineComponent({\n  name,\n  props: {\n    options: {\n      type: Object,\n      default: () => ({}),\n    },\n    safeAreaInsetBottom: {\n      type: Boolean,\n      default: false,\n    },\n    center: {\n      type: Boolean,\n      default: true,\n    },\n    disabled: {\n      type: Boolean,\n      default: false,\n    },\n    cutline: {\n      type: Boolean,\n      default: true,\n    },\n    isLink: {\n      type: Boolean,\n      default: false,\n    },\n    immediateCheck: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  emits: ['item-click', 'long-press', 'finished', 'error'],\n  setup(props, { emit, slots, expose }) {\n    /**\n     * 基本options\n     */\n    const defaultOptions = computed<BaseListOptions>(() => ({\n      usePagination: true, // 使用分页加载\n      usePullRefresh: false, // 使用下拉刷新\n      usePadding: true, // 使用边距\n      useBackground: true, // 使用背景色\n      useCell: false, // 使用cell组件\n      cellValueWidthAuto: false,\n      useIcon: true,\n      iconSize: 30,\n      useManuallyLoad: false, // 使用手动加载\n      autoInitRequest: true, // 自动初始化请求\n      cellPath: {\n        // cell值的取值path\n        title: 'title',\n        label: 'label',\n        value: 'value',\n        icon: 'icon',\n      },\n      pagination: {\n        current: 1,\n        size: 10,\n        pages: 0,\n      },\n      paginationKeys: {\n        current: 'current',\n        size: 'size',\n        pages: 'pages',\n        total: 'total',\n      },\n      params: {}, // 请求参数\n      request: null, // 接口请求\n      data: [],\n      resultPath: {\n        // 接口结果的取值path\n        data: 'data',\n        pages: 'data.pages',\n        total: 'data.total',\n      },\n      errorIcon: '',\n      style: {\n        //\n      },\n      filter: {\n        includes: [],\n        keyword: '',\n      },\n    }))\n\n    /**\n     * 与传入的options合并\n     */\n    const mergedOptions = computed(() => {\n      let obj: any = {}\n      obj = mergeWith({}, defaultOptions.value, props.options)\n      if (\n        typeof props.options?.useIcon === 'boolean' &&\n        !props.options?.useIcon\n      ) {\n        delete obj.cellPath.icon\n      }\n      return obj\n    })\n\n    let sourceData: any = []\n    const dataList = ref([])\n    const loading = ref(false)\n    const loadingList = ref(false)\n    const isRefreshing = ref(false)\n    const finished = ref(false)\n    const longPressTimer = ref()\n    const pagination = ref({\n      current: mergedOptions.value?.pagination?.current,\n      size: mergedOptions.value?.pagination?.size,\n      pages: 0,\n    })\n    /**\n     * 获取列表数据\n     * @param {*} init\n     */\n    async function getList(init = true) {\n      if (init) {\n        pagination.value.current = mergedOptions.value?.pagination?.current\n        finished.value = false\n      }\n      if (finished.value) return // 防止多一次请求\n      const params = {\n        ...mergedOptions.value?.params,\n      }\n      // 如果使用分页\n      if (mergedOptions.value?.usePagination) {\n        params[mergedOptions.value?.paginationKeys.current] =\n          pagination.value.current\n        params[mergedOptions.value?.paginationKeys.size] = pagination.value.size\n      }\n      loadingList.value = true\n      await mergedOptions.value\n        ?.request(params)\n        .then((r: any) => {\n          if (r.code === 200) {\n            if (mergedOptions.value?.usePagination) {\n              const pages =\n                get(r, mergedOptions.value?.resultPath.pages) ||\n                roundUpToInteger(\n                  get(r, mergedOptions.value?.resultPath.total) /\n                    pagination.value.size\n                )\n              if (r.data && pagination.value.current <= pages) {\n                const newData = get(r, mergedOptions.value?.resultPath.data)\n                sourceData = dataList.value = init\n                  ? newData\n                  : [...dataList.value, ...newData]\n                if (pagination.value.current === pages) {\n                  finished.value = true\n                  loadingList.value = false\n                  emit('finished', true, dataList.value)\n                } else {\n                  pagination.value.current++\n                }\n              } else {\n                finished.value = true\n                loadingList.value = false\n                if (\n                  pagination.value.current ===\n                  mergedOptions.value?.pagination?.current\n                )\n                  sourceData = dataList.value = []\n                emit('finished', true, dataList.value)\n              }\n            } else {\n              sourceData = dataList.value = get(\n                r,\n                mergedOptions.value?.resultPath.data\n              )\n              finished.value = true\n              emit('finished', true, dataList.value)\n            }\n          } else {\n            showToast(r.msg)\n            emit('error', r)\n            finished.value = true\n          }\n        })\n        .catch((err: any) => {\n          finished.value = true\n          isRefreshing.value = loadingList.value = false\n          emit('error', err)\n        })\n      loading.value = loadingList.value = false\n    }\n\n    /**\n     *\n     * @param {*} decimalNumber\n     * @example 0.1 -> 1\n     * @example 10.1 -> 11\n     * @example 10 -> 10\n     *\n     */\n    function roundUpToInteger(decimalNumber: number) {\n      // 检查是否是整数\n      if (Number.isInteger(decimalNumber)) {\n        return decimalNumber\n      }\n      // 取整数部分并加一\n      const integerPart = Math.floor(decimalNumber)\n      const result = integerPart + 1\n      return result\n    }\n\n    /**\n     * 点击一项时\n     * @param {*} item\n     */\n    function onClickItem(item: any) {\n      if (props.disabled || item?.disabled) return\n      emit('item-click', item)\n    }\n\n    /**\n     * 触底加载\n     */\n    function onLoad() {\n      if (!mergedOptions.value?.usePagination) return\n      loadingList.value = true\n      getList(false)\n    }\n\n    /**\n     * 刷新页面\n     */\n    async function refresh() {\n      isRefreshing.value = true\n      await getList(true)\n      isRefreshing.value = false\n    }\n\n    /**\n     * 静态删除\n     * @param {*} ids\n     */\n    function deletes(ids: any[], key = 'id') {\n      sourceData = dataList.value = remove(\n        dataList.value,\n        (item) => !ids?.includes(item[key])\n      )\n    }\n\n    /**\n     * 手动加载分页\n     * @param {*} ids\n     */\n    async function paginationLoad() {\n      if (finished.value) return\n      await getList(false)\n      loadingList.value = false\n    }\n\n    /**\n     * 长按\n     * @param {*} item\n     */\n    function longPress(type: string, item: any) {\n      if (type === 'start') {\n        longPressTimer.value = setTimeout(() => {\n          emit('long-press', item)\n        }, 500)\n      }\n\n      if (type === 'end') {\n        clearTimeout(longPressTimer.value)\n      }\n    }\n\n    /**\n     * props取值\n     * @param {*} params\n     */\n    function cellProps(item: any) {\n      const cellPath = mergedOptions.value.cellPath\n      // 使用简化的函数来处理路径数据\n      const getPathData = (key: string) =>\n        typeof cellPath[key] === 'function'\n          ? cellPath[key](item)\n          : get(item, cellPath[key])\n      // 构建 pathData 对象\n      return {\n        title: getPathData('title'),\n        label: getPathData('label'),\n        value: getPathData('value'),\n        icon: getPathData('icon'),\n      }\n    }\n\n    async function loadingRefresh(init: boolean) {\n      loading.value = true\n      await getList(init)\n      loading.value = false\n    }\n\n    /**\n     * 监听数据，兼容异步传入\n     */\n    watch(\n      () => mergedOptions.value.data,\n      (val) => {\n        if (!mergedOptions.value.request) {\n          sourceData = dataList.value = val\n        }\n      },\n      {\n        deep: true,\n        immediate: true,\n      }\n    )\n\n    watch(\n      () => mergedOptions.value.filter,\n      (val) => {\n        dataList.value = filter(sourceData, (v) => {\n          const includesStr = join(at(v, val.includes), '')\n          if (includesStr?.includes(val?.keyword)) {\n            return v\n          }\n        }) as never[]\n      },\n      {\n        deep: true,\n        immediate: true,\n      }\n    )\n\n    onMounted(async () => {\n      // alert(1)\n      if (mergedOptions.value?.request) {\n        if (mergedOptions.value?.autoInitRequest) {\n          loadingRefresh(true)\n        }\n      } else {\n        finished.value = true\n        loadingList.value = false\n      }\n    })\n\n    expose({\n      getList,\n      refresh,\n      deletes,\n      paginationLoad,\n      loadingRefresh,\n      data: dataList,\n    })\n\n    const rootClass = computed(() => [\n      bem(),\n      props.safeAreaInsetBottom && 'xzx-safe-area-bottom',\n      mergedOptions.value?.usePadding &&\n        bem({\n          padding: true,\n        }),\n      !props.cutline && bem({ 'no-cutline': true }),\n      mergedOptions.value?.useBackground && bem({ background: true }),\n      mergedOptions.value?.cellValueWidthAuto &&\n        bem({ 'cell-value-width-auto': true }),\n    ])\n\n    const renderList = () => {\n      const listComponent = ref(\n        mergedOptions.value?.request && mergedOptions.value?.usePagination\n          ? List\n          : 'div'\n      )\n      return (\n        <listComponent.value\n          v-model={loadingList.value}\n          finished={finished.value}\n          loading={loadingList.value}\n          onLoad={\n            !mergedOptions.value?.useManuallyLoad &&\n            mergedOptions.value?.request &&\n            onLoad()\n          }\n          offset=\"30\"\n          immediate-check={props.immediateCheck}\n          v-slots={{\n            finished: () => {\n              return <span>{t('noMore')}</span>\n            },\n          }}\n        >\n          {dataList.value.map((item, index) => renderListItem(item, index))}\n        </listComponent.value>\n      )\n    }\n\n    const renderIcon = (item: any) => {\n      const iconInstance = computed(() => cellProps(item)?.icon)\n      const isXzxIcon = typeof iconInstance.value === 'object'\n      return isXzxIcon ? (\n        <Icon size={mergedOptions.value.iconSize}>\n          <iconInstance.value />\n        </Icon>\n      ) : (\n        <Image\n          src={iconInstance.value}\n          fit=\"cover\"\n          width={mergedOptions.value.iconSize}\n          height={mergedOptions.value.iconSize}\n          v-slots={{\n            error: () => (\n              <Icon>\n                <Pic />\n              </Icon>\n            ),\n          }}\n        />\n      )\n    }\n\n    const renderListItem = (item: any, index: number) => {\n      const listItemComponent = shallowRef(\n        mergedOptions.value?.useCell ? Cell : 'div'\n      )\n      const listItemClass = computed(() => [\n        (props.disabled || item?.disabled) &&\n          bem('item', {\n            disabled: true,\n          }),\n        index === 0 &&\n          bem('item', {\n            first: true,\n          }),\n        index === dataList.value?.length - 1 &&\n          bem('item', {\n            last: true,\n          }),\n      ])\n      return (\n        <listItemComponent.value\n          class={listItemClass.value}\n          onClick={() => onClickItem(item)}\n          onTouchstart={() => longPress('start', item)}\n          onTouchend={() => longPress('end', item)}\n          isLink={props?.isLink || item?.isLink}\n          {...(mergedOptions.value?.useCell ? cellProps(item) : {})}\n          center={props.center}\n          v-slots={{\n            default:\n              slots?.default && !mergedOptions.value.useCell\n                ? () =>\n                    slots.default!({\n                      item,\n                      scopeIndex: index,\n                      dataLength: dataList.value?.length,\n                    })\n                : null,\n            icon: mergedOptions.value?.useIcon\n              ? () => {\n                  return (\n                    <div class={bem('cell-icon')}>\n                      {slots?.icon\n                        ? slots.icon({ item, scopeIndex: index })\n                        : renderIcon(item)}\n                    </div>\n                  )\n                }\n              : undefined,\n            title: slots?.title\n              ? () => slots.title!({ item, scopeIndex: index })\n              : undefined,\n            label: slots?.label\n              ? () => slots.label!({ item, scopeIndex: index })\n              : undefined,\n            value: slots?.value\n              ? () => slots.value!({ item, scopeIndex: index })\n              : undefined,\n            rightIcon: slots?.rightIcon\n              ? () => slots.rightIcon!({ item, scopeIndex: index })\n              : undefined,\n          }}\n        />\n      )\n    }\n\n    const renderLoading = () => {\n      return (\n        <div class={bem('loading-box')}>\n          {!slots?.['content-loading'] ? (\n            <Loading\n              style={{\n                width: '100%',\n                display: 'flex',\n                justifyContent: 'center',\n              }}\n            />\n          ) : (\n            slots['content-loading']({ dataLength: dataList.value?.length })\n          )}\n        </div>\n      )\n    }\n\n    const renderEmpty = () => {\n      return (\n        <Empty\n          description={mergedOptions.value?.emptyText}\n          image={mergedOptions.value?.emptyImage}\n        />\n      )\n    }\n\n    const renderExtra = () => {\n      return (\n        <>\n          {slots?.['content-extra'] &&\n            slots?.['content-extra']({ dataLength: dataList.value?.length })}\n        </>\n      )\n    }\n\n    const rootComponent = computed(() =>\n      mergedOptions.value?.usePullRefresh && mergedOptions.value?.request\n        ? PullRefresh\n        : 'div'\n    )\n    return () => (\n      <rootComponent.value\n        modelValue={isRefreshing}\n        onUpdate:modelValue={(val: boolean) => (isRefreshing.value = val)}\n        class={rootClass.value}\n        onRefresh={refresh}\n        style={mergedOptions.value?.style}\n      >\n        {loading.value\n          ? renderLoading()\n          : !isEmpty(dataList.value)\n          ? renderList()\n          : renderEmpty()}\n        {renderExtra()}\n      </rootComponent.value>\n    )\n  },\n})\n"],"names":["name","bem","t","createNamespace","defineComponent","props","options","type","Object","default","safeAreaInsetBottom","Boolean","center","disabled","cutline","isLink","immediateCheck","emits","setup","emit","slots","expose","defaultOptions","computed","usePagination","usePullRefresh","usePadding","useBackground","useCell","cellValueWidthAuto","useIcon","iconSize","useManuallyLoad","autoInitRequest","cellPath","title","label","value","icon","pagination","current","size","pages","paginationKeys","total","params","request","data","resultPath","errorIcon","style","filter","includes","keyword","mergedOptions","_a","_b","obj","mergeWith","sourceData","dataList","ref","loading","loadingList","isRefreshing","finished","longPressTimer","getList","init","_c","_d","then","r","_e","_f","_g","code","get","roundUpToInteger","newData","showToast","msg","catch","err","decimalNumber","Number","isInteger","integerPart","Math","floor","result","onClickItem","item","onLoad","refresh","deletes","ids","key","remove","paginationLoad","longPress","setTimeout","clearTimeout","cellProps","getPathData","loadingRefresh","watch","val","deep","immediate","v","includesStr","join","at","onMounted","rootClass","padding","background","renderList","listComponent","List","_createVNode","$event","map","index","renderListItem","renderIcon","iconInstance","isXzxIcon","Icon","Image","error","Pic","listItemComponent","shallowRef","Cell","listItemClass","first","length","last","_mergeProps","onClick","onTouchstart","onTouchend","scopeIndex","dataLength","undefined","rightIcon","renderLoading","Loading","width","display","justifyContent","renderEmpty","Empty","emptyText","emptyImage","renderExtra","_Fragment","rootComponent","PullRefresh","isEmpty"],"mappings":"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"}