{"version":3,"file":"button.mjs","sources":["../../../packages/components/src/button.tsx"],"sourcesContent":["import {\n  ElButton,\n  ElDropdown,\n  ElDropdownItem,\n  ElDropdownMenu,\n  ElTooltip,\n} from 'element-plus'\nimport { JustifyFunSymbol, SizeSymbol } from '../../keys'\nimport type { App } from 'vue'\nimport type {\n  BtnDataType,\n  PowerfulTableHeaderProps,\n  SFCWithInstall,\n} from '~/index'\nimport {\n  isProperty,\n  powerfulTableComponentProp,\n} from '~/powerful-table/src/powerful-table-data'\nimport { LangKey, t } from '~/locale/lang'\n\nconst Button = defineComponent({\n  name: 'PTButton',\n  props: {\n    ...powerfulTableComponentProp,\n    prop: {\n      type: Object as PropType<PowerfulTableHeaderProps>,\n      default: () => ({}),\n    },\n  },\n  emits: ['return-emit', 'component-emit'],\n  setup(props, { emit }) {\n    const justifyFun = inject(JustifyFunSymbol)!\n    const size = inject(SizeSymbol)\n\n    const btn = (item: BtnDataType, btnIndex: number[]) => (\n      <ElButton\n        size={size}\n        style={item.style || {}}\n        type={'primary'}\n        onClick={(e: Event) => {\n          e.stopPropagation()\n          if (!item.isMore) {\n            if (typeof item.click === 'function') {\n              item.click({\n                props: props.prop,\n                params: item.params,\n                row: props.row,\n                index: props.index!,\n                btnIndex,\n              })\n              return\n            }\n\n            if (typeof item.beforeClick === 'function') {\n              new Promise((resolve) => {\n                item.beforeClick!(\n                  {\n                    row: props.row,\n                    index: props.index!,\n                    btnIndex,\n                    props: props.prop,\n                    params: item.params,\n                  },\n                  resolve\n                )\n              }).then((res) => {\n                if (res) {\n                  emit('return-emit', 'btn-click', {\n                    props: props.prop,\n                    params: item.params,\n                    row: props.row,\n                    index: props.index,\n                    btnIndex,\n                  })\n                }\n              })\n            } else {\n              emit('return-emit', 'btn-click', {\n                props: props.prop,\n                params: item.params,\n                row: props.row,\n                index: props.index,\n                btnIndex,\n              })\n            }\n          }\n        }}\n        {...isProperty(\n          { row: props.row, index: props.index!, props: props.prop },\n          item?.property\n        )}\n      >\n        {item.text}\n      </ElButton>\n    )\n\n    // 提示\n    const tipRender = (item: BtnDataType, index: number[]) => (\n      <>\n        {item.tip ? (\n          <ElTooltip\n            popper-class={item.tip ? '' : 'no-tooltip'}\n            effect=\"dark\"\n            content={item.tip}\n            placement=\"top\"\n            {...item.tipProperty}\n          >\n            {btn(item, index)}\n          </ElTooltip>\n        ) : (\n          <>{btn(item, index)}</>\n        )}\n      </>\n    )\n\n    return () => (\n      <>\n        <div\n          class=\"btnType\"\n          style={{\n            display: 'flex',\n            alignItems: 'center',\n            width: '100%',\n            flexWrap: 'wrap',\n            justifyContent: justifyFun(props.aligning),\n          }}\n        >\n          <span style={{ marginRight: props.prop.text ? '10px' : '0px' }}>\n            {props.prop.text || ''}\n          </span>\n          {(props.prop.data as BtnDataType[])\n            ?.filter((item) => {\n              if (typeof item.showBtn === 'function') {\n                return item.showBtn(props.row, props.index!)\n              } else {\n                return item.showBtn === undefined ? true : item.showBtn\n              }\n            })\n            .map((item, index) => {\n              return Array.isArray(item) ? (\n                <ElDropdown\n                  class=\"el-dropdown-more\"\n                  v-slots={{\n                    dropdown: () => (\n                      <ElDropdownMenu>\n                        {(item as BtnDataType[])\n                          .filter((each) => !each.isMore)\n                          .map((each, i) => (\n                            <ElDropdownItem key={index}>\n                              {tipRender(each, [index, i])}\n                            </ElDropdownItem>\n                          ))}\n                      </ElDropdownMenu>\n                    ),\n                  }}\n                >\n                  <div>\n                    {(item.some((each) => each.isMore)\n                      ? [item.find((each) => each.isMore)]\n                      : [{ tip: t(LangKey.More) }]\n                    ).map((each) => (\n                      <>{btn(each, [index])}</>\n                    ))}\n                  </div>\n                </ElDropdown>\n              ) : (\n                tipRender(item, [index])\n              )\n            })}\n        </div>\n      </>\n    )\n  },\n})\n\nButton.install = (app: App) => {\n  app.component(Button.name!, Button)\n}\nexport const PTButton = Button as SFCWithInstall<typeof Button>\nexport default Button\n"],"names":["_isSlot","s","_isVNode","Button","defineComponent","powerfulTableComponentProp","props","emit","justifyFun","inject","JustifyFunSymbol","size","SizeSymbol","btn","item","btnIndex","_createVNode","ElButton","_mergeProps","e","resolve","res","isProperty","tipRender","index","_slot","_Fragment","ElTooltip","_a","ElDropdown","each","t","LangKey","_slot3","ElDropdownMenu","i","_slot2","ElDropdownItem","app","PTButton"],"mappings":"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"}