vuestic-ui
Version:
Vue 3 UI Framework
1 lines • 2.25 kB
Source Map (JSON)
{"version":3,"file":"useDropdownable.mjs","sources":["../../../../src/composables/useDropdownable.ts"],"sourcesContent":["import { watch, ExtractPropTypes, Ref, computed, unref } from 'vue'\nimport { useSyncProp } from './useSyncProp'\nimport { extractComponentProps, filterComponentProps } from '../utils/component-options'\nimport { VaDropdown } from '../components/va-dropdown'\n\nconst VaDropdownProps = extractComponentProps(VaDropdown,\n ['innerAnchorSelector', 'stateful', 'keyboardNavigation', 'modelValue'],\n)\n\nexport const useDropdownableProps = {\n ...VaDropdownProps,\n modelValue: {},\n /**\n * Close dropdown on value updated.\n * @default null - behavior controlled by component\n */\n closeOnChange: { type: Boolean, default: null },\n isOpen: { type: Boolean, default: undefined },\n}\n\nexport const useDropdownableEmits = ['update:isOpen']\n\n/** Used in components where dropdown is used */\nexport const useDropdownable = function (\n props: ExtractPropTypes<typeof useDropdownableProps>,\n emit: (event: 'update:isOpen', ...args: any[]) => void,\n options: {\n /** @default false */\n defaultCloseOnValueUpdate?: boolean | Ref<boolean>\n } = {},\n) {\n const [isOpenSync] = useSyncProp('isOpen', props, emit, false)\n\n const doWatch = computed(() => props.closeOnChange !== null ? props.closeOnChange : unref(options.defaultCloseOnValueUpdate || false))\n\n watch(() => props.modelValue, () => {\n if (doWatch.value) {\n isOpenSync.value = false\n }\n })\n\n return {\n dropdownProps: filterComponentProps(VaDropdownProps),\n isOpenSync,\n }\n}\n"],"names":[],"mappings":";;;;;AAKA,MAAM,kBAAkB;AAAA,EAAsB;AAAA,EAC5C,CAAC,uBAAuB,YAAY,sBAAsB,YAAY;AACxE;AAEO,MAAM,uBAAuB;AAAA,EAClC,GAAG;AAAA,EACH,YAAY,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKb,eAAe,EAAE,MAAM,SAAS,SAAS,KAAK;AAAA,EAC9C,QAAQ,EAAE,MAAM,SAAS,SAAS,OAAU;AAC9C;AAEa,MAAA,uBAAuB,CAAC,eAAe;AAG7C,MAAM,kBAAkB,SAC7B,OACA,MACA,UAGI,CAAA,GACJ;AACA,QAAM,CAAC,UAAU,IAAI,YAAY,UAAU,OAAO,MAAM,KAAK;AAE7D,QAAM,UAAU,SAAS,MAAM,MAAM,kBAAkB,OAAO,MAAM,gBAAgB,MAAM,QAAQ,6BAA6B,KAAK,CAAC;AAE/H,QAAA,MAAM,MAAM,YAAY,MAAM;AAClC,QAAI,QAAQ,OAAO;AACjB,iBAAW,QAAQ;AAAA,IACrB;AAAA,EAAA,CACD;AAEM,SAAA;AAAA,IACL,eAAe,qBAAqB,eAAe;AAAA,IACnD;AAAA,EAAA;AAEJ;"}