snail.vue 2.0.10 → 2.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import * as snail_view from 'snail.view';
2
2
  import { BaseStyle, HeightStyle, FlexBoxStyle, WidthStyle, BorderStyle, PaddingStyle, MarginStyle } from 'snail.view';
3
3
  import * as vue from 'vue';
4
4
  import { Component, ShallowRef, Ref, WatchSource, App } from 'vue';
5
- import { IScope, RunResult, ITimeValueManager, IAsyncScope } from 'snail.core';
5
+ import { IScope, RunResult, DateFormat, DateValue, TimeValue, IAsyncScope } from 'snail.core';
6
6
 
7
7
  /**
8
8
  * loading提示框的配置选项
@@ -265,18 +265,6 @@ type ScrollOptions = {
265
265
  * - none :无,不显示滚动条,但仍然能够滚动
266
266
  */
267
267
  barSize?: "normal" | "small" | "mini" | "none";
268
- /**
269
- * 滚动条模式
270
- * - auto(默认值):自动,内容溢出时自动显示滚动条
271
- * - hover:鼠标进入时才显示滚动条
272
- */
273
- barMode?: "auto" | "hover";
274
- /**
275
- * 滚动条防抖处理
276
- * - 垂直滚动条在【有-无】之间变化时,会导致内容width变化,从而产生抖动
277
- * - 为true时,会给滚动条方向一个处理padding值,从而实现防抖效果
278
- */
279
- debounce?: boolean;
280
268
  };
281
269
  /**
282
270
  * 滚动视图事件
@@ -905,54 +893,6 @@ type SortEvent = {
905
893
  newIndex: number | undefined;
906
894
  };
907
895
 
908
- /**
909
- * 布局组件 数据结构
910
- */
911
-
912
- /**
913
- * 布局组件配置选项
914
- */
915
- type LayoutOptions = {
916
- /**
917
- * 布局模式:水平,还是垂直
918
- */
919
- mode: "horizontal" | "vertical";
920
- /**
921
- * 滚动相关配置
922
- * - 中部区域的配置
923
- */
924
- scroll?: ScrollOptions;
925
- };
926
-
927
- /**
928
- * 折叠面板配置选项
929
- * - title 折叠面板标题
930
- * - disabled 禁用折叠效果,始终展开
931
- */
932
- type FoldOptions = DisabledOptions & TitleOptions & {
933
- /**
934
- * 副标题
935
- * - 跟随在title后
936
- */
937
- subtitle?: string;
938
- };
939
- /**
940
- * 折叠状态
941
- * - expand : 展开状态
942
- * - fold : 折叠状态
943
- */
944
- type FoldStatus = "expand" | "fold";
945
- /**
946
- * 折叠面板事件
947
- */
948
- type FoldEvents = {
949
- /**
950
- * 折叠状态发生改变时
951
- * @param status 折叠状态
952
- */
953
- change: [status: FoldStatus];
954
- };
955
-
956
896
  /**
957
897
  * 组件配置选项
958
898
  */
@@ -989,6 +929,12 @@ type PropsType<Props> = Props extends Record<string, any> ? Props : undefined;
989
929
  type EmitterType<Events extends Record<string, any[]>> = {
990
930
  <K extends keyof Events>(event: K, ...payload: Events[K]): any;
991
931
  };
