dropdown.mjs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import { useTooltipTriggerProps } from '../../tooltip/src/trigger.mjs';
  2. import { roleTypes } from '../../popper/src/popper.mjs';
  3. import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
  4. import { EVENT_CODE } from '../../../constants/aria.mjs';
  5. import { useTooltipContentProps } from '../../tooltip/src/content.mjs';
  6. import { iconPropType } from '../../../utils/vue/icon.mjs';
  7. import { createCollectionWithScope } from '../../collection/src/collection.mjs';
  8. const dropdownProps = buildProps({
  9. trigger: useTooltipTriggerProps.trigger,
  10. triggerKeys: {
  11. type: definePropType(Array),
  12. default: () => [
  13. EVENT_CODE.enter,
  14. EVENT_CODE.numpadEnter,
  15. EVENT_CODE.space,
  16. EVENT_CODE.down
  17. ]
  18. },
  19. effect: {
  20. ...useTooltipContentProps.effect,
  21. default: "light"
  22. },
  23. type: {
  24. type: definePropType(String)
  25. },
  26. placement: {
  27. type: definePropType(String),
  28. default: "bottom"
  29. },
  30. popperOptions: {
  31. type: definePropType(Object),
  32. default: () => ({})
  33. },
  34. id: String,
  35. size: {
  36. type: String,
  37. default: ""
  38. },
  39. splitButton: Boolean,
  40. hideOnClick: {
  41. type: Boolean,
  42. default: true
  43. },
  44. loop: {
  45. type: Boolean,
  46. default: true
  47. },
  48. showTimeout: {
  49. type: Number,
  50. default: 150
  51. },
  52. hideTimeout: {
  53. type: Number,
  54. default: 150
  55. },
  56. tabindex: {
  57. type: definePropType([Number, String]),
  58. default: 0
  59. },
  60. maxHeight: {
  61. type: definePropType([Number, String]),
  62. default: ""
  63. },
  64. popperClass: {
  65. type: String,
  66. default: ""
  67. },
  68. disabled: Boolean,
  69. role: {
  70. type: String,
  71. values: roleTypes,
  72. default: "menu"
  73. },
  74. buttonProps: {
  75. type: definePropType(Object)
  76. },
  77. teleported: useTooltipContentProps.teleported,
  78. persistent: {
  79. type: Boolean,
  80. default: true
  81. }
  82. });
  83. const dropdownItemProps = buildProps({
  84. command: {
  85. type: [Object, String, Number],
  86. default: () => ({})
  87. },
  88. disabled: Boolean,
  89. divided: Boolean,
  90. textValue: String,
  91. icon: {
  92. type: iconPropType
  93. }
  94. });
  95. const dropdownMenuProps = buildProps({
  96. onKeydown: { type: definePropType(Function) }
  97. });
  98. const FIRST_KEYS = [
  99. EVENT_CODE.down,
  100. EVENT_CODE.pageDown,
  101. EVENT_CODE.home
  102. ];
  103. const LAST_KEYS = [EVENT_CODE.up, EVENT_CODE.pageUp, EVENT_CODE.end];
  104. const FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];
  105. const {
  106. ElCollection,
  107. ElCollectionItem,
  108. COLLECTION_INJECTION_KEY,
  109. COLLECTION_ITEM_INJECTION_KEY
  110. } = createCollectionWithScope("Dropdown");
  111. export { COLLECTION_INJECTION_KEY as DROPDOWN_COLLECTION_INJECTION_KEY, COLLECTION_ITEM_INJECTION_KEY as DROPDOWN_COLLECTION_ITEM_INJECTION_KEY, ElCollection, ElCollectionItem, FIRST_KEYS, FIRST_LAST_KEYS, LAST_KEYS, dropdownItemProps, dropdownMenuProps, dropdownProps };
  112. //# sourceMappingURL=dropdown.mjs.map