f5274516180c5bdbf40a6d6f2a67875012377b64e385a8212a2f042c34f74f570b7b2be04fb5ba8f1dba4f6bbcf28eb7652819817b7310243bb8384c12afa8 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { inject, ref, getCurrentInstance, computed, onMounted, watch, toRef, onUnmounted } from 'vue';
  2. import { useId } from '../../../../hooks/use-id/index.mjs';
  3. import { formContextKey, formItemContextKey } from '../constants.mjs';
  4. const useFormItem = () => {
  5. const form = inject(formContextKey, void 0);
  6. const formItem = inject(formItemContextKey, void 0);
  7. return {
  8. form,
  9. formItem
  10. };
  11. };
  12. const useFormItemInputId = (props, {
  13. formItemContext,
  14. disableIdGeneration,
  15. disableIdManagement
  16. }) => {
  17. if (!disableIdGeneration) {
  18. disableIdGeneration = ref(false);
  19. }
  20. if (!disableIdManagement) {
  21. disableIdManagement = ref(false);
  22. }
  23. const instance = getCurrentInstance();
  24. const inLabel = () => {
  25. let parent = instance == null ? void 0 : instance.parent;
  26. while (parent) {
  27. if (parent.type.name === "ElFormItem") {
  28. return false;
  29. }
  30. if (parent.type.name === "ElLabelWrap") {
  31. return true;
  32. }
  33. parent = parent.parent;
  34. }
  35. return false;
  36. };
  37. const inputId = ref();
  38. let idUnwatch = void 0;
  39. const isLabeledByFormItem = computed(() => {
  40. var _a;
  41. return !!(!(props.label || props.ariaLabel) && formItemContext && formItemContext.inputIds && ((_a = formItemContext.inputIds) == null ? void 0 : _a.length) <= 1);
  42. });
  43. onMounted(() => {
  44. idUnwatch = watch([toRef(props, "id"), disableIdGeneration], ([id, disableIdGeneration2]) => {
  45. const newId = id != null ? id : !disableIdGeneration2 ? useId().value : void 0;
  46. if (newId !== inputId.value) {
  47. if ((formItemContext == null ? void 0 : formItemContext.removeInputId) && !inLabel()) {
  48. inputId.value && formItemContext.removeInputId(inputId.value);
  49. if (!(disableIdManagement == null ? void 0 : disableIdManagement.value) && !disableIdGeneration2 && newId) {
  50. formItemContext.addInputId(newId);
  51. }
  52. }
  53. inputId.value = newId;
  54. }
  55. }, { immediate: true });
  56. });
  57. onUnmounted(() => {
  58. idUnwatch && idUnwatch();
  59. if (formItemContext == null ? void 0 : formItemContext.removeInputId) {
  60. inputId.value && formItemContext.removeInputId(inputId.value);
  61. }
  62. });
  63. return {
  64. isLabeledByFormItem,
  65. inputId
  66. };
  67. };
  68. export { useFormItem, useFormItemInputId };
  69. //# sourceMappingURL=use-form-item.mjs.map