snail.vue 2.0.21 → 2.0.23

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.
@@ -1,7 +1,7 @@
1
1
  import * as snail_core from 'snail.core';
2
2
  import { DateFormat, DateValue, TimeValue, IScope, RunResult, IAsyncScope } from 'snail.core';
3
3
  import * as snail_view from 'snail.view';
4
- import { ScrollbarOptions, ScrollStatus, BaseStyle, HeightStyle, FlexBoxStyle, WidthStyle, BorderStyle, PaddingStyle, MarginStyle } from 'snail.view';
4
+ import { ScrollbarOptions, ScrollStatus, BaseStyle, HeightStyle, FlexBoxStyle, WidthStyle, BorderStyle, PaddingStyle, CSSClassOptions, MarginStyle } from 'snail.view';
5
5
  import * as vue from 'vue';
6
6
  import { Component, ShallowRef, Ref, WatchSource, App } from 'vue';
7
7
 
@@ -1030,7 +1030,7 @@ type LayoutOptions = {
1030
1030
  * - 对应插槽名:main;主要内容显示区域,处于布局中的【中】区域
1031
1031
  * - 配置主内容区域的滚动条配置
1032
1032
  */
1033
- main?: Pick<LayoutAraeOptions<void>, "scroll">;
1033
+ main?: Pick<LayoutAraeOptions<void>, "scroll" | "class">;
1034
1034
  /**
1035
1035
  * 【左侧】区域配置
1036
1036
  * - 对应插槽名`left` ;`mode` 为 `horizontal` 时生效
@@ -1061,7 +1061,7 @@ type LayoutOptions = {
1061
1061
  /**
1062
1062
  * 布局组件子区域 配置选项
1063
1063
  */
1064
- type LayoutAraeOptions<Style extends WidthStyle | HeightStyle | void> = Style & {
1064
+ type LayoutAraeOptions<Style extends WidthStyle | HeightStyle | void> = Style & CSSClassOptions & {
1065
1065
  /**
1066
1066
  * 滚动视图配置
1067
1067
  * - 视图属性:滚动条大小、显示时机
@@ -1081,7 +1081,7 @@ type LayoutAreaItem = {
1081
1081
  /**
1082
1082
  * 内容区域元素的类样式名
1083
1083
  */
1084
- class: string;
1084
+ class: string[];
1085
1085
  /**
1086
1086
  * css样式
1087
1087
  */
@@ -1150,6 +1150,16 @@ type FoldOptions = DisabledOptions & TitleOptions & {
1150
1150
  * - 跟随在title后
1151
1151
  */
1152
1152
  subtitle?: string;
1153
+ /**
1154
+ * 面板头部区域配置
1155
+ * - 如指定特定的css式
1156
+ */
1157
+ header?: CSSClassOptions;
1158
+ /**
1159
+ * 面板内容区域配置
1160
+ * - 如指定特定的css样式
1161
+ */
1162
+ body?: CSSClassOptions;
1153
1163
  };
1154
1164
  /**
1155
1165
  * 折叠状态
@@ -1157,6 +1167,27 @@ type FoldOptions = DisabledOptions & TitleOptions & {
1157
1167
  * - fold : 折叠状态
1158
1168
  */
1159
1169
  type FoldStatus = "expand" | "fold";
1170
+ /**
1171
+ * 折叠面板组件插槽句柄
1172
+ * - 将折叠面板状态和操作共享给插槽中自定义组件使用
1173
+ */
1174
+ type FoldSlotHandle = {
1175
+ /**
1176
+ * 获取折叠面板状态
1177
+ * @returns
1178
+ */
1179
+ getStatus(): FoldStatus;
1180
+ /**
1181
+ * 设置折叠面板状态
1182
+ * @param status 新的状态
1183
+ */
1184
+ setStatus(status: FoldStatus): void;
1185
+ /**
1186
+ * 切换面板状态
1187
+ * @returns 新的状态
1188
+ */
1189
+ toggle(): FoldStatus;
1190
+ };
1160
1191
  /**
1161
1192
  * 折叠面板事件
1162
1193
  */
@@ -1971,8 +2002,9 @@ type ButtonOptions = TitleOptions & {
1971
2002
 
1972
2003
  /**
1973
2004
  * 可操作项组件 的配置选项
2005
+ * - disabled 为true时,不响应操作项触发
1974
2006
  */
1975
- type ActionOptions = {
2007
+ type ActionOptions = DisabledOptions & {
1976
2008
  /**
1977
2009
  * 触发方式
1978
2010
  * - hover:鼠标移入显示
@@ -3156,6 +3188,8 @@ declare const components: {
3156
3188
  Fold: {
3157
3189
  new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<DisabledOptions & TitleOptions & {
3158
3190
  subtitle?: string;
3191
+ header?: snail_view.CSSClassOptions;
3192
+ body?: snail_view.CSSClassOptions;
3159
3193
  } & {
3160
3194
  status?: FoldStatus;
3161
3195
  }> & Readonly<{
@@ -3173,6 +3207,8 @@ declare const components: {
3173
3207
  Defaults: {};
3174
3208
  }, Readonly<DisabledOptions & TitleOptions & {
3175
3209
  subtitle?: string;
3210
+ header?: snail_view.CSSClassOptions;
3211
+ body?: snail_view.CSSClassOptions;
3176
3212
  } & {
3177
3213
  status?: FoldStatus;
3178
3214
  }> & Readonly<{
@@ -3184,6 +3220,8 @@ declare const components: {
3184
3220
  __isSuspense?: never;
3185
3221
  } & vue.ComponentOptionsBase<Readonly<DisabledOptions & TitleOptions & {
3186
3222
  subtitle?: string;
3223
+ header?: snail_view.CSSClassOptions;
3224
+ body?: snail_view.CSSClassOptions;
3187
3225
  } & {
3188
3226
  status?: FoldStatus;
3189
3227
  }> & Readonly<{
@@ -3194,9 +3232,17 @@ declare const components: {
3194
3232
  "update:status": (value: FoldStatus) => any;
3195
3233
  }, string, {}, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
3196
3234
  $slots: {
3197
- header?: (props: {}) => any;
3235
+ header?: (props: {
3236
+ getStatus(): FoldStatus;
3237
+ setStatus(status: FoldStatus): void;
3238
+ toggle(): FoldStatus;
3239
+ }) => any;
3198
3240
  } & {
3199
- default?: (props: {}) => any;
3241
+ default?: (props: {
3242
+ getStatus(): FoldStatus;
3243
+ setStatus(status: FoldStatus): void;
3244
+ toggle(): FoldStatus;
3245
+ }) => any;
3200
3246
  };
3201
3247
  });
3202
3248
  Motion: {
@@ -3607,4 +3653,4 @@ declare const components: {
3607
3653
  };
3608
3654
 
3609
3655
  export { MOTION, components, getBuiltinIcon, mount, onAppCreated, triggerAppCreated, usePicker, usePopup, useReactive, useTreeContext };
3610
- export type { ActionEvents, ActionItem, ActionItemsOptions, ActionOptions, ButtonOptions, ChangeEvents, ChooseEvents, ChooseItem, ChooseOptions, ClickEvents, CloseEvents, ComponentBindOptions, ComponentOptions, ConfirmAreaOptions, ConfirmOptions, DatePickerDayItem, DatePickerMonthItem, DatePickerOptions, DatePickerYearItem, DatetimeDisabledOptions, DatetimePickerEvents, DeleteEvents, DialogHandle, DialogOptions, DisabledOptions, DragVerifyInfo, DragVerifyOptions, ElasticEvents, ElasticExpose, ElasticOptions, ElasticSpringStatus, EmitterType, EmptyOptions, EventsType, FlexOptions, FoldEvents, FoldOptions, FoldStatus, FollowElectResult, FollowExtend, FollowHandle, FollowOptions, FollowPositionOptions, FollowStrategy, FollowStrategyOptions, FooterEvents, FooterOptions, HeaderEvents, HeaderOptions, INumberFormatter, IPickerManager, IPopupManager, IReactiveManager, ISelectContext, ITreeBaseContext, IconOptions, IconType, InputEvents, InputOptions, LayoutAraeOptions, LayoutAreaItem, LayoutOptions, LoadingOptions, MessageOptions, MotionEffectOptions, MotionOptions, MoveEvents, NumberBaseOptions, NumberEvents, NumberFormatResult, NumberOptions, PickerExtend, PickerPopupOptions, PlaceholderOptions, PopupDescriptor, PopupHandle, PopupOptions, PopupStatus, PopupStatusOptions, PropsType, ReactiveVar, ReadonlyOptions, ScrollEvents, ScrollExpose, ScrollOptions, 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, TreeEvents, TreeNode, TreeNodeEvents, TreeNodeExtend, TreeNodeModel, TreeNodeOptions, TreeNodeRenderOptions, TreeNodeSlotOptions, TreeOptions, TreeSearchResult, ValueOptions, WrapperEvents, WrapperOptions };
3656
+ export type { ActionEvents, ActionItem, ActionItemsOptions, ActionOptions, ButtonOptions, ChangeEvents, ChooseEvents, ChooseItem, ChooseOptions, ClickEvents, CloseEvents, ComponentBindOptions, ComponentOptions, ConfirmAreaOptions, ConfirmOptions, DatePickerDayItem, DatePickerMonthItem, DatePickerOptions, DatePickerYearItem, DatetimeDisabledOptions, DatetimePickerEvents, DeleteEvents, DialogHandle, DialogOptions, DisabledOptions, DragVerifyInfo, DragVerifyOptions, ElasticEvents, ElasticExpose, ElasticOptions, ElasticSpringStatus, EmitterType, EmptyOptions, EventsType, FlexOptions, FoldEvents, FoldOptions, FoldSlotHandle, FoldStatus, FollowElectResult, FollowExtend, FollowHandle, FollowOptions, FollowPositionOptions, FollowStrategy, FollowStrategyOptions, FooterEvents, FooterOptions, HeaderEvents, HeaderOptions, INumberFormatter, IPickerManager, IPopupManager, IReactiveManager, ISelectContext, ITreeBaseContext, IconOptions, IconType, InputEvents, InputOptions, LayoutAraeOptions, LayoutAreaItem, LayoutOptions, LoadingOptions, MessageOptions, MotionEffectOptions, MotionOptions, MoveEvents, NumberBaseOptions, NumberEvents, NumberFormatResult, NumberOptions, PickerExtend, PickerPopupOptions, PlaceholderOptions, PopupDescriptor, PopupHandle, PopupOptions, PopupStatus, PopupStatusOptions, PropsType, ReactiveVar, ReadonlyOptions, ScrollEvents, ScrollExpose, ScrollOptions, 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, TreeEvents, TreeNode, TreeNodeEvents, TreeNodeExtend, TreeNodeModel, TreeNodeOptions, TreeNodeRenderOptions, TreeNodeSlotOptions, TreeOptions, TreeSearchResult, ValueOptions, WrapperEvents, WrapperOptions };
package/dist/snail.vue.js CHANGED
@@ -1,7 +1,7 @@
1
1
  //@ sourceURL=/snail.vue.js
2
2
  import { defineComponent, createElementBlock, openBlock, normalizeClass, renderSlot, createTextVNode, shallowRef, computed, mergeProps, unref, createElementVNode, toDisplayString, Fragment, renderList, mergeModels, useModel, normalizeStyle, createCommentVNode, createBlock, nextTick, useTemplateRef, createVNode, watch, withDirectives, isRef, vModelText, withCtx, createApp, resolveDynamicComponent, TransitionGroup, Transition, normalizeProps, guardReactiveProps, ref, onErrorCaptured, createSlots, onMounted, withModifiers, getCurrentInstance, resolveComponent, vShow, onBeforeUnmount, onActivated, getCurrentScope, onScopeDispose } from 'vue';
3
3
  import { throwError, isObject, correctNumber, correctString, useKey, isArray, mountScope, useScopes, throwIfFalse, isPromise, wait, isNumberNotNaN, isStringNotEmpty, hasAny, mustFunction, useScope, removeFromArray, mustObject, isArrayNotEmpty, hasOwnProperty, isString, script, delay, useTimer, defer, useAsyncScope, useHook, newId, throwIfTrue, isFunction, isNullish, getTimeNumber, getDateValue, parseDate, formatDateValue, getDateByValue, parseTimeValue, getTimeValue, padStart, formatTimeValue, parseDateValue, correctDateFormat, isValidTime, getFromArray, onMountScope } from 'snail.core';
4
- import { css, link, useObserver, useScroll, useAnimation } from 'snail.view';
4
+ import { link, css, useObserver, useScroll, useAnimation } from 'snail.view';
5
5
 
6
6
  const _hoisted_1$o = ["title"];
7
7
  var _sfc_main$F = defineComponent({
@@ -25,6 +25,10 @@ var _sfc_main$F = defineComponent({
25
25
  }
26
26
  });
27
27
 
28
+ var addLink = href => setTimeout(link.register, 0, href);
29
+
30
+ addLink("/styles/snail.vue.vue.css");
31
+
28
32
  function getBuiltinIcon(iconType) {
29
33
  switch (iconType) {
30
34
  case "success":
@@ -137,7 +141,7 @@ var _sfc_main$E = defineComponent({
137
141
  const _hoisted_1$m = ["title", "onClick"];
138
142
  const _hoisted_2$e = ["type", "checked"];
139
143
  const _hoisted_3$9 = ["textContent"];
140
- const _hoisted_4$7 = ["textContent"];
144
+ const _hoisted_4$6 = ["textContent"];
141
145
  var _sfc_main$D = defineComponent({
142
146
  ...{
143
147
  name: "Choose",
@@ -230,16 +234,12 @@ var _sfc_main$D = defineComponent({
230
234
  key: 3,
231
235
  class: "item-des",
232
236
  textContent: toDisplayString(node.item.description)
233
- }, null, 8, _hoisted_4$7)) : createCommentVNode("", true)], 14, _hoisted_1$m);
237
+ }, null, 8, _hoisted_4$6)) : createCommentVNode("", true)], 14, _hoisted_1$m);
234
238
  }), 128))], 2);
235
239
  };
236
240
  }
237
241
  });
238
242
 
239
- var addLink = href => setTimeout(link.register, 0, href);
240
-
241
- addLink("/styles/snail.vue.vue.css");
242
-
243
243
  var _sfc_main$C = defineComponent({
244
244
  ...{
245
245
  name: "Footer",
@@ -350,8 +350,8 @@ const _hoisted_2$d = {
350
350
  const _hoisted_3$8 = {
351
351
  class: "input-body"
352
352
  };
353
- const _hoisted_4$6 = ["type", "value", "readonly", "placeholder", "title"];
354
- const _hoisted_5$4 = ["title"];
353
+ const _hoisted_4$5 = ["type", "value", "readonly", "placeholder", "title"];
354
+ const _hoisted_5$3 = ["title"];
355
355
  var _sfc_main$A = defineComponent({
356
356
  ...{
357
357
  name: "Input",
@@ -413,7 +413,7 @@ var _sfc_main$A = defineComponent({
413
413
  title: inputModel.value,
414
414
  onChange: onValueChange,
415
415
  onClick: _cache[0] || (_cache[0] = $event => emits("click"))
416
- }, null, 40, _hoisted_4$6), !!validateRef.value ? (openBlock(), createElementBlock("span", {
416
+ }, null, 40, _hoisted_4$5), !!validateRef.value ? (openBlock(), createElementBlock("span", {
417
417
  key: 0,
418
418
  class: "validate",
419
419
  title: validateRef.value
@@ -422,7 +422,7 @@ var _sfc_main$A = defineComponent({
422
422
  button: "",
423
423
  size: 16,
424
424
  color: "red"
425
- })], 8, _hoisted_5$4)) : createCommentVNode("", true)])], 2);
425
+ })], 8, _hoisted_5$3)) : createCommentVNode("", true)])], 2);
426
426
  };
427
427
  }
428
428
  });
@@ -633,11 +633,11 @@ const _hoisted_1$j = {
633
633
  };
634
634
  const _hoisted_2$c = ["textContent"];
635
635
  const _hoisted_3$7 = ["inputmode", "placeholder", "title"];
636
- const _hoisted_4$5 = {
636
+ const _hoisted_4$4 = {
637
637
  key: 1,
638
638
  class: "number-suffix"
639
639
  };
640
- const _hoisted_5$3 = ["textContent"];
640
+ const _hoisted_5$2 = ["textContent"];
641
641
  const _hoisted_6$2 = ["title", "textContent"];
642
642
  const _hoisted_7$1 = ["title", "textContent"];
643
643
  var _sfc_main$z = defineComponent({
@@ -836,10 +836,10 @@ var _sfc_main$z = defineComponent({
836
836
  button: "",
837
837
  size: 20,
838
838
  rotate: 90
839
- })])], 64)) : createCommentVNode("", true)], 2), unref(hasSuffix) ? (openBlock(), createElementBlock("div", _hoisted_4$5, [createElementVNode("span", {
839
+ })])], 64)) : createCommentVNode("", true)], 2), unref(hasSuffix) ? (openBlock(), createElementBlock("div", _hoisted_4$4, [createElementVNode("span", {
840
840
  class: "ellipsis",
841
841
  textContent: toDisplayString(unref(suffix))
842
- }, null, 8, _hoisted_5$3)])) : createCommentVNode("", true), unref(upper) ? (openBlock(), createElementBlock("div", {
842
+ }, null, 8, _hoisted_5$2)])) : createCommentVNode("", true), unref(upper) ? (openBlock(), createElementBlock("div", {
843
843
  key: 2,
844
844
  class: "number-util ellipsis",
845
845
  title: upperTextRef.value,
@@ -2254,7 +2254,7 @@ const _hoisted_1$d = {
2254
2254
  };
2255
2255
  const _hoisted_2$7 = ["title", "textContent"];
2256
2256
  const _hoisted_3$4 = ["textContent"];
2257
- const _hoisted_4$4 = {
2257
+ const _hoisted_4$3 = {
2258
2258
  key: 1,
2259
2259
  class: "placeholder"
2260
2260
  };
@@ -2407,7 +2407,7 @@ var _sfc_main$m = defineComponent({
2407
2407
  button: "",
2408
2408
  size: 24,
2409
2409
  rotate: 90
2410
- })) : createCommentVNode("", true)], 64)) : (openBlock(), createElementBlock("div", _hoisted_4$4, "暂无可选项"))], 2);
2410
+ })) : createCommentVNode("", true)], 64)) : (openBlock(), createElementBlock("div", _hoisted_4$3, "暂无可选项"))], 2);
2411
2411
  };
2412
2412
  }
2413
2413
  });
@@ -2586,10 +2586,15 @@ const _hoisted_1$a = {
2586
2586
  class: "snail-action flex-cross-center",
2587
2587
  ref: "snail-action"
2588
2588
  };
2589
- const _hoisted_2$5 = ["title"];
2589
+ const _hoisted_2$5 = {
2590
+ class: "action-slot flex-cross-center"
2591
+ };
2590
2592
  var _sfc_main$i = defineComponent({
2591
2593
  __name: "action",
2592
2594
  props: {
2595
+ disabled: {
2596
+ type: Boolean
2597
+ },
2593
2598
  trigger: {},
2594
2599
  actions: {}
2595
2600
  },
@@ -2614,21 +2619,23 @@ var _sfc_main$i = defineComponent({
2614
2619
  popupScope.destroy();
2615
2620
  return;
2616
2621
  }
2617
- popupScope = follow(rootDom.value, {
2618
- component: _sfc_main$j,
2619
- closeOnEscape: true,
2620
- closeOnMask: true,
2621
- closeOnResize: true,
2622
- closeOnTarget: true,
2623
- followX: longPress ? ["center", "start", "end"] : ["after", "end", "start", "end", "center"],
2624
- followY: longPress ? ["center", "after", "before"] : ["after", "before", "center", "end", "after"],
2625
- props: {
2626
- mode: "vertical",
2627
- actions: props.actions
2628
- }
2629
- });
2630
- const code = await popupScope;
2631
- isStringNotEmpty(code) && emits("trigger", code);
2622
+ if (props.disabled != true) {
2623
+ popupScope = follow(rootDom.value, {
2624
+ component: _sfc_main$j,
2625
+ closeOnEscape: true,
2626
+ closeOnMask: true,
2627
+ closeOnResize: true,
2628
+ closeOnTarget: true,
2629
+ followX: longPress ? ["center", "start", "end"] : ["after", "end", "start", "end", "center"],
2630
+ followY: longPress ? ["center", "after", "before"] : ["after", "before", "center", "end", "after"],
2631
+ props: {
2632
+ mode: "vertical",
2633
+ actions: props.actions
2634
+ }
2635
+ });
2636
+ const code = await popupScope;
2637
+ isStringNotEmpty(code) && emits("trigger", code);
2638
+ }
2632
2639
  }
2633
2640
  function onMouseDown() {
2634
2641
  if (props.trigger == "long-press" && pressStartDate == void 0) {
@@ -2662,10 +2669,7 @@ var _sfc_main$i = defineComponent({
2662
2669
  }
2663
2670
  });
2664
2671
  return (_ctx, _cache) => {
2665
- return openBlock(), createElementBlock("div", _hoisted_1$a, [createElementVNode("div", {
2666
- class: "action-slot flex-cross-center",
2667
- title: String(__props.trigger == "hover")
2668
- }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_2$5), __props.trigger == "hover" ? (openBlock(), createBlock(_sfc_main$E, {
2672
+ return openBlock(), createElementBlock("div", _hoisted_1$a, [createElementVNode("div", _hoisted_2$5, [renderSlot(_ctx.$slots, "default")]), __props.trigger == "hover" && __props.disabled != true ? (openBlock(), createBlock(_sfc_main$E, {
2669
2673
  key: 0,
2670
2674
  class: "hover-tips",
2671
2675
  button: "",
@@ -3041,19 +3045,12 @@ var _sfc_main$g = defineComponent({
3041
3045
  }
3042
3046
  });
3043
3047
 
3044
- const _hoisted_1$9 = {
3045
- class: "fold-header"
3046
- };
3048
+ const _hoisted_1$9 = ["textContent"];
3047
3049
  const _hoisted_2$4 = ["textContent"];
3048
- const _hoisted_3$3 = ["textContent"];
3049
- const _hoisted_4$3 = {
3050
+ const _hoisted_3$3 = {
3050
3051
  key: 1,
3051
3052
  class: "status"
3052
3053
  };
3053
- const _hoisted_5$2 = {
3054
- class: "fold-body",
3055
- ref: "foldBody"
3056
- };
3057
3054
  var _sfc_main$f = defineComponent({
3058
3055
  ...{
3059
3056
  name: "Fold",
@@ -3065,7 +3062,9 @@ var _sfc_main$f = defineComponent({
3065
3062
  type: Boolean
3066
3063
  },
3067
3064
  title: {},
3068
- subtitle: {}
3065
+ subtitle: {},
3066
+ header: {},
3067
+ body: {}
3069
3068
  }, {
3070
3069
  "status": {
3071
3070
  default: "expand"
@@ -3085,27 +3084,37 @@ var _sfc_main$f = defineComponent({
3085
3084
  watcher
3086
3085
  } = useReactive();
3087
3086
  const statusModel = useModel(__props, "status");
3088
- watcher(statusModel, updateFoldStyle);
3087
+ const foldHeaderDom = useTemplateRef("foldHeader");
3089
3088
  const foldBodyDom = useTemplateRef("foldBody");
3090
- function updateFoldStyle() {
3089
+ const slotHandle = {
3090
+ getStatus: () => statusModel.value,
3091
+ setStatus: value => statusModel.value = value,
3092
+ toggle: () => (onStatusClick(), statusModel.value)
3093
+ };
3094
+ function updateFoldStyle(disableAnimation) {
3091
3095
  const isExpand = statusModel.value == "expand";
3092
3096
  if (foldBodyDom.value) {
3093
- const minHeight = 32;
3097
+ const minHeight = foldHeaderDom.value.getBoundingClientRect().height;
3094
3098
  const maxHeight = minHeight + foldBodyDom.value.getBoundingClientRect().height;
3095
- transition(foldBodyDom.value.parentElement, {
3096
- from: {
3097
- transition: "height 0.2s ease",
3098
- overflow: "hidden",
3099
- height: `${isExpand ? minHeight : maxHeight}px`
3100
- },
3101
- to: {
3102
- height: `${isExpand ? maxHeight : minHeight}px`
3103
- },
3104
- end: {
3105
- overflow: isExpand ? "" : "hidden",
3106
- height: isExpand ? "" : `${minHeight}px`
3107
- }
3108
- });
3099
+ const endStyle = {
3100
+ overflow: isExpand ? "" : "hidden",
3101
+ height: isExpand ? "" : `${minHeight}px`
3102
+ };
3103
+ if (disableAnimation === true) {
3104
+ Object.assign(foldBodyDom.value.parentElement.style, endStyle);
3105
+ } else {
3106
+ transition(foldBodyDom.value.parentElement, {
3107
+ from: {
3108
+ transition: "height 0.2s ease",
3109
+ overflow: "hidden",
3110
+ height: `${isExpand ? minHeight : maxHeight}px`
3111
+ },
3112
+ to: {
3113
+ height: `${isExpand ? maxHeight : minHeight}px`
3114
+ },
3115
+ end: endStyle
3116
+ });
3117
+ }
3109
3118
  }
3110
3119
  }
3111
3120
  function onStatusClick() {
@@ -3121,24 +3130,33 @@ var _sfc_main$f = defineComponent({
3121
3130
  }
3122
3131
  nextTick(() => emits("change", statusModel.value));
3123
3132
  }
3133
+ onMounted(() => {
3134
+ statusModel.value != "expand" && updateFoldStyle(true);
3135
+ watcher(statusModel, () => updateFoldStyle(false));
3136
+ });
3124
3137
  return (_ctx, _cache) => {
3125
3138
  return openBlock(), createElementBlock("div", {
3126
3139
  class: normalizeClass(["snail-fold", statusModel.value])
3127
- }, [createElementVNode("div", _hoisted_1$9, [renderSlot(_ctx.$slots, "header", {}, () => [createElementVNode("div", {
3140
+ }, [createElementVNode("div", {
3141
+ class: normalizeClass(["fold-header", __props.header ? __props.header.class : []]),
3142
+ ref: "foldHeader"
3143
+ }, [renderSlot(_ctx.$slots, "header", normalizeProps(guardReactiveProps(slotHandle)), () => [createElementVNode("div", {
3128
3144
  class: "title ellipsis",
3129
3145
  textContent: toDisplayString(__props.title)
3130
- }, null, 8, _hoisted_2$4), !!__props.subtitle ? (openBlock(), createElementBlock("div", {
3146
+ }, null, 8, _hoisted_1$9), !!__props.subtitle ? (openBlock(), createElementBlock("div", {
3131
3147
  key: 0,
3132
3148
  class: "subtitle ellipsis",
3133
3149
  textContent: toDisplayString(__props.subtitle)
3134
- }, null, 8, _hoisted_3$3)) : createCommentVNode("", true), __props.disabled != true ? (openBlock(), createElementBlock("div", _hoisted_4$3, [createVNode(_sfc_main$E, {
3135
- custom: false,
3150
+ }, null, 8, _hoisted_2$4)) : createCommentVNode("", true), __props.disabled != true ? (openBlock(), createElementBlock("div", _hoisted_3$3, [createVNode(_sfc_main$E, {
3136
3151
  type: "arrow",
3137
3152
  button: "",
3138
3153
  title: statusModel.value == "expand" ? "收起" : "展开",
3139
3154
  rotate: statusModel.value == "expand" ? -90 : 90,
3140
3155
  onClick: onStatusClick
3141
- }, null, 8, ["title", "rotate"])])) : createCommentVNode("", true)])]), createElementVNode("div", _hoisted_5$2, [renderSlot(_ctx.$slots, "default")], 512)], 2);
3156
+ }, null, 8, ["title", "rotate"])])) : createCommentVNode("", true)])], 2), createElementVNode("div", {
3157
+ class: normalizeClass(["fold-body", __props.body ? __props.body.class : []]),
3158
+ ref: "foldBody"
3159
+ }, [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotHandle)))], 2)], 2);
3142
3160
  };
3143
3161
  }
3144
3162
  });
@@ -3203,34 +3221,45 @@ var _sfc_main$d = defineComponent({
3203
3221
  const map = Object.create(null);
3204
3222
  map.main = {
3205
3223
  scrollable: props.main && props.main.scroll != void 0,
3206
- class: "main-area",
3224
+ class: buildAreaClass("main-area", props.main),
3207
3225
  style: void 0
3208
3226
  };
3209
3227
  if (props.mode == "vertical") {
3210
3228
  map.top = {
3211
3229
  scrollable: props.top && props.top.scroll != void 0,
3212
- class: "top-area",
3230
+ class: buildAreaClass("top-area", props.top),
3213
3231
  style: buildHeightStyle(props.top)
3214
3232
  };
3215
3233
  map.bottom = {
3216
3234
  scrollable: props.bottom && props.bottom.scroll != void 0,
3217
- class: "bottom-area",
3235
+ class: buildAreaClass("bottom-area", props.bottom),
3218
3236
  style: buildHeightStyle(props.bottom)
3219
3237
  };
3220
3238
  } else {
3221
3239
  map.left = {
3222
3240
  scrollable: props.left && props.left.scroll != void 0,
3223
- class: "left-area",
3241
+ class: buildAreaClass("left-area", props.left),
3224
3242
  style: buildWidthStyle(props.left)
3225
3243
  };
3226
3244
  map.right = {
3227
3245
  scrollable: props.right && props.right.scroll != void 0,
3228
- class: "right-area",
3246
+ class: buildAreaClass("right-area", props.right),
3229
3247
  style: buildWidthStyle(props.right)
3230
3248
  };
3231
3249
  }
3232
3250
  return map;
3233
3251
  });
3252
+ function buildAreaClass(fixedClass, cssClass) {
3253
+ const classArray = [fixedClass];
3254
+ if (cssClass != void 0) {
3255
+ if (isArray(cssClass.class) == true) {
3256
+ classArray.push(...cssClass.class);
3257
+ } else if (isStringNotEmpty(cssClass.class) == true) {
3258
+ classArray.push(cssClass.class);
3259
+ }
3260
+ }
3261
+ return classArray;
3262
+ }
3234
3263
  function buildWidthStyle(style) {
3235
3264
  return style ? css.buildStyle({
3236
3265
  minWidth: style.minWidth,
@@ -27,6 +27,10 @@
27
27
  }
28
28
  });
29
29
 
30
+ var addLink = href => setTimeout(snail_view.link.register, 0, href);
31
+
32
+ addLink("/styles/snail.vue.vue.css");
33
+
30
34
  function getBuiltinIcon(iconType) {
31
35
  switch (iconType) {
32
36
  case "success":
@@ -139,7 +143,7 @@
139
143
  const _hoisted_1$m = ["title", "onClick"];
140
144
  const _hoisted_2$e = ["type", "checked"];
141
145
  const _hoisted_3$9 = ["textContent"];
142
- const _hoisted_4$7 = ["textContent"];
146
+ const _hoisted_4$6 = ["textContent"];
143
147
  var _sfc_main$D = vue.defineComponent({
144
148
  ...{
145
149
  name: "Choose",
@@ -232,16 +236,12 @@
232
236
  key: 3,
233
237
  class: "item-des",
234
238
  textContent: vue.toDisplayString(node.item.description)
235
- }, null, 8, _hoisted_4$7)) : vue.createCommentVNode("", true)], 14, _hoisted_1$m);
239
+ }, null, 8, _hoisted_4$6)) : vue.createCommentVNode("", true)], 14, _hoisted_1$m);
236
240
  }), 128))], 2);
237
241
  };
238
242
  }
239
243
  });
240
244
 
241
- var addLink = href => setTimeout(snail_view.link.register, 0, href);
242
-
243
- addLink("/styles/snail.vue.vue.css");
244
-
245
245
  var _sfc_main$C = vue.defineComponent({
246
246
  ...{
247
247
  name: "Footer",
@@ -352,8 +352,8 @@
352
352
  const _hoisted_3$8 = {
353
353
  class: "input-body"
354
354
  };
355
- const _hoisted_4$6 = ["type", "value", "readonly", "placeholder", "title"];
356
- const _hoisted_5$4 = ["title"];
355
+ const _hoisted_4$5 = ["type", "value", "readonly", "placeholder", "title"];
356
+ const _hoisted_5$3 = ["title"];
357
357
  var _sfc_main$A = vue.defineComponent({
358
358
  ...{
359
359
  name: "Input",
@@ -415,7 +415,7 @@
415
415
  title: inputModel.value,
416
416
  onChange: onValueChange,
417
417
  onClick: _cache[0] || (_cache[0] = $event => emits("click"))
418
- }, null, 40, _hoisted_4$6), !!validateRef.value ? (vue.openBlock(), vue.createElementBlock("span", {
418
+ }, null, 40, _hoisted_4$5), !!validateRef.value ? (vue.openBlock(), vue.createElementBlock("span", {
419
419
  key: 0,
420
420
  class: "validate",
421
421
  title: validateRef.value
@@ -424,7 +424,7 @@
424
424
  button: "",
425
425
  size: 16,
426
426
  color: "red"
427
- })], 8, _hoisted_5$4)) : vue.createCommentVNode("", true)])], 2);
427
+ })], 8, _hoisted_5$3)) : vue.createCommentVNode("", true)])], 2);
428
428
  };
429
429
  }
430
430
  });
@@ -635,11 +635,11 @@
635
635
  };
636
636
  const _hoisted_2$c = ["textContent"];
637
637
  const _hoisted_3$7 = ["inputmode", "placeholder", "title"];
638
- const _hoisted_4$5 = {
638
+ const _hoisted_4$4 = {
639
639
  key: 1,
640
640
  class: "number-suffix"
641
641
  };
642
- const _hoisted_5$3 = ["textContent"];
642
+ const _hoisted_5$2 = ["textContent"];
643
643
  const _hoisted_6$2 = ["title", "textContent"];
644
644
  const _hoisted_7$1 = ["title", "textContent"];
645
645
  var _sfc_main$z = vue.defineComponent({
@@ -838,10 +838,10 @@
838
838
  button: "",
839
839
  size: 20,
840
840
  rotate: 90
841
- })])], 64)) : vue.createCommentVNode("", true)], 2), vue.unref(hasSuffix) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$5, [vue.createElementVNode("span", {
841
+ })])], 64)) : vue.createCommentVNode("", true)], 2), vue.unref(hasSuffix) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$4, [vue.createElementVNode("span", {
842
842
  class: "ellipsis",
843
843
  textContent: vue.toDisplayString(vue.unref(suffix))
844
- }, null, 8, _hoisted_5$3)])) : vue.createCommentVNode("", true), vue.unref(upper) ? (vue.openBlock(), vue.createElementBlock("div", {
844
+ }, null, 8, _hoisted_5$2)])) : vue.createCommentVNode("", true), vue.unref(upper) ? (vue.openBlock(), vue.createElementBlock("div", {
845
845
  key: 2,
846
846
  class: "number-util ellipsis",
847
847
  title: upperTextRef.value,
@@ -2256,7 +2256,7 @@
2256
2256
  };
2257
2257
  const _hoisted_2$7 = ["title", "textContent"];
2258
2258
  const _hoisted_3$4 = ["textContent"];
2259
- const _hoisted_4$4 = {
2259
+ const _hoisted_4$3 = {
2260
2260
  key: 1,
2261
2261
  class: "placeholder"
2262
2262
  };
@@ -2409,7 +2409,7 @@
2409
2409
  button: "",
2410
2410
  size: 24,
2411
2411
  rotate: 90
2412
- })) : vue.createCommentVNode("", true)], 64)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$4, "暂无可选项"))], 2);
2412
+ })) : vue.createCommentVNode("", true)], 64)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$3, "暂无可选项"))], 2);
2413
2413
  };
2414
2414
  }
2415
2415
  });
@@ -2588,10 +2588,15 @@
2588
2588
  class: "snail-action flex-cross-center",
2589
2589
  ref: "snail-action"
2590
2590
  };
2591
- const _hoisted_2$5 = ["title"];
2591
+ const _hoisted_2$5 = {
2592
+ class: "action-slot flex-cross-center"
2593
+ };
2592
2594
  var _sfc_main$i = vue.defineComponent({
2593
2595
  __name: "action",
2594
2596
  props: {
2597
+ disabled: {
2598
+ type: Boolean
2599
+ },
2595
2600
  trigger: {},
2596
2601
  actions: {}
2597
2602
  },
@@ -2616,21 +2621,23 @@
2616
2621
  popupScope.destroy();
2617
2622
  return;
2618
2623
  }
2619
- popupScope = follow(rootDom.value, {
2620
- component: _sfc_main$j,
2621
- closeOnEscape: true,
2622
- closeOnMask: true,
2623
- closeOnResize: true,
2624
- closeOnTarget: true,
2625
- followX: longPress ? ["center", "start", "end"] : ["after", "end", "start", "end", "center"],
2626
- followY: longPress ? ["center", "after", "before"] : ["after", "before", "center", "end", "after"],
2627
- props: {
2628
- mode: "vertical",
2629
- actions: props.actions
2630
- }
2631
- });
2632
- const code = await popupScope;
2633
- snail_core.isStringNotEmpty(code) && emits("trigger", code);
2624
+ if (props.disabled != true) {
2625
+ popupScope = follow(rootDom.value, {
2626
+ component: _sfc_main$j,
2627
+ closeOnEscape: true,
2628
+ closeOnMask: true,
2629
+ closeOnResize: true,
2630
+ closeOnTarget: true,
2631
+ followX: longPress ? ["center", "start", "end"] : ["after", "end", "start", "end", "center"],
2632
+ followY: longPress ? ["center", "after", "before"] : ["after", "before", "center", "end", "after"],
2633
+ props: {
2634
+ mode: "vertical",
2635
+ actions: props.actions
2636
+ }
2637
+ });
2638
+ const code = await popupScope;
2639
+ snail_core.isStringNotEmpty(code) && emits("trigger", code);
2640
+ }
2634
2641
  }
2635
2642
  function onMouseDown() {
2636
2643
  if (props.trigger == "long-press" && pressStartDate == void 0) {
@@ -2664,10 +2671,7 @@
2664
2671
  }
2665
2672
  });
2666
2673
  return (_ctx, _cache) => {
2667
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [vue.createElementVNode("div", {
2668
- class: "action-slot flex-cross-center",
2669
- title: String(__props.trigger == "hover")
2670
- }, [vue.renderSlot(_ctx.$slots, "default")], 8, _hoisted_2$5), __props.trigger == "hover" ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
2674
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [vue.createElementVNode("div", _hoisted_2$5, [vue.renderSlot(_ctx.$slots, "default")]), __props.trigger == "hover" && __props.disabled != true ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
2671
2675
  key: 0,
2672
2676
  class: "hover-tips",
2673
2677
  button: "",
@@ -3043,19 +3047,12 @@
3043
3047
  }
3044
3048
  });
3045
3049
 
3046
- const _hoisted_1$9 = {
3047
- class: "fold-header"
3048
- };
3050
+ const _hoisted_1$9 = ["textContent"];
3049
3051
  const _hoisted_2$4 = ["textContent"];
3050
- const _hoisted_3$3 = ["textContent"];
3051
- const _hoisted_4$3 = {
3052
+ const _hoisted_3$3 = {
3052
3053
  key: 1,
3053
3054
  class: "status"
3054
3055
  };
3055
- const _hoisted_5$2 = {
3056
- class: "fold-body",
3057
- ref: "foldBody"
3058
- };
3059
3056
  var _sfc_main$f = vue.defineComponent({
3060
3057
  ...{
3061
3058
  name: "Fold",
@@ -3067,7 +3064,9 @@
3067
3064
  type: Boolean
3068
3065
  },
3069
3066
  title: {},
3070
- subtitle: {}
3067
+ subtitle: {},
3068
+ header: {},
3069
+ body: {}
3071
3070
  }, {
3072
3071
  "status": {
3073
3072
  default: "expand"
@@ -3087,27 +3086,37 @@
3087
3086
  watcher
3088
3087
  } = useReactive();
3089
3088
  const statusModel = vue.useModel(__props, "status");
3090
- watcher(statusModel, updateFoldStyle);
3089
+ const foldHeaderDom = vue.useTemplateRef("foldHeader");
3091
3090
  const foldBodyDom = vue.useTemplateRef("foldBody");
3092
- function updateFoldStyle() {
3091
+ const slotHandle = {
3092
+ getStatus: () => statusModel.value,
3093
+ setStatus: value => statusModel.value = value,
3094
+ toggle: () => (onStatusClick(), statusModel.value)
3095
+ };
3096
+ function updateFoldStyle(disableAnimation) {
3093
3097
  const isExpand = statusModel.value == "expand";
3094
3098
  if (foldBodyDom.value) {
3095
- const minHeight = 32;
3099
+ const minHeight = foldHeaderDom.value.getBoundingClientRect().height;
3096
3100
  const maxHeight = minHeight + foldBodyDom.value.getBoundingClientRect().height;
3097
- transition(foldBodyDom.value.parentElement, {
3098
- from: {
3099
- transition: "height 0.2s ease",
3100
- overflow: "hidden",
3101
- height: `${isExpand ? minHeight : maxHeight}px`
3102
- },
3103
- to: {
3104
- height: `${isExpand ? maxHeight : minHeight}px`
3105
- },
3106
- end: {
3107
- overflow: isExpand ? "" : "hidden",
3108
- height: isExpand ? "" : `${minHeight}px`
3109
- }
3110
- });
3101
+ const endStyle = {
3102
+ overflow: isExpand ? "" : "hidden",
3103
+ height: isExpand ? "" : `${minHeight}px`
3104
+ };
3105
+ if (disableAnimation === true) {
3106
+ Object.assign(foldBodyDom.value.parentElement.style, endStyle);
3107
+ } else {
3108
+ transition(foldBodyDom.value.parentElement, {
3109
+ from: {
3110
+ transition: "height 0.2s ease",
3111
+ overflow: "hidden",
3112
+ height: `${isExpand ? minHeight : maxHeight}px`
3113
+ },
3114
+ to: {
3115
+ height: `${isExpand ? maxHeight : minHeight}px`
3116
+ },
3117
+ end: endStyle
3118
+ });
3119
+ }
3111
3120
  }
3112
3121
  }
3113
3122
  function onStatusClick() {
@@ -3123,24 +3132,33 @@
3123
3132
  }
3124
3133
  vue.nextTick(() => emits("change", statusModel.value));
3125
3134
  }
3135
+ vue.onMounted(() => {
3136
+ statusModel.value != "expand" && updateFoldStyle(true);
3137
+ watcher(statusModel, () => updateFoldStyle(false));
3138
+ });
3126
3139
  return (_ctx, _cache) => {
3127
3140
  return vue.openBlock(), vue.createElementBlock("div", {
3128
3141
  class: vue.normalizeClass(["snail-fold", statusModel.value])
3129
- }, [vue.createElementVNode("div", _hoisted_1$9, [vue.renderSlot(_ctx.$slots, "header", {}, () => [vue.createElementVNode("div", {
3142
+ }, [vue.createElementVNode("div", {
3143
+ class: vue.normalizeClass(["fold-header", __props.header ? __props.header.class : []]),
3144
+ ref: "foldHeader"
3145
+ }, [vue.renderSlot(_ctx.$slots, "header", vue.normalizeProps(vue.guardReactiveProps(slotHandle)), () => [vue.createElementVNode("div", {
3130
3146
  class: "title ellipsis",
3131
3147
  textContent: vue.toDisplayString(__props.title)
3132
- }, null, 8, _hoisted_2$4), !!__props.subtitle ? (vue.openBlock(), vue.createElementBlock("div", {
3148
+ }, null, 8, _hoisted_1$9), !!__props.subtitle ? (vue.openBlock(), vue.createElementBlock("div", {
3133
3149
  key: 0,
3134
3150
  class: "subtitle ellipsis",
3135
3151
  textContent: vue.toDisplayString(__props.subtitle)
3136
- }, null, 8, _hoisted_3$3)) : vue.createCommentVNode("", true), __props.disabled != true ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$3, [vue.createVNode(_sfc_main$E, {
3137
- custom: false,
3152
+ }, null, 8, _hoisted_2$4)) : vue.createCommentVNode("", true), __props.disabled != true ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$3, [vue.createVNode(_sfc_main$E, {
3138
3153
  type: "arrow",
3139
3154
  button: "",
3140
3155
  title: statusModel.value == "expand" ? "收起" : "展开",
3141
3156
  rotate: statusModel.value == "expand" ? -90 : 90,
3142
3157
  onClick: onStatusClick
3143
- }, null, 8, ["title", "rotate"])])) : vue.createCommentVNode("", true)])]), vue.createElementVNode("div", _hoisted_5$2, [vue.renderSlot(_ctx.$slots, "default")], 512)], 2);
3158
+ }, null, 8, ["title", "rotate"])])) : vue.createCommentVNode("", true)])], 2), vue.createElementVNode("div", {
3159
+ class: vue.normalizeClass(["fold-body", __props.body ? __props.body.class : []]),
3160
+ ref: "foldBody"
3161
+ }, [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps(slotHandle)))], 2)], 2);
3144
3162
  };
3145
3163
  }
3146
3164
  });
@@ -3205,34 +3223,45 @@
3205
3223
  const map = Object.create(null);
3206
3224
  map.main = {
3207
3225
  scrollable: props.main && props.main.scroll != void 0,
3208
- class: "main-area",
3226
+ class: buildAreaClass("main-area", props.main),
3209
3227
  style: void 0
3210
3228
  };
3211
3229
  if (props.mode == "vertical") {
3212
3230
  map.top = {
3213
3231
  scrollable: props.top && props.top.scroll != void 0,
3214
- class: "top-area",
3232
+ class: buildAreaClass("top-area", props.top),
3215
3233
  style: buildHeightStyle(props.top)
3216
3234
  };
3217
3235
  map.bottom = {
3218
3236
  scrollable: props.bottom && props.bottom.scroll != void 0,
3219
- class: "bottom-area",
3237
+ class: buildAreaClass("bottom-area", props.bottom),
3220
3238
  style: buildHeightStyle(props.bottom)
3221
3239
  };
3222
3240
  } else {
3223
3241
  map.left = {
3224
3242
  scrollable: props.left && props.left.scroll != void 0,
3225
- class: "left-area",
3243
+ class: buildAreaClass("left-area", props.left),
3226
3244
  style: buildWidthStyle(props.left)
3227
3245
  };
3228
3246
  map.right = {
3229
3247
  scrollable: props.right && props.right.scroll != void 0,
3230
- class: "right-area",
3248
+ class: buildAreaClass("right-area", props.right),
3231
3249
  style: buildWidthStyle(props.right)
3232
3250
  };
3233
3251
  }
3234
3252
  return map;
3235
3253
  });
3254
+ function buildAreaClass(fixedClass, cssClass) {
3255
+ const classArray = [fixedClass];
3256
+ if (cssClass != void 0) {
3257
+ if (snail_core.isArray(cssClass.class) == true) {
3258
+ classArray.push(...cssClass.class);
3259
+ } else if (snail_core.isStringNotEmpty(cssClass.class) == true) {
3260
+ classArray.push(cssClass.class);
3261
+ }
3262
+ }
3263
+ return classArray;
3264
+ }
3236
3265
  function buildWidthStyle(style) {
3237
3266
  return style ? snail_view.css.buildStyle({
3238
3267
  minWidth: style.minWidth,
@@ -2,12 +2,12 @@
2
2
  .snail-button{align-items:center;border-radius:2px;cursor:pointer;display:flex;display:inline-flex;justify-content:center;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.snail-button.max{height:40px;width:120px}.snail-button.middle{height:32px;width:90px}.snail-button.normal{height:28px;width:54px}.snail-button.small{height:20px;width:30px}.snail-button.primary{background-color:#5ca3ff;color:#fff}.snail-button.default{background-color:#fff;border:1px solid #dddfed;color:#2e2f33}.snail-button.link{color:#4c9aff}
3
3
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/base/choose.vue index:0 */
4
4
  .snail-choose>div.choose-item{align-items:center;display:flex;flex-shrink:0;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.snail-choose>div.choose-item:not(.readonly){cursor:pointer}.snail-choose>div.choose-item>input::checkmark{background-color:#2196f3;border-color:#2196f3}.snail-choose>div.choose-item>span{margin-left:4px}.snail-choose>div.choose-item>span.item-des{color:#8a9099}.snail-choose>div.choose-item>.item-text{color:#2e3033}.snail-choose>div.choose-item:after{content:"";height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.snail-choose.horizontal{align-items:center;display:flex;flex-wrap:wrap;overflow-x:hidden}.snail-choose.horizontal>div.choose-item{margin:0 8px}.snail-choose.horizontal>div.choose-item:first-child{margin-left:0}.snail-choose.vertical{display:flex;flex-direction:column;justify-content:center}.snail-choose.beautiful>.choose-item>.status{align-items:center;display:flex;flex-shrink:0;justify-content:center;overflow:hidden}.snail-choose.beautiful>.choose-item>.status.selected{background-color:#4c9aff;border:1px solid #4c9aff}.snail-choose.beautiful>.choose-item>.status:not(.selected){border:1px solid #dcdfe6}.snail-choose.beautiful.radio>.choose-item>.status{border-radius:50%;height:16px;width:16px}.snail-choose.beautiful.checkbox>.choose-item>.status{height:14px;width:14px}.snail-choose.beautiful.readonly>.choose-item>.status.selected{background-color:#d5d7db;border-color:#d5d7db}.snail-choose.beautiful.readonly>.choose-item>.status:not(.selected){opacity:.5}
5
+ /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/base/footer.vue index:0 */
6
+ .snail-footer{align-items:center;background-color:#fff;display:flex;flex-shrink:0;height:72px;padding:0 40px;width:100%}.snail-footer>.snail-button:nth-child(n+2){margin-left:20px}.snail-footer.start-divider{border-top:1px solid #dddfed}.snail-footer.left{justify-content:flex-start}.snail-footer.center{justify-content:center}.snail-footer.right{justify-content:flex-end}
5
7
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/base/header.vue index:0 */
6
8
  .snail-header{align-items:center;background-color:#fff;display:flex;flex-shrink:0;position:relative;width:100%}.snail-header>.header-title{color:#2e3033;flex:1;line-height:48px;overflow:hidden;padding:0 30px;text-overflow:ellipsis;white-space:nowrap}.snail-header>.header-title.left{text-align:left}.snail-header>.header-title.center{text-align:center}.snail-header>.header-title.right{text-align:right}.snail-header.start-divider{border-bottom:1px solid #dddfed}.snail-header.page{height:48px}.snail-header.page>.header-title{font-size:16px;font-weight:bold}.snail-header.page>.close-icon{margin-right:18px}.snail-header.dialog{height:64px;padding-top:16px}.snail-header.dialog>.header-title{font-size:20px}.snail-header.dialog>.close-icon{position:absolute;right:8px;top:8px}
7
9
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/base/icon.vue index:0 */
8
10
  .snail-icon{fill:#8a8099;opacity:1;transition:all .2s linear}.snail-icon.button{cursor:pointer}
9
- /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/base/footer.vue index:0 */
10
- .snail-footer{align-items:center;background-color:#fff;display:flex;flex-shrink:0;height:72px;padding:0 40px;width:100%}.snail-footer>.snail-button:nth-child(n+2){margin-left:20px}.snail-footer.start-divider{border-top:1px solid #dddfed}.snail-footer.left{justify-content:flex-start}.snail-footer.center{justify-content:center}.snail-footer.right{justify-content:flex-end}
11
11
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/base/input.vue index:0 */
12
12
  .snail-input{display:inline-flex;min-height:34px}.snail-input>.input-title{flex-shrink:0;padding-top:6px}.snail-input>.input-title>span.text{color:#2e3033}.snail-input>.input-title>span.required{color:#f74b4b;margin-left:2px}.snail-input>.input-body{align-self:start;display:flex;flex:1;height:32px}.snail-input>.input-body>input{flex:1}.snail-input>.input-body>span{background-color:red;flex-shrink:0}
13
13
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/base/number.vue index:0 */
@@ -18,10 +18,10 @@
18
18
  .snail-select{align-items:center;border:1px solid #dddfed;border-radius:4px;color:#2e3033;display:flex;height:32px;width:100%}.snail-select:not(.readonly){background-color:#fff}.snail-select:not(.readonly,.empty){cursor:pointer}.snail-select>div.select-result{align-items:center;display:flex;flex:1;flex-wrap:nowrap;height:30px;overflow:hidden;padding:0 10px 0 6px}.snail-select>div.placeholder{flex:1;padding:0 10px 0 6px}.snail-select>svg.snail-icon{flex-shrink:0;margin-right:4px}.snail-select>div.no-items{flex:1;padding:0 8px}
19
19
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/base/switch.vue index:0 */
20
20
  .snail-switch{border-radius:10px 10px 10px 10px;cursor:pointer;height:20px!important;overflow:hidden;position:relative;width:36px!important}.snail-switch>div{height:100%;width:100%}.snail-switch>div.on{background-color:#5ca3ff}.snail-switch>div.off{background-color:#c4c8cc;position:absolute;transition:left .2s ease}.snail-switch>div.status{background:#fff;border-radius:10px 10px 10px 10px;height:16px;position:absolute;top:2px;transition:left .2s ease;width:16px}.snail-switch.on>div.off{left:100%;top:0}.snail-switch.on>div.status{left:calc(100% - 18px)}.snail-switch.off>div.off{left:0;top:0}.snail-switch.off>div.status{left:2px}.snail-switch.readonly{cursor:not-allowed}
21
- /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/container/action.vue index:0 */
22
- .snail-action,.snail-action *{-webkit-user-select:none;-moz-user-select:none;user-select:none}.snail-action>.action-slot{flex:1;overflow:hidden;position:relative}.snail-action>.hover-tips{display:none;flex-shrink:0}.snail-action:hover>.hover-tips{display:block}
23
21
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/base/textarea.vue index:0 */
24
22
  textarea.snail-textarea{font-size:14px;line-height:1.5em;overflow-x:hidden;overflow-y:auto;resize:none;width:100%}
23
+ /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/container/action.vue index:0 */
24
+ .snail-action,.snail-action *{-webkit-user-select:none;-moz-user-select:none;user-select:none}.snail-action>.action-slot{flex:1;overflow:hidden;position:relative}.snail-action>.hover-tips{display:none;flex-shrink:0}.snail-action:hover>.hover-tips{display:block}
25
25
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/container/dynamic.vue index:0 */
26
26
  .snail-dynamic-error{color:red}.snail-dynamic-error>span{color:gray}
27
27
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/container/elastic.vue index:0 */
@@ -60,20 +60,20 @@ textarea.snail-textarea{font-size:14px;line-height:1.5em;overflow-x:hidden;overf
60
60
  .snail-empty{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;min-height:150px;width:100%}.snail-empty>img{height:60px;width:60px}.snail-empty>div.message{color:#babdc2;font-weight:400;padding:0 10px 10px}
61
61
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/prompt/loading.vue index:0 */
62
62
  .snail-loading{height:100%;left:0;position:absolute;top:0;width:100%;z-index:10000}.snail-loading.show-mask{background-color:rgba(0,0,0,.15)}.snail-loading:after,.snail-loading:before{animation:snail-loading-stretch 1s ease-in-out infinite;border-radius:50%;content:"";display:block;display:inline-block;height:10px;left:50%;margin-left:-18px;margin-top:-6px;position:absolute;top:50%;width:10px}.snail-loading:before{background-color:#279bf1}.snail-loading:after{animation-delay:-.5s;background:#64d214;margin-left:0;margin-right:-18px}@keyframes snail-loading-stretch{0%,to{transform:scale(1)}50%{transform:scale(2)}}
63
- /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/picker/components/time-pc.vue index:0 */
64
- .snail-layout.time-picker.pc{background-color:#fff;border:1px solid rgba(0,0,0,.12);border-radius:4px;box-shadow:0 0 3px rgba(0,0,0,.12);height:240px!important;overflow:hidden!important;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:210px!important}.snail-layout.time-picker.pc>.main-area{display:flex;flex-wrap:nowrap;justify-content:space-between;margin:10px;overflow:hidden}.snail-layout.time-picker.pc>.main-area>.tz-item{border:1px solid #eee;border-left:none;flex-shrink:0;overflow:hidden auto;width:30%}.snail-layout.time-picker.pc>.main-area>.tz-item>.tzi-number{align-items:center;border-left:1px solid #eee;cursor:pointer;display:flex;height:24px;justify-content:center}.snail-layout.time-picker.pc>.main-area>.tz-item>.tzi-number:hover{background-color:#f4f4f4}.snail-layout.time-picker.pc>.main-area>.tz-item>.tzi-number.active{background-color:#58a4fd;border-color:#58a4fd;color:#fff!important}.snail-layout.time-picker.pc>.main-area>.tz-item>.tzi-number.active.disabled{opacity:.6}.snail-layout.time-picker.pc>.main-area>.tz-item>.tzi-number.disabled{color:#ddd;cursor:not-allowed}.snail-layout.time-picker.pc>.main-area>.tz-item::-webkit-scrollbar{width:4px}.snail-layout.time-picker.pc>.main-area>.tz-item::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.6);border:none;border-radius:0}.snail-layout.time-picker.pc>.main-area>.tz-item::-webkit-scrollbar-track{background:rgba(0,0,0,.1);border-radius:0}.snail-layout.time-picker.pc>.bottom-area{align-items:center;border-top:1px solid #eee;display:flex;height:30px;justify-content:flex-end;padding-right:10px}.snail-layout.time-picker.pc>.bottom-area>.snail-button{color:#999;font-size:12px;margin-left:4px}.snail-layout.time-picker.pc>.bottom-area>.snail-button:hover,.snail-layout.time-picker.pc>.bottom-area>.snail-button:last-child{color:#58a4fd}.snail-layout.time-picker.pc>.bottom-area>.snail-button.disabled{cursor:not-allowed;opacity:.6}.snail-layout.time-picker.pc.second-disabled{width:180px}.snail-layout.time-picker.pc.second-disabled>.main-area>.tz-item{width:46%}
65
- /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/picker/components/date-pc.vue index:0 */
66
- .snail-layout.date-picker.pc{background-color:#fff;border:1px solid rgba(0,0,0,.12);border-radius:4px;box-shadow:0 0 3px rgba(0,0,0,.12);height:300px!important;overflow:hidden!important;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:280px!important}.snail-layout.date-picker.pc.time-now:after{background-color:gray;content:"";height:100%;left:0;opacity:.6;position:absolute;top:0;width:100%}.snail-layout.date-picker.pc>.top-area{align-items:center;border-bottom:1px solid #eee;display:flex;flex-wrap:nowrap;padding:0 4px}.snail-layout.date-picker.pc>.top-area>svg{fill:#8a9099;flex-shrink:0}.snail-layout.date-picker.pc>.top-area>svg:hover{fill:#58a4fd}.snail-layout.date-picker.pc>.top-area>div.header-content{align-items:center;display:flex;flex:1;justify-content:center}.snail-layout.date-picker.pc>.top-area>div.header-content>div{align-items:center;display:flex;font-size:16px;height:100%}.snail-layout.date-picker.pc>.top-area>div.header-content>div:nth-child(2){margin-left:8px}.snail-layout.date-picker.pc>.top-area>div.header-content:not(.year)>div:hover{color:#58a4fd;cursor:pointer}.snail-layout.date-picker.pc>.main-area{display:flex;flex-wrap:wrap;justify-content:space-between}.snail-layout.date-picker.pc>.main-area>div{align-items:center;display:flex;flex-shrink:0;font-size:13px;justify-content:center;position:relative}.snail-layout.date-picker.pc>.main-area>div>span{align-items:center;display:flex;height:28px;justify-content:center}.snail-layout.date-picker.pc>.main-area>div>span:hover{background:#f4f4f4;cursor:pointer}.snail-layout.date-picker.pc>.main-area>div.active>span{background-color:#58a4fd;color:#fff!important}.snail-layout.date-picker.pc>.main-area>div.active.disabled{opacity:.6}.snail-layout.date-picker.pc>.main-area>div.disabled>span{color:#aaa;cursor:not-allowed}.snail-layout.date-picker.pc>.main-area>div.day-item{height:30px;width:36px}.snail-layout.date-picker.pc>.main-area>div.day-item.week{font-weight:bold}.snail-layout.date-picker.pc>.main-area>div.day-item.active>span,.snail-layout.date-picker.pc>.main-area>div.day-item:hover>span{border-radius:100%;width:28px}.snail-layout.date-picker.pc>.main-area>div.day-item:not(.now-month)>span{color:#aaa}.snail-layout.date-picker.pc>.main-area>div.month-item,.snail-layout.date-picker.pc>.main-area>div.year-item{width:30%}.snail-layout.date-picker.pc>.main-area>div.month-item.active>span,.snail-layout.date-picker.pc>.main-area>div.month-item:hover>span,.snail-layout.date-picker.pc>.main-area>div.year-item.active>span,.snail-layout.date-picker.pc>.main-area>div.year-item:hover>span{border-radius:15px;padding:0 8px;width:-moz-fit-content;width:fit-content}.snail-layout.date-picker.pc>.bottom-area{align-items:center;border-top:1px solid #eee;display:flex;height:30px;justify-content:flex-end;padding-right:10px}.snail-layout.date-picker.pc>.bottom-area>.time-area{color:#58a4fd;cursor:pointer;font-size:12px;margin-left:10px;margin-right:auto}.snail-layout.date-picker.pc>.bottom-area>.snail-button{color:#999;font-size:12px;margin-left:4px}.snail-layout.date-picker.pc>.bottom-area>.snail-button:hover,.snail-layout.date-picker.pc>.bottom-area>.snail-button:last-child{color:#58a4fd}.snail-layout.date-picker.pc>.bottom-area>.snail-button.disabled{cursor:not-allowed;opacity:.6}
67
63
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/popup/components/confirm-container.vue index:0 */
68
64
  .snail-confirm{background-color:#fff;border-radius:4px;color:#2e2f33;max-height:350px;max-width:548px;min-width:348px}.snail-confirm>div.confirm-body{flex:1;margin:20px 40px;overflow:auto;word-wrap:break-word}
69
65
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/popup/components/dialog-container.vue index:0 */
70
66
  .snail-dialog{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%}.snail-dialog:before{background-color:rgba(24,27,33,.45);content:"";height:100%;opacity:1;position:absolute;transition:opacity .4s ease-in-out;width:100%}.snail-dialog>.dialog-body{background-color:#fff;border-radius:4px;box-shadow:0 0 15px rgba(0,0,0,.3);position:relative}.snail-dialog.unactive:before{opacity:0}.snail-dialog.unactive>.dialog-body{box-shadow:0 0 4px rgba(0,0,0,.3)}
71
- /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/popup/components/follow-container.vue index:0 */
72
- .snail-follow{background-color:#fff;max-height:100%;max-width:100%;position:fixed;transition-duration:.1s;transition-property:left,top;transition-timing-function:ease}.snail-follow.initial{top:100%;transition:none}
73
67
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/popup/components/popup-container.vue index:0 */
74
68
  .snail-popup{left:0;position:fixed;top:0}
69
+ /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/popup/components/follow-container.vue index:0 */
70
+ .snail-follow{background-color:#fff;max-height:100%;max-width:100%;position:fixed;transition-duration:.1s;transition-property:left,top;transition-timing-function:ease}.snail-follow.initial{top:100%;transition:none}
75
71
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/popup/components/toast-container.vue index:0 */
76
72
  .snail-toast{background:rgba(0,0,0,.7);border-radius:10px;color:#fff;display:flex;left:50%;max-height:200px;max-width:400px;min-width:200px;overflow:hidden;padding:20px 35px 20px 15px;position:fixed;top:50%;transform:translate(-50%,-50%)}.snail-toast>svg.close-icon{position:absolute;right:10px;top:12px}.snail-toast>div.icon{align-items:center;align-self:center;background:hsla(0,0%,100%,.15);border-radius:50%;display:flex;height:26px;justify-content:center;margin-right:6px;width:26px}.snail-toast>div.icon>svg{background:#fff;border-radius:50%;cursor:none!important;padding:2px}.snail-toast>div.message{flex:1;line-height:24px;overflow:hidden;word-break:break-all}
73
+ /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/picker/components/time-pc.vue index:0 */
74
+ .snail-layout.time-picker.pc{background-color:#fff;border:1px solid rgba(0,0,0,.12);border-radius:4px;box-shadow:0 0 3px rgba(0,0,0,.12);height:240px!important;overflow:hidden!important;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:210px!important}.snail-layout.time-picker.pc>.main-area{display:flex;flex-wrap:nowrap;justify-content:space-between;margin:10px;overflow:hidden}.snail-layout.time-picker.pc>.main-area>.tz-item{border:1px solid #eee;border-left:none;flex-shrink:0;overflow:hidden auto;width:30%}.snail-layout.time-picker.pc>.main-area>.tz-item>.tzi-number{align-items:center;border-left:1px solid #eee;cursor:pointer;display:flex;height:24px;justify-content:center}.snail-layout.time-picker.pc>.main-area>.tz-item>.tzi-number:hover{background-color:#f4f4f4}.snail-layout.time-picker.pc>.main-area>.tz-item>.tzi-number.active{background-color:#58a4fd;border-color:#58a4fd;color:#fff!important}.snail-layout.time-picker.pc>.main-area>.tz-item>.tzi-number.active.disabled{opacity:.6}.snail-layout.time-picker.pc>.main-area>.tz-item>.tzi-number.disabled{color:#ddd;cursor:not-allowed}.snail-layout.time-picker.pc>.main-area>.tz-item::-webkit-scrollbar{width:4px}.snail-layout.time-picker.pc>.main-area>.tz-item::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.6);border:none;border-radius:0}.snail-layout.time-picker.pc>.main-area>.tz-item::-webkit-scrollbar-track{background:rgba(0,0,0,.1);border-radius:0}.snail-layout.time-picker.pc>.bottom-area{align-items:center;border-top:1px solid #eee;display:flex;height:30px;justify-content:flex-end;padding-right:10px}.snail-layout.time-picker.pc>.bottom-area>.snail-button{color:#999;font-size:12px;margin-left:4px}.snail-layout.time-picker.pc>.bottom-area>.snail-button:hover,.snail-layout.time-picker.pc>.bottom-area>.snail-button:last-child{color:#58a4fd}.snail-layout.time-picker.pc>.bottom-area>.snail-button.disabled{cursor:not-allowed;opacity:.6}.snail-layout.time-picker.pc.second-disabled{width:180px}.snail-layout.time-picker.pc.second-disabled>.main-area>.tz-item{width:46%}
75
+ /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/picker/components/date-pc.vue index:0 */
76
+ .snail-layout.date-picker.pc{background-color:#fff;border:1px solid rgba(0,0,0,.12);border-radius:4px;box-shadow:0 0 3px rgba(0,0,0,.12);height:300px!important;overflow:hidden!important;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:280px!important}.snail-layout.date-picker.pc.time-now:after{background-color:gray;content:"";height:100%;left:0;opacity:.6;position:absolute;top:0;width:100%}.snail-layout.date-picker.pc>.top-area{align-items:center;border-bottom:1px solid #eee;display:flex;flex-wrap:nowrap;padding:0 4px}.snail-layout.date-picker.pc>.top-area>svg{fill:#8a9099;flex-shrink:0}.snail-layout.date-picker.pc>.top-area>svg:hover{fill:#58a4fd}.snail-layout.date-picker.pc>.top-area>div.header-content{align-items:center;display:flex;flex:1;justify-content:center}.snail-layout.date-picker.pc>.top-area>div.header-content>div{align-items:center;display:flex;font-size:16px;height:100%}.snail-layout.date-picker.pc>.top-area>div.header-content>div:nth-child(2){margin-left:8px}.snail-layout.date-picker.pc>.top-area>div.header-content:not(.year)>div:hover{color:#58a4fd;cursor:pointer}.snail-layout.date-picker.pc>.main-area{display:flex;flex-wrap:wrap;justify-content:space-between}.snail-layout.date-picker.pc>.main-area>div{align-items:center;display:flex;flex-shrink:0;font-size:13px;justify-content:center;position:relative}.snail-layout.date-picker.pc>.main-area>div>span{align-items:center;display:flex;height:28px;justify-content:center}.snail-layout.date-picker.pc>.main-area>div>span:hover{background:#f4f4f4;cursor:pointer}.snail-layout.date-picker.pc>.main-area>div.active>span{background-color:#58a4fd;color:#fff!important}.snail-layout.date-picker.pc>.main-area>div.active.disabled{opacity:.6}.snail-layout.date-picker.pc>.main-area>div.disabled>span{color:#aaa;cursor:not-allowed}.snail-layout.date-picker.pc>.main-area>div.day-item{height:30px;width:36px}.snail-layout.date-picker.pc>.main-area>div.day-item.week{font-weight:bold}.snail-layout.date-picker.pc>.main-area>div.day-item.active>span,.snail-layout.date-picker.pc>.main-area>div.day-item:hover>span{border-radius:100%;width:28px}.snail-layout.date-picker.pc>.main-area>div.day-item:not(.now-month)>span{color:#aaa}.snail-layout.date-picker.pc>.main-area>div.month-item,.snail-layout.date-picker.pc>.main-area>div.year-item{width:30%}.snail-layout.date-picker.pc>.main-area>div.month-item.active>span,.snail-layout.date-picker.pc>.main-area>div.month-item:hover>span,.snail-layout.date-picker.pc>.main-area>div.year-item.active>span,.snail-layout.date-picker.pc>.main-area>div.year-item:hover>span{border-radius:15px;padding:0 8px;width:-moz-fit-content;width:fit-content}.snail-layout.date-picker.pc>.bottom-area{align-items:center;border-top:1px solid #eee;display:flex;height:30px;justify-content:flex-end;padding-right:10px}.snail-layout.date-picker.pc>.bottom-area>.time-area{color:#58a4fd;cursor:pointer;font-size:12px;margin-left:10px;margin-right:auto}.snail-layout.date-picker.pc>.bottom-area>.snail-button{color:#999;font-size:12px;margin-left:4px}.snail-layout.date-picker.pc>.bottom-area>.snail-button:hover,.snail-layout.date-picker.pc>.bottom-area>.snail-button:last-child{color:#58a4fd}.snail-layout.date-picker.pc>.bottom-area>.snail-button.disabled{cursor:not-allowed;opacity:.6}
77
77
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/base/components/select-popup.vue index:0 */
78
78
  .snail-select-popup{background:#fff;border:1px solid #dddfed;border-radius:4px;box-shadow:0 1px 5px 1px #dddfed;display:flex;flex-direction:column;max-height:90%;min-height:32px;overflow:auto}.snail-select-popup>div.snail-search{margin:12px}.snail-select-popup>div.clear-all{align-items:center;background-color:#fff;border-top:1px solid #dddfed;bottom:0;color:#8a9099;cursor:pointer;display:flex;flex-shrink:0;height:32px;padding:0 12px;position:sticky!important;z-index:1}.snail-select-popup>div.clear-all:hover{color:#ff4c4c}.snail-select-popup.child-popup{max-width:250px;min-width:200px;padding-bottom:6px;padding-top:6px}.snail-select-popup.child-popup.placeholder{justify-content:center;padding:0 12px;width:100px!important}
79
79
  /* src:../../../../../01_snail/snail.js/packages/snail.vue/src/container/components/action-items.vue index:0 */
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "依赖【snail】,基于vue封装常用UI组件",
4
4
  "author": "snail_dev@163.com",
5
5
  "license": "MIT",
6
- "version": "2.0.21",
6
+ "version": "2.0.23",
7
7
  "type": "module",
8
8
  "main": "dist/snail.vue.js",
9
9
  "module": "dist/snail.vue.js",
@@ -14,8 +14,8 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "vue": "^3.5.14",
17
- "snail.core": ">=2.0.29",
18
- "snail.view": ">=2.0.7",
17
+ "snail.core": ">=2.0.30",
18
+ "snail.view": ">=2.0.11",
19
19
  "sortablejs": ">=1.15.6"
20
20
  },
21
21
  "devDependencies": {