{"version":3,"file":"form-submit.vue2.cjs","sources":["../../../components/form/form-submit.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Button } from '@/components/button'\nimport { FIELD_OPTIONS } from '@/components/form/symbol'\n\nimport { computed, inject, ref, toRef } from 'vue'\n\nimport { createIconProp, emitEvent, useLocale, useNameHelper, useProps } from '@vexip-ui/config'\nimport { useSetTimeout } from '@vexip-ui/hooks'\nimport { isPromise } from '@vexip-ui/utils'\nimport { formSubmitProps } from './props'\nimport { FORM_ACTIONS, FORM_PROPS } from './symbol'\n\ndefineOptions({ name: 'FormSubmit' })\n\nconst _props = defineProps(formSubmitProps)\nconst props = useProps('form-submit', _props, {\n  size: null,\n  locale: null,\n  type: 'primary',\n  label: null,\n  dashed: null,\n  text: null,\n  simple: null,\n  ghost: null,\n  disabled: null,\n  circle: null,\n  loadingIcon: createIconProp(),\n  loadingEffect: null,\n  icon: createIconProp(),\n  color: null,\n  buttonType: null,\n  block: null,\n  onBeforeSubmit: {\n    default: null,\n    isFunc: true,\n  },\n})\n\nconst slots = defineSlots<{\n  default?: () => any,\n  icon?: () => any,\n  loading?: () => any\n}>()\n\nconst fieldActions = inject(FIELD_OPTIONS, null)\n\nconst formProps = inject(FORM_PROPS, {})\nconst actions = inject(FORM_ACTIONS, null)\n\nconst nh = useNameHelper('form')\nconst locale = useLocale('form', toRef(props, 'locale'))\n\nconst { timer } = useSetTimeout()\n\nconst loading = ref(false)\n\nconst submit = ref<HTMLElement>()\n\nconst isNative = computed(() => formProps.method && formProps.action)\nconst isInherit = computed(() => !!actions || props.inherit)\nconst isLoading = computed(() => {\n  return loading.value || (fieldActions ? fieldActions.loading.value : false)\n})\n\ndefineExpose({ submit, isNative, isLoading })\n\nasync function handleSubmit() {\n  if (props.disabled || loading.value || !actions) return\n\n  loading.value = true\n\n  const errors = await actions.validate()\n\n  if (errors.length) {\n    emitEvent(props.onError, errors)\n  } else {\n    let result: unknown = true\n\n    if (typeof props.onBeforeSubmit === 'function') {\n      result = props.onBeforeSubmit()\n\n      if (isPromise(result)) {\n        result = await result\n      }\n    }\n\n    if (result !== false) {\n      emitEvent(props.onSubmit)\n\n      if (isNative.value) {\n        submit.value?.click()\n      }\n    }\n  }\n\n  timer.loading = setTimeout(() => {\n    loading.value = false\n  }, 300)\n}\n</script>\n\n<template>\n  <Button\n    v-bind=\"$attrs\"\n    :inherit=\"isInherit\"\n    :class=\"nh.be('submit')\"\n    :size=\"props.size\"\n    :type=\"props.type\"\n    :simple=\"props.simple\"\n    :ghost=\"props.ghost\"\n    :dashed=\"props.dashed\"\n    :text=\"props.text\"\n    :disabled=\"props.disabled\"\n    :loading=\"isLoading\"\n    :circle=\"props.circle\"\n    :loading-icon=\"props.loadingIcon\"\n    :loading-effect=\"props.loadingEffect\"\n    :icon=\"props.icon\"\n    :color=\"props.color\"\n    :button-type=\"props.buttonType\"\n    :block=\"props.block\"\n    :tag=\"props.tag\"\n    @click=\"handleSubmit\"\n  >\n    <slot>\n      {{ props.label || locale.submit }}\n    </slot>\n    <template v-if=\"slots.icon\" #icon>\n      <slot name=\"icon\"></slot>\n    </template>\n    <template v-if=\"slots.loading\" #loading>\n      <slot name=\"loading\"></slot>\n    </template>\n    <button\n      v-if=\"isNative\"\n      ref=\"submit\"\n      type=\"submit\"\n      style=\"display: none\"\n      @click.stop\n    ></button>\n  </Button>\n</template>\n"],"names":["_props","__props","props","useProps","createIconProp","slots","_useSlots","fieldActions","inject","FIELD_OPTIONS","formProps","FORM_PROPS","actions","FORM_ACTIONS","nh","useNameHelper","locale","useLocale","toRef","timer","useSetTimeout","loading","ref","submit","isNative","computed","isInherit","isLoading","__expose","handleSubmit","errors","emitEvent","result","isPromise","_a","_createBlock","_unref","Button","_mergeProps","_ctx","_renderSlot","_createTextVNode","_toDisplayString","_createElementBlock"],"mappings":"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"}