|
1 |
| -import { Fragment, useEffect, useRef, useState } from 'react' |
| 1 | +import { Fragment, useEffect, useMemo, useRef, useState } from 'react' |
2 | 2 | import { Menu, Transition } from '@headlessui/react'
|
3 | 3 | import { KernDropdownProps } from '../types/dropdown';
|
4 | 4 | import { combineClassNames } from '../../javascript-functions/general';
|
@@ -63,6 +63,16 @@ export default function KernDropdown(props: KernDropdownProps) {
|
63 | 63 | setBackgroundColors(props.backgroundColors.map((x) => "bg-" + reduceColorProperty(x, '100')));
|
64 | 64 | }, [props.backgroundColors]);
|
65 | 65 |
|
| 66 | + const positionDropdown = useMemo(() => { |
| 67 | + if (!props.positionDropdown) return ""; |
| 68 | + switch (props.positionDropdown) { |
| 69 | + case "top": return "-translate-x-1/2 left-1/2 bottom-full"; |
| 70 | + case "bottom": return "-translate-x-1/2 left-1/2 top-full"; |
| 71 | + case "left": return "-translate-y-1/2 top-1/2 right-full"; |
| 72 | + case "right": return "-translate-y-1/2 top-1/2 left-full"; |
| 73 | + } |
| 74 | + }, [props.positionDropdown]); |
| 75 | + |
66 | 76 | function setOptionsWithCheckboxes(options: any[]) {
|
67 | 77 | if (selectedCheckboxes.length > 0) return;
|
68 | 78 | const newSelectedCheckboxes = options.map((option: any, index: number) => {
|
@@ -203,7 +213,7 @@ export default function KernDropdown(props: KernDropdownProps) {
|
203 | 213 | leaveTo="transform opacity-0 scale-95"
|
204 | 214 | show={isOpen}
|
205 | 215 | >
|
206 |
| - <Menu.Items className={`absolute z-10 mt-2 origin-top-right rounded-md bg-white shadow-sm ring-1 ring-black ring-opacity-5 focus:outline-none ${props.dropdownItemsWidth ?? 'w-full'} ${props.dropdownItemsClasses ?? ''}`}> |
| 216 | + <Menu.Items className={`absolute z-10 mt-2 origin-top-right rounded-md bg-white shadow-sm ring-1 ring-black ring-opacity-5 focus:outline-none ${props.dropdownItemsWidth ?? 'w-full'} ${props.dropdownItemsClasses ?? ''} ${positionDropdown}`}> |
207 | 217 | <div className="py-1">
|
208 | 218 | {dropdownCaptions.map((option: any, index: number) => (
|
209 | 219 | <div key={option + "-" + index} className='relative'>
|
|
0 commit comments