index.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
  2. import type {
  3. AutoCompleteProps,
  4. AutocompleteSelectValue,
  5. } from '#shared/components/Form/fields/FieldAutocomplete/types.ts'
  6. import createInput from '#shared/form/core/createInput.ts'
  7. import addLink from '#shared/form/features/addLink.ts'
  8. import formUpdaterTrigger from '#shared/form/features/formUpdaterTrigger.ts'
  9. import FieldAutoCompleteInput from './FieldAutoCompleteInput.vue'
  10. import type { FormKitBaseSlots, FormKitInputs } from '@formkit/inputs'
  11. declare module '@formkit/inputs' {
  12. interface FormKitInputProps<Props extends FormKitInputs<Props>> {
  13. autocomplete: AutoCompleteProps & {
  14. type: 'autocomplete'
  15. value: AutocompleteSelectValue | null
  16. }
  17. }
  18. interface FormKitInputSlots<Props extends FormKitInputs<Props>> {
  19. treeselect: FormKitBaseSlots<Props>
  20. }
  21. }
  22. export const autoCompleteProps = [
  23. 'action',
  24. 'actionIcon',
  25. 'actionLabel',
  26. 'additionalQueryParams',
  27. 'allowUnknownValues',
  28. 'clearable',
  29. 'debounceInterval',
  30. 'defaultFilter',
  31. 'filterInputPlaceholder',
  32. 'filterInputValidation',
  33. 'limit',
  34. 'multiple',
  35. 'noOptionsLabelTranslation',
  36. 'belongsToObjectField',
  37. 'optionIcon',
  38. 'dialogNotFoundMessage',
  39. 'dialogEmptyMessage',
  40. 'options',
  41. 'initialOptionBuilder',
  42. 'sorting',
  43. 'complexValue',
  44. 'clearValue',
  45. ]
  46. const fieldDefinition = createInput(
  47. FieldAutoCompleteInput,
  48. [...autoCompleteProps, 'gqlQuery'],
  49. { features: [addLink, formUpdaterTrigger()] },
  50. { addArrow: true },
  51. )
  52. export default {
  53. fieldType: 'autocomplete',
  54. definition: fieldDefinition,
  55. }