932
+ /**
933
+ * 提取【组件插槽】类型
934
+ */
935
+ type SlotsType<Slots extends Record<string, any>> = {
936
+ [key in keyof Slots]: (props: Slots[key]) => any;
937
+ };
992
938
  /**
993
939
  * 提取【组件事件】类型
994
940
  * - 将【组件事件】中的key首字母小写,追加上on前缀;key对应的value为监听函数参数
@@ -1018,6 +964,113 @@ type ComponentBindOptions<Props = void, Model = void> = {
1018
964
  model?: Model extends (void | never | null | undefined) ? undefined : (ShallowRef<Model> | Ref<Model>);
1019
965
  };
1020
966
 
967
+ /**
968
+ * 布局组件 数据结构
969
+ */
970
+
971
+ /**
972
+ * 布局组件 配置选项
973
+ */
974
+ type LayoutOptions = {
975
+ /**
976
+ * 布局模式
977
+ * - horizontal 水平布局:左中右
978
+ * - vertical 垂直布局:上中下
979
+ * - 默认为 `horizontal`
980
+ */
981
+ mode?: "horizontal" | "vertical";
982
+ /**
983
+ * 主内容区域配置
984
+ * - 对应插槽名:main;主要内容显示区域,处于布局中的【中】区域
985
+ * - 配置主内容区域的滚动条配置
986
+ */
987
+ main?: Pick<LayoutAraeOptions<void>, "scroll">;
988
+ /**
989
+ * 【左侧】区域配置
990
+ * - 对应插槽名`left` ;`mode` 为 `horizontal` 时生效
991
+ * - 配置滚动条和宽度;宽度不配置时,默认 `fit-content`
992
+ * -
993
+ */
994
+ left?: LayoutAraeOptions<WidthStyle>;
995
+ /**
996
+ * 【右测】区域配置
997
+ * - 对应插槽名`right` ;`mode` 为 `horizontal` 时生效
998
+ * - 配置滚动条和宽度;宽度不配置时,默认 `fit-content`
999
+ */
1000
+ right?: LayoutAraeOptions<WidthStyle>;
1001
+ /**
1002
+ * 【顶部】区域配置
1003
+ * - 对应插槽名`top`;`mode` 为 `vertical` 时生效
1004
+ * - 配置滚动条和高度;高度不配置时,默认 `fit-content`
1005
+ * -
1006
+ */
1007
+ top?: LayoutAraeOptions<HeightStyle>;
1008
+ /**
1009
+ * 【底部】区域配置
1010
+ * - 对应插槽名`bottom`;`mode` 为 `vertical` 时生效
1011
+ * - 配置滚动条和高度;高度不配置时,默认 `fit-content`
1012
+ */
1013
+ bottom?: LayoutAraeOptions<HeightStyle>;
1014
+ };
1015
+ /**
1016
+ * 布局组件子区域 配置选项
1017
+ */
1018
+ type LayoutAraeOptions<Style extends WidthStyle | HeightStyle | void> = Style & {
1019
+ /**
1020
+ * 滚动视图配置
1021
+ * - 视图属性:滚动条大小、显示时机
1022
+ * - 滚动事件:滚动条显隐、滚动到顶部、底部、、、
1023
+ * - 不传入则当前区域`overflow:hidden`溢出隐藏
1024
+ */
1025
+ scroll?: ScrollOptions & EventsType<ScrollEvents>;
1026
+ };
1027
+ /**
1028
+ * 布局组件的子区域项目 描述
1029
+ */
1030
+ type LayoutAreaItem = {
1031
+ /**
1032
+ * 是否可滚动
1033
+ */
1034
+ scrollable: boolean;
1035
+ /**
1036
+ * 内容区域元素的类样式名
1037
+ */
1038
+ class: string;
1039
+ /**
1040
+ * css样式
1041
+ */
1042
+ style: Record<string, string>;
1043
+ };
1044
+
1045
+ /**
1046
+ * 折叠面板配置选项
1047
+ * - title 折叠面板标题
1048
+ * - disabled 禁用折叠效果,始终展开
1049
+ */
1050
+ type FoldOptions = DisabledOptions & TitleOptions & {
1051
+ /**
1052
+ * 副标题
1053
+ * - 跟随在title后
1054
+ */
1055
+ subtitle?: string;
1056
+ };
1057
+ /**
1058
+ * 折叠状态
1059
+ * - expand : 展开状态
1060
+ * - fold : 折叠状态
1061
+ */
1062
+ type FoldStatus = "expand" | "fold";
1063
+ /**
1064
+ * 折叠面板事件
1065
+ */
1066
+ type FoldEvents = {
1067
+ /**
1068
+ * 折叠状态发生改变时
1069
+ * @param status 折叠状态
1070
+ */
1071
+ change: [status: FoldStatus];
1072
+ };
1073
+
1021
1074
  /**
1022
1075
  * 选项菜单 基础配置选项
1023
1076
  */
