| | |
| | | ## 2.0.0-rc.11 (2020-11-18) |
| | | |
| | | ### ✨ Features |
| | | |
| | | - Added base64 file stream download |
| | | - Optimize upload components and examples |
| | | - New editable row example |
| | | - Add a personal page |
| | | - New form page |
| | | - Add details page |
| | | - Integrate upload components into form by default |
| | | |
| | | ### 🎫 Chores |
| | | |
| | | - Update antdv to `2.0.0-rc.1` (temporarily restore to beta15, rc1 menu freezes too seriously.) |
| | | - Add some notes |
| | | |
| | | ### ✨ Refactor |
| | | |
| | | - Removed `receiveDrawerDataRef` and `transferDrawerData` properties of `useModal` and `useDrawer` |
| | | - `openModal` and `openDrawer` corresponding to `useModal` and `useDrawer` extend the third parameter. Used to open the trigger callback again |
| | | |
| | | ### 🐛 Bug Fixes |
| | | |
| | | - Repair form inputNumber verification error |
| | | - Fix the error of setting the default value of the form |
| | | - Fix the problem of occupying position when the menu collapse button is hidden |
| | | - Fix the form baseColProps does not take effect |
| | | |
| | | ## 2.0.0-rc.10 (2020-11-13) |
| | | |
| | | ### ✨ Refactor |
| | |
| | | ## Wip |
| | | ## 2.0.0-rc.11 (2020-11-18) |
| | | |
| | | ### ✨ Features |
| | | |
| | |
| | | - 更新 antdv 到`2.0.0-rc.1`(暂时还原到 beta15,rc1 菜单卡顿太严重.) |
| | | - 添加部分注释 |
| | | |
| | | ### ✨ Refactor |
| | | |
| | | - 移除`useModal`与`useDrawer`的`receiveDrawerDataRef`和`transferDrawerData`属性 |
| | | - `useModal`与`useDrawer`对应的`openModal`与`openDrawer`扩展第三个参数。用于再次打开触发回调 |
| | | |
| | | ### 🐛 Bug Fixes |
| | | |
| | | - 修复表单 inputNumber 校验错误 |
| | |
| | | { |
| | | "name": "vben-admin-2.0", |
| | | "version": "2.0.0-rc.10", |
| | | "version": "2.0.0-rc.11", |
| | | "scripts": { |
| | | "bootstrap": "yarn install", |
| | | "serve": "esno ./build/script/preserve.ts && cross-env NODE_ENV=development vite", |
| | |
| | | } |
| | | |
| | | export interface ReturnMethods extends DrawerInstance { |
| | | openDrawer: <T = any>(visible?: boolean, data?: T) => void; |
| | | transferDrawerData: (data: any) => void; |
| | | openDrawer: <T = any>(visible?: boolean, data?: T, openOnSet?: boolean) => void; |
| | | } |
| | | |
| | | export type RegisterFn = (drawerInstance: DrawerInstance, uuid?: string) => void; |
| | |
| | | closeDrawer: () => void; |
| | | changeLoading: (loading: boolean) => void; |
| | | changeOkLoading: (loading: boolean) => void; |
| | | receiveDrawerDataRef: any; |
| | | } |
| | | |
| | | export type UseDrawerReturnType = [RegisterFn, ReturnMethods]; |
| | |
| | | UseDrawerInnerReturnType, |
| | | } from './types'; |
| | | |
| | | import { |
| | | ref, |
| | | getCurrentInstance, |
| | | onUnmounted, |
| | | unref, |
| | | reactive, |
| | | computed, |
| | | watchEffect, |
| | | nextTick, |
| | | } from 'vue'; |
| | | import { ref, getCurrentInstance, onUnmounted, unref, reactive, watchEffect, nextTick } from 'vue'; |
| | | |
| | | import { isProdMode } from '/@/utils/env'; |
| | | import { isFunction } from '/@/utils/is'; |
| | |
| | | getInstance().setDrawerProps(props); |
| | | }, |
| | | |
| | | openDrawer: <T = any>(visible = true, data?: T): void => { |
| | | openDrawer: <T = any>(visible = true, data?: T, openOnSet = false): void => { |
| | | getInstance().setDrawerProps({ |
| | | visible: visible, |
| | | }); |
| | | if (data) { |
| | | dataTransferRef[unref(uidRef)] = data; |
| | | dataTransferRef[unref(uidRef)] = openOnSet |
| | | ? { |
| | | ...data, |
| | | __t__: Date.now(), |
| | | } |
| | | }, |
| | | |
| | | transferDrawerData(val: any) { |
| | | dataTransferRef[unref(uidRef)] = val; |
| | | : data; |
| | | } |
| | | }, |
| | | }; |
| | | |
| | |
| | | return [ |
| | | register, |
| | | { |
| | | receiveDrawerDataRef: computed(() => { |
| | | return dataTransferRef[unref(uidRef)]; |
| | | }), |
| | | |
| | | changeLoading: (loading = true) => { |
| | | getInstance().setDrawerProps({ loading }); |
| | | }, |
| | |
| | | |
| | | export type RegisterFn = (modalMethods: ModalMethods, uuid?: string) => void; |
| | | export interface ReturnMethods extends ModalMethods { |
| | | openModal: <T = any>(props?: boolean, data?: T) => void; |
| | | transferModalData: (data: any) => void; |
| | | openModal: <T = any>(props?: boolean, data?: T, openOnSet?: boolean) => void; |
| | | } |
| | | export type UseModalReturnType = [RegisterFn, ReturnMethods]; |
| | | |
| | |
| | | closeModal: () => void; |
| | | changeLoading: (loading: boolean) => void; |
| | | changeOkLoading: (loading: boolean) => void; |
| | | receiveModalDataRef: any; |
| | | } |
| | | export type UseModalInnerReturnType = [RegisterFn, ReturnInnerMethods]; |
| | | |
| | |
| | | ReturnMethods, |
| | | UseModalInnerReturnType, |
| | | } from './types'; |
| | | import { |
| | | ref, |
| | | onUnmounted, |
| | | unref, |
| | | getCurrentInstance, |
| | | reactive, |
| | | computed, |
| | | watchEffect, |
| | | nextTick, |
| | | } from 'vue'; |
| | | import { ref, onUnmounted, unref, getCurrentInstance, reactive, watchEffect, nextTick } from 'vue'; |
| | | import { isProdMode } from '/@/utils/env'; |
| | | import { isFunction } from '/@/utils/is'; |
| | | const dataTransferRef = reactive<any>({}); |
| | |
| | | getInstance().setModalProps(props); |
| | | }, |
| | | |
| | | openModal: <T = any>(visible = true, data?: T): void => { |
| | | openModal: <T = any>(visible = true, data?: T, openOnSet = false): void => { |
| | | getInstance().setModalProps({ |
| | | visible: visible, |
| | | }); |
| | | if (data) { |
| | | dataTransferRef[unref(uidRef)] = data; |
| | | dataTransferRef[unref(uidRef)] = openOnSet |
| | | ? { |
| | | ...data, |
| | | __t__: Date.now(), |
| | | } |
| | | }, |
| | | |
| | | transferModalData(val: any) { |
| | | dataTransferRef[unref(uidRef)] = val; |
| | | : data; |
| | | } |
| | | }, |
| | | }; |
| | | return [register, methods]; |
| | |
| | | return [ |
| | | register, |
| | | { |
| | | receiveModalDataRef: computed(() => { |
| | | return dataTransferRef[unref(uidRef)]; |
| | | }), |
| | | |
| | | changeLoading: (loading = true) => { |
| | | getInstance().setModalProps({ loading }); |
| | | }, |
| | |
| | | <template> |
| | | <BasicDrawer v-bind="$attrs" @register="register" title="Drawer Title" width="50%"> |
| | | <div> |
| | | <p class="h-20">外部传递数据: {{ receiveDrawerDataRef }}</p> |
| | | <BasicForm @register="registerForm" /> |
| | | </div> |
| | | </BasicDrawer> |
| | |
| | | span: 24, |
| | | }, |
| | | }); |
| | | const [register, { receiveDrawerDataRef }] = useDrawerInner((data) => { |
| | | const [register] = useDrawerInner((data) => { |
| | | // 方式1 |
| | | setFieldsValue({ |
| | | field2: data.data, |
| | | field1: data.info, |
| | | }); |
| | | }); |
| | | return { register, receiveDrawerDataRef, schemas, registerForm }; |
| | | return { register, schemas, registerForm }; |
| | | }, |
| | | }); |
| | | </script> |
| | |
| | | <template> |
| | | <BasicModal v-bind="$attrs" @register="register" title="Modal Title"> |
| | | <p class="h-20">外部传递数据: {{ receiveModalDataRef }}</p> |
| | | <BasicForm @register="registerForm" :model="model" /> |
| | | </BasicModal> |
| | | </template> |
| | |
| | | }, |
| | | }); |
| | | |
| | | const [register, { receiveModalDataRef }] = useModalInner((data) => { |
| | | const [register] = useModalInner((data) => { |
| | | // 方式1 |
| | | // setFieldsValue({ |
| | | // field2: data.data, |
| | |
| | | // model:{ field2: data.data, field1: data.info } |
| | | // }) |
| | | }); |
| | | return { register, receiveModalDataRef, schemas, registerForm, model: modelRef }; |
| | | return { register, schemas, registerForm, model: modelRef }; |
| | | }, |
| | | }); |
| | | </script> |
| | |
| | | const [register1, { openModal: openModal1, setModalProps }] = useModal(); |
| | | const [register2, { openModal: openModal2 }] = useModal(); |
| | | const [register3, { openModal: openModal3 }] = useModal(); |
| | | const [ |
| | | register4, |
| | | { |
| | | openModal: openModal4, |
| | | // transferModalData |
| | | }, |
| | | ] = useModal(); |
| | | const [register4, { openModal: openModal4 }] = useModal(); |
| | | function send() { |
| | | // transferModalData({ |
| | | // data: 'content', |
| | | // info: 'Info', |
| | | // }); |
| | | // setTimeout(() => { |
| | | // transferModalData({ |
| | | // data: 'content1', |
| | | // info: 'Info1', |
| | | // }); |
| | | // }, 3000); |
| | | openModal4(true, { |
| | | data: 'content', |
| | | info: 'Info', |