@@ -1996,32 +2049,72 @@ type DynamicOptions<Props = void> = ComponentOptions & Pick<ComponentBindOptions
1996
2049
  declare function mount<Props>(target: HTMLElement, options: DynamicOptions<Props>, onDestroyed?: (fn: () => void) => void): IScope;
1997
2050
 
1998
2051
  /**
1999
- * 时间选择控件配置项
2052
+ * 日期时间的功能禁用配置选项
2000
2053
  */
2001
- type TimePickerOptions = {
2054
+ type DatetimeDisabledOptions = {
2002
2055
  /**
2003
- * 已选值
2004
- * - 格式为 “时:分:秒"
2056
+ * 禁用【工具条】
2057
+ * - 为true则不显示【确定】、【现在】等按钮的工具条区域
2058
+ */
2059
+ toolbarDisabled?: boolean;
2060
+ /**
2061
+ * 禁用【现在】按钮
2062
+ * - 为true时不显示【现在】按钮
2063
+ */
2064
+ nowDisabled?: boolean;
2065
+ /**
2066
+ * 禁用【清空】按钮
2067
+ * - 为true时不显示【清空】按钮
2068
+ */
2069
+ clearDisabled?: boolean;
2070
+ };
2071
+ /**
2072
+ * 日期选择器 配置选项
2073
+ */
2074
+ type DatePickerOptions = {
2075
+ /**
2076
+ * 已选日期值
2077
+ * -格式为 "年-月-日 时:分:秒"
2005
2078
  */
2006
2079
  value?: string;
2007
2080
  /**
2008
- * 禁用【初始化】功能
2009
- * - 仅在`value`为空时才生效,若`value`不为空,则忽略此属性配置
2010
- * - 为true,不自动选中【现在】的时分秒
2011
- * - 为false时,自动选中【现在】的时分秒
2012
- * - 默认自动初始化
2081
+ * 日期格式
2082
+ * - 默认 “yyyy-MM-dd"
2013
2083
  */
2014
- initialDisabled?: boolean;
2084
+ format?: DateFormat;
2015
2085
  /**
2016
- * 禁用【现在】功能
2017
- * - 为true时,不出【现在】功能
2086
+ * 日期最小值
2087
+ * - 选择年月日时,早于此值的年月日不可选
2088
+ * - 确定时,组合时间选取值,晚于此值的日期+时间选择值无效
2018
2089
  */
2019
- nowDisabled?: boolean;
2090
+ min?: string;
2091
+ /**
2092
+ * 日期最大值
2093
+ * - 选择年月日时,晚于此值的年月日不可选
2094
+ * - 组合时间选取值,晚于此值的日期+时间选择值无效
2095
+ */
2096
+ max?: string;
2020
2097
  /**
2021
- * 时间值管理器
2022
- * - 若传入此值,则 `format`、`min`、`max` 失效
2098
+ * 最小选择时间
2099
+ * - 早于此值的时间不可选
2100
+ * - 不参与日期最小值验证,仅在选择时间时框定起始时间
2101
+ */
2102
+ minPickTime?: string;
2103
+ /**
2104
+ * 最大选择时间
2105
+ * - 不参与日期最大值验证,仅在选择时间时框定结束时间
2106
+ */
2107
+ maxPickTime?: string;
2108
+ } & DatetimeDisabledOptions;
2109
+ /**
2110
+ * 时间选择控件配置项
2111
+ */
2112
+ type TimePickerOptions = {
2113
+ /**
2114
+ * 已选值
2115
+ * - 格式为 “时:分:秒"
2023
2116
  */
2024
- manager?: ITimeValueManager;
2117
+ value?: string;
2025
2118
  /**
2026
2119
  * 时间格式
2027
2120
  */
@@ -2040,7 +2133,7 @@ type TimePickerOptions = {
2040
2133
  * - 如 "08" ,则 08:00:00为最大时间,之后时间不可选择
2041
2134
  */
2042
2135
  max?: string;
2043
- };
2136
+ } & DatetimeDisabledOptions;
2044
2137
  /**
2045
2138
  * 日期时间选择 事件
2046
2139
  */
@@ -2055,29 +2148,40 @@ type DatetimePickerEvents = {
2055
2148
  */
2056
2149
  confirm: [value: string];
2057
2150
  };
2058
-
2059
2151
  /**
2060
- * 选择器 相关数据实体
2152
+ * 日期选择器 一个年项
2153
+ * - disabled 标记当前选项是否禁用,基于min和max校验出来的
2061
2154
  */
2062
-
2155
+ type DatePickerYearItem = Required<Pick<DateValue, "year"> & DisabledOptions>;
2063
2156
  /**
2064
- * 接口:选择器管理器
2157
+ * 日期选择器 一个月项
2158
+ * - 当前月,以及所属的年份
2159
+ * - disabled 标记当前选项是否禁用,基于min和max校验出来的
2065
2160
  */
2066
- interface IPickerManager {
2067
- /**
2068
- * 显示【时间】选择控件
2069
- * @param target 哪个元素触发,基于此元素计算位置
2070
- * @param options 时间选择控件配置选项
2071
- * @returns 异步任务,可销毁时间选择控件;可接收时间选择控件的选择值
2072
- */
2073
- showTime(target: HTMLElement, options?: TimePickerOptions): IAsyncScope<string>;
2074
- }
2075
-
2161
+ type DatePickerMonthItem = Required<Pick<DateValue, "month" | "year"> & DisabledOptions & {
2162
+ text: string;
2163
+ }>;
2076
2164
  /**
2077
- * 使用选择器
2078
- * @returns 选择器实例+作用域对象
2165
+ * 日期选择器的一个天项
2166
+ * - 当前天,以及所属的月份和年份
2167
+ * - disabled 标记当前选项是否禁用,基于min和max校验出来的
2079
2168
  */
2080
- declare function usePicker(): IPickerManager & IScope;
2169
+ type DatePickerDayItem = Required<Pick<DateValue, "day" | "month" | "year"> & DisabledOptions>;
2170
+ /**
2171
+ * 时间选择器 一个小时项
2172
+ * - disabled 标记当前选项是否禁用,基于min和max校验出来的
2173
+ */
2174
+ type TimePickerHourItem = Required<Pick<TimeValue, "hour"> & DisabledOptions>;
2175
+ /**
2176
+ * 时间选择器 一个分钟项
2177
+ * - disabled 标记当前选项是否禁用,基于min和max校验出来的
2178
+ */
2179
+ type TimePickerMinuteItem = Required<Pick<TimeValue, "minute" | "hour"> & DisabledOptions>;
2180
+ /**
2181
+ * 时间选择器 一个秒项
2182
+ * - disabled 标记当前选项是否禁用,基于min和max校验出来的
2183
+ */
2184
+ type TimePickerSecondItem = Required<TimeValue & DisabledOptions>;
2081
2185
 
2082
2186
  /**
2083
2187
  * 公共通用数据结构:
@@ -2468,6 +2572,56 @@ interface IPopupManager {
2468
2572
  toast(type: IconType, message: string, options?: Omit<ToastOptions, "type" | "message">): IScope;
2469
2573
  }
2470
2574
 
2575
+ /**
2576
+ * 选择器 相关数据实体
2577
+ */
2578
+
2579
+ /**
2580
+ * 接口:选择器管理器
2581
+ */
2582
+ interface IPickerManager {
2583
+ /**
2584
+ * 显示【日期】选择器
2585
+ * @param target 哪个元素触发,基于此元素计算位置
2586
+ * @param options 日期选择器配置选项
2587
+ * @returns 异步任务,可销毁日期选择器;可接收日期选择器的选择值
2588
+ */
2589
+ showDate(target: HTMLElement, options?: DatePickerOptions & FollowOptions): IAsyncScope<string>;
2590
+ /**
2591
+ * 显示【时间】选择控件
2592
+ * @param target 哪个元素触发,基于此元素计算位置
2593
+ * @param options 时间选择控件配置选项
2594
+ * @returns 异步任务,可销毁时间选择控件;可接收时间选择控件的选择值
2595
+ */
2596
+ showTime(target: HTMLElement, options?: TimePickerOptions & FollowOptions): IAsyncScope<string>;
2597
+ }
2598
+ /**
2599
+ * 选择器弹窗配置选项
2600
+ * - 放开一些属性,方便用户做一些自定义
2601
+ */
2602
+ type PickerPopupOptions = Pick<FollowOptions, "followX" | "followY" | "spaceX" | "spaceY" | "spaceClient">;
2603
+ /**
2604
+ * 选择器扩展
2605
+ */
2606
+ type PickerExtend = {
2607
+ /**
2608
+ * 弹窗管理器
2609
+ * - 方便下级再弹窗,公用一个管理器,方便生命周期管理
2610
+ */
2611
+ popup: IPopupManager;
2612
+ /**
2613
+ * 选择器对象,方便内部在弹出选择
2614
+ * - 如日期选择器中,在选择时间
2615
+ */
2616
+ picker: IPickerManager;
2617
+ };
2618
+
2619
+ /**
2620
+ * 使用选择器
2621
+ * @returns 选择器实例+作用域对象
2622
+ */
2623
+ declare function usePicker(): IPickerManager & IScope;
2624
+
2471
2625
  /**
2472
2626
  * 使用【弹窗管理器】
2473
2627
  * @returns 全新的【弹窗管理器】实例+作用域对象
@@ -2771,7 +2925,7 @@ declare const components: {
2771
2925
  };
2772
2926
  });
2773
2927
  Layout: {
2774
- new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<LayoutOptions> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {}, false, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
2928
+ new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<LayoutOptions> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {}, true, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
2775
2929
  P: {};
2776
2930
  B: {};
2777
2931
  D: {};
@@ -2783,13 +2937,7 @@ declare const components: {
2783
2937
  __isTeleport?: never;
2784
2938
  __isSuspense?: never;
2785
2939
  } & vue.ComponentOptionsBase<Readonly<LayoutOptions> & Readonly<{}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {}, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
2786
- $slots: {
2787
- start?: (props: {}) => any;
2788
- } & {
2789
- default?: (props: {}) => any;
2790
- } & {
2791
- end?: (props: {}) => any;
2792
- };
2940
+ $slots: SlotsType<Pick<LayoutOptions, "left" | "right" | "main" | "bottom" | "top">>;
2793
2941
  });
2794
2942
  Scroll: {
2795
2943
  new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<ScrollOptions> & Readonly<{
@@ -3142,4 +3290,4 @@ declare const components: {
3142
3290
  };
3143
3291
 
3144
3292
  export { components, getSvgDraw, mount, onAppCreated, triggerAppCreated, usePicker, usePopup, useReactive, useTreeContext };
3145
- export type { ButtonOptions, ChangeEvents, ChooseEvents, ChooseItem, ChooseOptions, ClickEvents, CloseEvents, ComponentBindOptions, ComponentOptions, ConfirmAreaOptions, ConfirmOptions, DatePickerEvents, DatepickerOptions, DatetimePickerEvents, DeleteEvents, DialogHandle, DialogOptions, DisabledOptions, DragVerifyInfo, DragVerifyOptions, EmitterType, EmptyOptions, EventsType, FoldEvents, FoldOptions, FoldStatus, FollowElectResult, FollowExtend, FollowHandle, FollowOptions, FollowStrategy, FollowStrategyOptions, FooterEvents, FooterOptions, HeaderEvents, HeaderOptions, INumberFormatter, IPickerManager, IPopupManager, IReactiveManager, ISelectContext, ITreeBaseContext, IconOptions, IconType, InputEvents, InputOptions, LayoutOptions, LoadingOptions, MessageOptions, MoveEvents, NumberBaseOptions, NumberEvents, NumberFormatResult, NumberOptions, PlaceholderOptions, PopupDescriptor, PopupHandle, PopupOptions, PopupStatus, PopupStatusOptions, PropsType, ReactiveVar, ReadonlyOptions, ScrollEvents, ScrollOptions, ScrollStatus, SearchEvents, SearchOptions, SelectBaseEvents, SelectBaseOptions, SelectEvents, SelectItem, SelectNodeEvents, SelectNodeOptions, SelectOptions, SelectPopupEvents, SelectPopupExtend, SelectPopupOptions, SelectSlotOptions, SortEvent, SortEvents, SortGroupHook, SortGroupOptions, SortOptions, SwitchEvents, SwitchOptions, TableColOptions, TableOptions, TableRowOptions, TextareaEvents, TextareaOptions, TimePickerOptions, TitleOptions, ToastOptions, TransitionEffectOptions, TransitionOptions, TreeEvents, TreeNode, TreeNodeEvents, TreeNodeExtend, TreeNodeModel, TreeNodeOptions, TreeNodeRenderOptions, TreeNodeSlotOptions, TreeOptions, TreeSearchResult, ValueOptions, WrapperEvents, WrapperOptions };
3293
+ export type { ButtonOptions, ChangeEvents, ChooseEvents, ChooseItem, ChooseOptions, ClickEvents, CloseEvents, ComponentBindOptions, ComponentOptions, ConfirmAreaOptions, ConfirmOptions, DatePickerDayItem, DatePickerEvents, DatePickerMonthItem, DatePickerOptions, DatePickerYearItem, DatepickerOptions, DatetimeDisabledOptions, DatetimePickerEvents, DeleteEvents, DialogHandle, DialogOptions, DisabledOptions, DragVerifyInfo, DragVerifyOptions, EmitterType, EmptyOptions, EventsType, FoldEvents, FoldOptions, FoldStatus, FollowElectResult, FollowExtend, FollowHandle, FollowOptions, FollowStrategy, FollowStrategyOptions, FooterEvents, FooterOptions, HeaderEvents, HeaderOptions, INumberFormatter, IPickerManager, IPopupManager, IReactiveManager, ISelectContext, ITreeBaseContext, IconOptions, IconType, InputEvents, InputOptions, LayoutAraeOptions, LayoutAreaItem, LayoutOptions, LoadingOptions, MessageOptions, MoveEvents, NumberBaseOptions, NumberEvents, NumberFormatResult, NumberOptions, PickerExtend, PickerPopupOptions, PlaceholderOptions, PopupDescriptor, PopupHandle, PopupOptions, PopupStatus, PopupStatusOptions, PropsType, ReactiveVar, ReadonlyOptions, ScrollEvents, ScrollOptions, ScrollStatus, SearchEvents, SearchOptions, SelectBaseEvents, SelectBaseOptions, SelectEvents, SelectItem, SelectNodeEvents, SelectNodeOptions, SelectOptions, SelectPopupEvents, SelectPopupExtend, SelectPopupOptions, SelectSlotOptions, SlotsType, SortEvent, SortEvents, SortGroupHook, SortGroupOptions, SortOptions, SwitchEvents, SwitchOptions, TableColOptions, TableOptions, TableRowOptions, TextareaEvents, TextareaOptions, TimePickerHourItem, TimePickerMinuteItem, TimePickerOptions, TimePickerSecondItem, TitleOptions, ToastOptions, TransitionEffectOptions, TransitionOptions, TreeEvents, TreeNode, TreeNodeEvents, TreeNodeExtend, TreeNodeModel, TreeNodeOptions, TreeNodeRenderOptions, TreeNodeSlotOptions, TreeOptions, TreeSearchResult, ValueOptions, WrapperEvents, WrapperOptions };