@opentiny/vue-renderless 3.13.1 → 3.14.0

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.
Files changed (321) hide show
  1. package/action-sheet/index.js +20 -13
  2. package/action-sheet/vue.js +8 -7
  3. package/amount/index.js +100 -25
  4. package/amount/vue.js +102 -26
  5. package/anchor/index.js +1 -0
  6. package/area/index.js +8 -8
  7. package/area/vue.js +5 -5
  8. package/async-flowchart/index.js +16 -3
  9. package/autocomplete/index.js +58 -14
  10. package/autocomplete/vue.js +40 -12
  11. package/badge/index.js +12 -0
  12. package/badge/vue.js +6 -4
  13. package/breadcrumb/vue.js +3 -1
  14. package/breadcrumb-item/vue.js +6 -2
  15. package/button/index.js +5 -1
  16. package/calendar/index.js +2 -86
  17. package/calendar-bar/index.js +18 -4
  18. package/calendar-view/index.js +5 -1
  19. package/calendar-view/vue.js +16 -3
  20. package/card-group/vue.js +4 -2
  21. package/cascader/index.js +86 -34
  22. package/cascader/vue.js +61 -20
  23. package/cascader-menu/index.js +7 -7
  24. package/cascader-menu/vue.js +2 -3
  25. package/cascader-mobile/index.js +36 -23
  26. package/cascader-mobile/vue.js +6 -0
  27. package/cascader-node/index.js +13 -1
  28. package/cascader-node/vue.js +15 -4
  29. package/cascader-panel/index.js +1 -1
  30. package/cascader-select/column-index.js +150 -0
  31. package/cascader-select/column.js +120 -0
  32. package/cascader-select/index.js +29 -165
  33. package/cascader-select/usePicker.js +251 -0
  34. package/cascader-select/useTouch.js +65 -0
  35. package/cascader-select/vue.js +35 -47
  36. package/cell/vue.js +2 -1
  37. package/chart-bar/index.js +2 -3
  38. package/chart-core/deps/constants.js +43 -43
  39. package/chart-core/index.js +1 -1
  40. package/chart-gauge/index.js +2 -2
  41. package/chart-heatmap/index.js +17 -10
  42. package/chart-line/index.js +8 -9
  43. package/chart-tree/index.js +2 -2
  44. package/chart-waterfall/index.js +4 -6
  45. package/checkbox/index.js +18 -1
  46. package/checkbox/vue.js +15 -7
  47. package/checkbox-group/vue.js +1 -0
  48. package/col/vue.js +1 -1
  49. package/collapse/index.js +3 -3
  50. package/color-select-panel/vue.js +0 -7
  51. package/column-list-item/index.js +17 -1
  52. package/column-list-item/vue.js +8 -3
  53. package/common/date.js +7 -5
  54. package/common/deps/clickoutside.js +6 -2
  55. package/common/deps/dom.js +19 -4
  56. package/common/deps/popper.js +44 -11
  57. package/common/deps/resize-event.js +1 -0
  58. package/common/deps/touch-emulator.js +4 -1
  59. package/common/deps/tree-model/node.js +2 -2
  60. package/common/deps/tree-model/tree-store.js +2 -13
  61. package/common/deps/useRect.js +25 -0
  62. package/common/deps/vue-popper.js +38 -20
  63. package/common/index.js +2 -2
  64. package/common/runtime.js +1 -1
  65. package/common/string.js +2 -2
  66. package/common/type.js +2 -1
  67. package/common/validate/rules/enum.js +1 -1
  68. package/common/validate/rules/pattern.js +2 -2
  69. package/common/validate/rules/range.js +8 -5
  70. package/common/validate/rules/required.js +1 -1
  71. package/common/validate/rules/type.js +5 -5
  72. package/common/validate/rules/whitespace.js +1 -1
  73. package/common/validate/util.js +15 -16
  74. package/common/validate/validations/integer.js +1 -1
  75. package/common/validate/validations/method.js +1 -1
  76. package/currency/index.js +74 -7
  77. package/currency/vue.js +21 -5
  78. package/date-panel/index.js +16 -0
  79. package/date-panel/vue.js +8 -2
  80. package/date-picker-mobile/index.js +12 -0
  81. package/date-picker-mobile/vue.js +7 -1
  82. package/date-range/vue.js +14 -6
  83. package/date-table/index.js +5 -0
  84. package/date-table/vue.js +3 -1
  85. package/dialog-box/index.js +46 -14
  86. package/dialog-box/vue.js +30 -7
  87. package/dialog-select/index.js +6 -3
  88. package/dialog-select/vue.js +8 -4
  89. package/drawer/index.js +27 -5
  90. package/drawer/vue.js +14 -7
  91. package/dropdown/index.js +7 -7
  92. package/dropdown/vue.js +6 -2
  93. package/dropdown-item/index.js +9 -1
  94. package/dropdown-item/mf.js +6 -10
  95. package/dropdown-item/vue.js +20 -7
  96. package/dropdown-menu/index.js +20 -7
  97. package/dropdown-menu/vue.js +4 -3
  98. package/exception/index.js +2 -7
  99. package/exception/vue.js +7 -10
  100. package/fall-menu/index.js +5 -1
  101. package/fall-menu/vue.js +13 -2
  102. package/file-upload/index.js +68 -18
  103. package/file-upload/vue.js +38 -8
  104. package/filter-box/index.js +1 -0
  105. package/float-button/index.js +42 -0
  106. package/float-button/vue.js +101 -0
  107. package/floating-button/index.js +62 -16
  108. package/floating-button/vue.js +27 -9
  109. package/flowchart/index.js +134 -25
  110. package/flowchart/node.js +13 -4
  111. package/flowchart/vue.js +16 -4
  112. package/form/vue.js +8 -0
  113. package/form-item/index.js +5 -5
  114. package/form-item/vue.js +3 -1
  115. package/fullscreen/index.js +5 -5
  116. package/fullscreen/vue.js +3 -3
  117. package/grid/plugins/export.js +5 -2
  118. package/grid/utils/column.js +1 -0
  119. package/grid/utils/dom.js +7 -1
  120. package/image/index.js +6 -1
  121. package/image/vue.js +6 -3
  122. package/image-viewer/index.js +62 -51
  123. package/image-viewer/vue.js +17 -5
  124. package/input/index.js +81 -20
  125. package/input/vue.js +44 -18
  126. package/ip-address/index.js +61 -19
  127. package/ip-address/vue.js +22 -4
  128. package/link/vue.js +3 -1
  129. package/loading/index.js +2 -2
  130. package/loading/vue.js +8 -2
  131. package/logout/index.js +1 -1
  132. package/menu/index.js +15 -2
  133. package/menu/vue.js +22 -17
  134. package/mind-map/index.js +47 -0
  135. package/mind-map/vue.js +53 -0
  136. package/modal/index.js +44 -4
  137. package/modal/vue.js +18 -4
  138. package/multi-select/index.js +186 -11
  139. package/multi-select/vue.js +60 -15
  140. package/multi-select-item/index.js +23 -0
  141. package/multi-select-item/vue.js +31 -0
  142. package/numeric/index.js +46 -12
  143. package/numeric/vue.js +44 -19
  144. package/option/index.js +27 -9
  145. package/option/vue.js +37 -21
  146. package/option-group/index.js +3 -3
  147. package/package.json +1 -1
  148. package/pager/index.js +18 -4
  149. package/pager/vue.js +16 -5
  150. package/picker/index.js +258 -49
  151. package/picker/mb.js +42 -0
  152. package/picker/vue.js +70 -17
  153. package/picker-column/index.js +1 -1
  154. package/pop-upload/vue.js +3 -0
  155. package/popconfirm/index.js +3 -6
  156. package/popconfirm/vue.js +1 -1
  157. package/popeditor/index.js +71 -32
  158. package/popeditor/vue.js +15 -11
  159. package/popover/index.js +4 -4
  160. package/popover/vue.js +6 -6
  161. package/popup/index.js +3 -3
  162. package/popup/vue.js +5 -5
  163. package/pull-refresh/index.js +13 -13
  164. package/pull-refresh/vue.js +5 -4
  165. package/radio/index.js +0 -17
  166. package/radio/vue.js +4 -10
  167. package/rate/index.js +1 -1
  168. package/rate/vue.js +0 -2
  169. package/record/index.js +4 -1
  170. package/rich-text/clipboard.js +54 -0
  171. package/rich-text/index.js +192 -0
  172. package/rich-text/module/file-upload.js +107 -0
  173. package/rich-text/module/image-drop.js +63 -0
  174. package/rich-text/module/image-upload.js +89 -0
  175. package/rich-text/options.js +141 -0
  176. package/rich-text/table-module.js +382 -0
  177. package/rich-text/vue.js +102 -0
  178. package/{rich-text-edtior → rich-text-editor}/index.js +2 -2
  179. package/{rich-text-edtior → rich-text-editor}/vue.js +2 -5
  180. package/scrollbar/index.js +11 -11
  181. package/scrollbar/vue-bar.js +3 -3
  182. package/scrollbar/vue.js +5 -5
  183. package/search/index.js +9 -9
  184. package/search/vue.js +8 -6
  185. package/select/index.js +457 -389
  186. package/select/vue.js +257 -161
  187. package/select-dropdown/index.js +61 -3
  188. package/select-dropdown/vue.js +85 -8
  189. package/select-view/index.js +3 -1
  190. package/selected-box/index.js +2 -0
  191. package/selected-box/vue.js +6 -3
  192. package/signature/index.js +241 -0
  193. package/signature/vue.js +88 -0
  194. package/skeleton/index.js +14 -0
  195. package/skeleton/vue.js +15 -0
  196. package/skeleton-item/vue.js +15 -0
  197. package/slider/index.js +70 -17
  198. package/slider/vue.js +16 -7
  199. package/split/index.js +5 -3
  200. package/split/vue.js +4 -6
  201. package/standard-list-item/index.js +15 -1
  202. package/standard-list-item/vue.js +6 -5
  203. package/steps/index.js +25 -2
  204. package/steps/slide-bar.js +8 -1
  205. package/steps/vue.js +15 -3
  206. package/tab-item-mf/vue.js +14 -8
  207. package/tab-nav/index.js +30 -5
  208. package/tab-nav/vue.js +16 -4
  209. package/tabbar/vue.js +9 -3
  210. package/tabbar-item/vue.js +3 -2
  211. package/tabs/index.js +16 -4
  212. package/tabs/vue.js +2 -1
  213. package/tabs-mf/index.js +20 -6
  214. package/tabs-mf/vue-nav.js +26 -11
  215. package/tabs-mf/vue.js +7 -7
  216. package/tabs-mf/wheel.js +1 -0
  217. package/tag/index.js +1 -1
  218. package/tag-group/index.js +2 -1
  219. package/time/index.js +5 -2
  220. package/time/vue.js +1 -1
  221. package/time-line/index.js +3 -3
  222. package/time-line/vue.js +2 -2
  223. package/time-picker-mobile/index.js +24 -5
  224. package/time-picker-mobile/vue.js +17 -7
  225. package/time-range/index.js +2 -0
  226. package/timeline-item/vue.js +1 -1
  227. package/tooltip/index.js +6 -3
  228. package/tooltip/vue.js +4 -4
  229. package/transfer/index.js +20 -22
  230. package/transfer/vue.js +1 -6
  231. package/transfer-panel/vue.js +3 -5
  232. package/tree/index.js +21 -4
  233. package/tree/vue.js +10 -8
  234. package/tree-menu/index.js +31 -5
  235. package/tree-menu/vue.js +28 -15
  236. package/tree-node/index.js +18 -18
  237. package/tree-node/vue.js +6 -5
  238. package/types/action-sheet.type.d.ts +118 -1
  239. package/types/alert.type.d.ts +1 -1
  240. package/types/amount.type.d.ts +168 -1
  241. package/types/area.type.d.ts +134 -1
  242. package/types/async-flowchart.type.d.ts +72 -0
  243. package/types/autocomplete.type.d.ts +199 -1
  244. package/types/badge.type.d.ts +3 -1
  245. package/types/breadcrumb-item.type.d.ts +2 -0
  246. package/types/breadcrumb.type.d.ts +2 -0
  247. package/types/button-group.type.d.ts +3 -3
  248. package/types/button.type.d.ts +4 -0
  249. package/types/cascader-menu.type.d.ts +3 -4
  250. package/types/cascader-node.type.d.ts +5 -2
  251. package/types/cascader-panel.type-2bd03be3.d.ts +241 -0
  252. package/types/cascader-panel.type.d.ts +3 -241
  253. package/types/cascader.type.d.ts +329 -1
  254. package/types/checkbox.type.d.ts +9 -3
  255. package/types/collapse.type.d.ts +20 -3
  256. package/types/date-picker.type.d.ts +37 -0
  257. package/types/dialog-box.type.d.ts +13 -3
  258. package/types/drawer.type.d.ts +133 -1
  259. package/types/{dropdown-item.type-8ea6c633.d.ts → dropdown-item.type-8475a549.d.ts} +7 -13
  260. package/types/dropdown-item.type.d.ts +1 -1
  261. package/types/dropdown-menu.type.d.ts +1 -1
  262. package/types/dropdown.type.d.ts +1 -5
  263. package/types/fall-menu.type.d.ts +94 -1
  264. package/types/file-upload.type.d.ts +1 -1
  265. package/types/float-button.type.d.ts +123 -0
  266. package/types/form-item.type.d.ts +1 -1
  267. package/types/{form.type-d0fd42f3.d.ts → form.type-222799ae.d.ts} +5 -2
  268. package/types/form.type.d.ts +1 -1
  269. package/types/{index-e0250f63.d.ts → index-b012f687.d.ts} +9 -0
  270. package/types/input.type.d.ts +1 -5
  271. package/types/ip-address.type.d.ts +160 -1
  272. package/types/link.type.d.ts +6 -3
  273. package/types/loading.type.d.ts +7 -0
  274. package/types/milestone.type.d.ts +1 -1
  275. package/types/mind-map.type.d.ts +20 -0
  276. package/types/modal.type.d.ts +29 -2
  277. package/types/numeric.type.d.ts +41 -10
  278. package/types/pager.type.d.ts +13 -1
  279. package/types/picker.type.d.ts +18 -0
  280. package/types/popconfirm.type.d.ts +86 -1
  281. package/types/popeditor.type.d.ts +5 -1
  282. package/types/popover.type.d.ts +3 -3
  283. package/types/progress.type.d.ts +3 -1
  284. package/types/radio.type.d.ts +0 -4
  285. package/types/rate.type.d.ts +236 -1
  286. package/types/search.type.d.ts +88 -1
  287. package/types/shared.type.d.ts +1 -1
  288. package/types/skeleton-item.type.d.ts +38 -0
  289. package/types/skeleton.type.d.ts +45 -0
  290. package/types/slider.type.d.ts +49 -10
  291. package/types/steps.type.d.ts +15 -4
  292. package/types/switch.type.d.ts +3 -3
  293. package/types/tab-bar.type.d.ts +1 -1
  294. package/types/tab-nav.type.d.ts +7 -2
  295. package/types/tabs.type.d.ts +9 -1
  296. package/types/tag-group.type.d.ts +64 -1
  297. package/types/{time-line.type-d7daa669.d.ts → time-line.type-b155cb4f.d.ts} +12 -0
  298. package/types/time-line.type.d.ts +1 -1
  299. package/types/timeline-item.type.d.ts +1 -1
  300. package/types/tooltip.type.d.ts +2 -2
  301. package/types/transfer.type.d.ts +185 -1
  302. package/types/tree-menu.type.d.ts +210 -1
  303. package/types/upload-dragger.type.d.ts +2 -2
  304. package/types/{upload-list.type-343e8c11.d.ts → upload-list.type-a29aea50.d.ts} +31 -8
  305. package/types/upload-list.type.d.ts +1 -1
  306. package/types/upload.type.d.ts +1 -1
  307. package/types/user-head.type.d.ts +146 -1
  308. package/types/wizard.type.d.ts +1 -0
  309. package/upload/index.js +64 -34
  310. package/upload/vue.js +9 -5
  311. package/upload-dragger/index.js +22 -20
  312. package/upload-list/index.js +24 -18
  313. package/upload-list/vue.js +9 -4
  314. package/user/index.js +34 -25
  315. package/user/vue.js +1 -1
  316. package/user-head/index.js +3 -3
  317. package/watermark/index.js +11 -0
  318. package/wheel/index.js +3 -0
  319. package/wizard/vue.js +4 -2
  320. package/common/deps/modal-queue.js +0 -6
  321. package/common/deps/requestAnimationFrame.js +0 -25
package/menu/vue.js CHANGED
@@ -6,25 +6,25 @@ import {
6
6
  getActivedKeysPath,
7
7
  setNodeHidden,
8
8
  setAllNodeVisible,
9
- filterInput
9
+ filterInput,
10
+ computeData
10
11
  } from "./index";
11
12
  import debounce from "../common/deps/debounce";
12
13
  const api = ["state", "setIsCurrent", "filterNodes", "filterInput"];
13
- const renderless = (props, { reactive, watch, onMounted, computed }, { vm, emit, nextTick }) => {
14
- const api2 = {};
14
+ const initState = ({ reactive, computed, props, api: api2 }) => {
15
15
  const state = reactive({
16
16
  isEmpty: computed(() => props.data.length !== 0 && state.filterValue && state.filterData.length === 0),
17
17
  activedNodeId: null,
18
- filterCheckedId: null,
19
- activedKeys: props.activedKeys,
20
- expandedKeysPath: [],
21
- activedKeysPath: [],
22
- filterText: "",
23
18
  filterValue: "",
24
19
  currentPaths: [],
25
20
  filterData: [],
26
- data: props.data
21
+ data: computed(() => api2.computeData())
27
22
  });
23
+ return state;
24
+ };
25
+ const renderless = (props, { reactive, watch, onMounted, computed }, { vm, emit, nextTick }) => {
26
+ const api2 = {};
27
+ const state = initState({ reactive, computed, props, api: api2 });
28
28
  Object.assign(api2, {
29
29
  state,
30
30
  setIsCurrent: setIsCurrent({ props, vm, state, emit, nextTick }),
@@ -33,7 +33,8 @@ const renderless = (props, { reactive, watch, onMounted, computed }, { vm, emit,
33
33
  getActivedKeysPath: getActivedKeysPath({ state }),
34
34
  getExpandedKeysPath: getExpandedKeysPath({ state }),
35
35
  setAllNodeVisible: setAllNodeVisible({ vm, state }),
36
- filterInput: filterInput({ state })
36
+ filterInput: filterInput({ state }),
37
+ computeData: computeData({ props, vm })
37
38
  });
38
39
  watch(
39
40
  () => props.expandAll,
@@ -59,18 +60,22 @@ const renderless = (props, { reactive, watch, onMounted, computed }, { vm, emit,
59
60
  );
60
61
  watch(
61
62
  () => props.activedKeys,
62
- () => {
63
- state.activedKeys = props.activedKeys;
64
- api2.getActivedKeysPath(props.activedKeys);
63
+ (val) => {
64
+ if (val || val === 0) {
65
+ state.activedKeys = props.activedKeys;
66
+ api2.getActivedKeysPath(props.activedKeys);
67
+ api2.setIsCurrent(props.data, { id: props.activedKeys });
68
+ }
65
69
  },
66
70
  { immediate: true }
67
71
  );
68
72
  watch(
69
73
  () => props.data,
70
- () => {
71
- state.data = props.data;
72
- },
73
- { deep: true, immediate: true }
74
+ (val) => {
75
+ nextTick(() => {
76
+ api2.setIsCurrent(val, { id: props.activedKeys });
77
+ });
78
+ }
74
79
  );
75
80
  onMounted(() => {
76
81
  vm.$on("node-clicked", (param) => {
@@ -0,0 +1,47 @@
1
+ import "../chunk-G2ADBYYC.js";
2
+ const importData = (instance, data) => {
3
+ instance.init(data);
4
+ };
5
+ const initEvent = (render, emit) => {
6
+ const onOperation = (info) => {
7
+ emit("operation", { render, info });
8
+ };
9
+ const onSelectNode = (nodeObj, e) => {
10
+ emit("selectNode", { render, nodeObj, e });
11
+ };
12
+ const selectNewNode = (nodeObj) => {
13
+ emit("selectNewNode", { render, nodeObj });
14
+ };
15
+ const onSelectNodes = (nodeObj) => {
16
+ emit("selectNodes", { render, nodeObj });
17
+ };
18
+ const unselectNode = () => {
19
+ emit("unselectNode", { render });
20
+ };
21
+ const unselectNodes = () => {
22
+ emit("unselectNodes", { render });
23
+ };
24
+ const expandNode = (nodeObj) => {
25
+ emit("expandNode", { render, nodeObj });
26
+ };
27
+ render.bus.addListener("operation", onOperation);
28
+ render.bus.addListener("selectNode", onSelectNode);
29
+ render.bus.addListener("selectNewNode", selectNewNode);
30
+ render.bus.addListener("selectNodes", onSelectNodes);
31
+ render.bus.addListener("unselectNode", unselectNode);
32
+ render.bus.addListener("unselectNodes", unselectNodes);
33
+ render.bus.addListener("expandNode", expandNode);
34
+ return () => {
35
+ render.bus.removeListener("operation", onOperation);
36
+ render.bus.removeListener("selectNode", onSelectNode);
37
+ render.bus.removeListener("selectNewNode", selectNewNode);
38
+ render.bus.removeListener("selectNodes", onSelectNodes);
39
+ render.bus.removeListener("unselectNode", unselectNode);
40
+ render.bus.removeListener("unselectNodes", unselectNodes);
41
+ render.bus.removeListener("expandNode", expandNode);
42
+ };
43
+ };
44
+ export {
45
+ importData,
46
+ initEvent
47
+ };
@@ -0,0 +1,53 @@
1
+ import {
2
+ __spreadProps,
3
+ __spreadValues
4
+ } from "../chunk-G2ADBYYC.js";
5
+ import { importData, initEvent } from ".";
6
+ const api = [];
7
+ const renderless = (props, { getCurrentInstance, onMounted, onUnmounted, watch }, { emit }, {
8
+ MindElixir
9
+ }) => {
10
+ const api2 = {};
11
+ let destoryListener = null;
12
+ onMounted(() => {
13
+ var _a;
14
+ const instance = getCurrentInstance();
15
+ if (!instance) {
16
+ throw new Error(
17
+ "Can not find instance. Please open Issue: https://github.com/opentiny/tiny-vue/issues/new/choose"
18
+ );
19
+ }
20
+ const mindmap = instance.refs.mindmap;
21
+ const render = new MindElixir(__spreadProps(__spreadValues({
22
+ contextMenu: false,
23
+ toolBar: false,
24
+ nodeMenu: false
25
+ }, (_a = props.options) != null ? _a : {}), {
26
+ el: mindmap
27
+ }));
28
+ destoryListener = initEvent(render, emit);
29
+ emit("create", render);
30
+ watch(
31
+ () => props.modelValue,
32
+ () => {
33
+ if (props.modelValue) {
34
+ emit("beforeImport", { render, data: props.modelValue });
35
+ importData(render, props.modelValue);
36
+ emit("afterImport", { render, data: props.modelValue });
37
+ } else {
38
+ const root = MindElixir.new("root");
39
+ render.init(root);
40
+ }
41
+ },
42
+ { deep: true, immediate: true }
43
+ );
44
+ });
45
+ onUnmounted(() => {
46
+ destoryListener == null ? void 0 : destoryListener();
47
+ });
48
+ return api2;
49
+ };
50
+ export {
51
+ api,
52
+ renderless
53
+ };
package/modal/index.js CHANGED
@@ -5,6 +5,7 @@ import PopupManager from "../common/deps/popup-manager";
5
5
  import { getDomNode } from "../common/deps/dom";
6
6
  import { getViewportWindow } from "../common/global";
7
7
  const DragClass = "is__drag";
8
+ let timer;
8
9
  const emitZoom = ({ params, parent, emit, event }) => {
9
10
  let { $listeners, events = {} } = parent;
10
11
  if ($listeners.zoom) {
@@ -30,6 +31,11 @@ const computedBoxStyle = ({ props, isMobileFirstMode }) => () => {
30
31
  return { width, height };
31
32
  };
32
33
  const watchValue = (api) => (visible) => visible ? api.open() : api.close("hide");
34
+ const watchVisible = ({ api, props }) => (visible) => {
35
+ if (props.lockScroll) {
36
+ visible ? api.showScrollbar() : api.hideScrollbar();
37
+ }
38
+ };
33
39
  const created = ({ api, props, state }) => () => {
34
40
  if (props.modelValue) {
35
41
  api.open();
@@ -40,9 +46,19 @@ const mounted = ({
40
46
  api,
41
47
  parent,
42
48
  props,
43
- isMobileFirstMode
49
+ isMobileFirstMode,
50
+ state
44
51
  }) => () => {
45
- if (isMobileFirstMode) {
52
+ if (!isMobileFirstMode) {
53
+ let modalBoxElem = api.getBox();
54
+ Object.assign(modalBoxElem.style, {
55
+ width: props.width ? isNaN(props.width) ? props.width : `${props.width}px` : null,
56
+ height: props.height ? isNaN(props.height) ? props.height : `${props.height}px` : null
57
+ });
58
+ if (props.lockScroll && state.visible) {
59
+ api.showScrollbar();
60
+ }
61
+ } else {
46
62
  on(window, "resize", api.resetDragStyle);
47
63
  }
48
64
  if (props.escClosable) {
@@ -56,6 +72,7 @@ const beforeUnmouted = ({ api, parent, isMobileFirstMode }) => () => {
56
72
  off(document, "keydown", api.handleGlobalKeydownEvent);
57
73
  off(window, "hashchange", api.handleHashChange);
58
74
  api.removeMsgQueue();
75
+ api.hideScrollbar();
59
76
  if (parent.$el.parentNode) {
60
77
  parent.$el.parentNode.removeChild(parent.$el);
61
78
  }
@@ -65,6 +82,18 @@ const selfClickEvent = ({ api, parent, props }) => (event) => {
65
82
  api.close("mask");
66
83
  }
67
84
  };
85
+ const mouseEnterEvent = () => () => {
86
+ clearTimeout(timer);
87
+ };
88
+ const mouseLeaveEvent = ({ api, props }) => () => {
89
+ api.addMsgQueue();
90
+ timer = window.setTimeout(
91
+ () => {
92
+ api.close("close");
93
+ },
94
+ parseFloat(props.duration)
95
+ );
96
+ };
68
97
  const updateZindex = ({ state, props }) => () => {
69
98
  state.modalZindex = props.zIndex || PopupManager.nextZIndex();
70
99
  };
@@ -128,7 +157,7 @@ const open = ({
128
157
  }, 10);
129
158
  if (state.isMsg) {
130
159
  api.addMsgQueue();
131
- setTimeout(
160
+ timer = window.setTimeout(
132
161
  () => {
133
162
  api.close(params.type);
134
163
  },
@@ -628,6 +657,12 @@ const resetDragStyle = (api) => () => {
628
657
  modalBoxElement.style.left = "";
629
658
  modalBoxElement.style.top = "";
630
659
  };
660
+ const showScrollbar = (lockScrollClass) => () => {
661
+ addClass(document.body, lockScrollClass);
662
+ };
663
+ const hideScrollbar = (lockScrollClass) => () => {
664
+ removeClass(document.body, lockScrollClass);
665
+ };
631
666
  export {
632
667
  MsgQueue,
633
668
  addMsgQueue,
@@ -644,8 +679,11 @@ export {
644
679
  handleEvent,
645
680
  handleGlobalKeydownEvent,
646
681
  handleHashChange,
682
+ hideScrollbar,
647
683
  maximize,
648
684
  mounted,
685
+ mouseEnterEvent,
686
+ mouseLeaveEvent,
649
687
  mousedownEvent,
650
688
  open,
651
689
  removeMsgQueue,
@@ -653,9 +691,11 @@ export {
653
691
  resetFormTip,
654
692
  revert,
655
693
  selfClickEvent,
694
+ showScrollbar,
656
695
  toggleZoomEvent,
657
696
  updateFormTip,
658
697
  updateStyle,
659
698
  updateZindex,
660
- watchValue
699
+ watchValue,
700
+ watchVisible
661
701
  };
package/modal/vue.js CHANGED
@@ -18,6 +18,8 @@ import {
18
18
  mounted,
19
19
  beforeUnmouted,
20
20
  selfClickEvent,
21
+ mouseEnterEvent,
22
+ mouseLeaveEvent,
21
23
  updateZindex,
22
24
  closeEvent,
23
25
  confirmEvent,
@@ -25,7 +27,10 @@ import {
25
27
  open,
26
28
  resetDragStyle,
27
29
  computedBoxStyle,
28
- handleHashChange
30
+ handleHashChange,
31
+ showScrollbar,
32
+ hideScrollbar,
33
+ watchVisible
29
34
  } from "./index";
30
35
  const api = [
31
36
  "state",
@@ -38,6 +43,8 @@ const api = [
38
43
  "close",
39
44
  "updateStyle",
40
45
  "selfClickEvent",
46
+ "mouseEnterEvent",
47
+ "mouseLeaveEvent",
41
48
  "updateZindex",
42
49
  "closeEvent",
43
50
  "confirmEvent",
@@ -46,8 +53,9 @@ const api = [
46
53
  "beforeUnmouted",
47
54
  "resetDragStyle"
48
55
  ];
49
- const renderless = (props, { computed, onMounted, onBeforeUnmount, reactive, watch }, { vm, emit, emitter, nextTick, broadcast, vm: parent }, { isMobileFirstMode }) => {
56
+ const renderless = (props, { computed, onMounted, onBeforeUnmount, reactive, watch }, { vm, emit, emitter, nextTick, broadcast, vm: parent, constants, mode }, { isMobileFirstMode }) => {
50
57
  const api2 = {};
58
+ const lockScrollClass = constants.SCROLL_LOCK_CLASS(mode);
51
59
  const state = reactive({
52
60
  emitter: emitter(),
53
61
  visible: false,
@@ -70,9 +78,11 @@ const renderless = (props, { computed, onMounted, onBeforeUnmount, reactive, wat
70
78
  getBox: getBox({ vm }),
71
79
  watchValue: watchValue(api2),
72
80
  created: created({ api: api2, props, state }),
73
- mounted: mounted({ api: api2, parent, props, isMobileFirstMode }),
81
+ mounted: mounted({ api: api2, parent, props, isMobileFirstMode, state }),
74
82
  beforeUnmouted: beforeUnmouted({ api: api2, parent, isMobileFirstMode }),
75
83
  selfClickEvent: selfClickEvent({ api: api2, parent, props }),
84
+ mouseEnterEvent: mouseEnterEvent(),
85
+ mouseLeaveEvent: mouseLeaveEvent({ api: api2, props }),
76
86
  updateZindex: updateZindex({ state, props }),
77
87
  handleEvent: handleEvent({ api: api2, emit, parent, props, isMobileFirstMode }),
78
88
  closeEvent: closeEvent(api2),
@@ -90,9 +100,13 @@ const renderless = (props, { computed, onMounted, onBeforeUnmount, reactive, wat
90
100
  mousedownEvent: mousedownEvent({ api: api2, nextTick, props, state, emit, isMobileFirstMode }),
91
101
  dragEvent: dragEvent({ api: api2, emit, parent, props, state }),
92
102
  resetDragStyle: resetDragStyle(api2),
93
- computedBoxStyle: computedBoxStyle({ props, isMobileFirstMode })
103
+ computedBoxStyle: computedBoxStyle({ props, isMobileFirstMode }),
104
+ watchVisible: watchVisible({ api: api2, props }),
105
+ hideScrollbar: hideScrollbar(lockScrollClass),
106
+ showScrollbar: showScrollbar(lockScrollClass)
94
107
  });
95
108
  watch(() => props.modelValue, api2.watchValue);
109
+ watch(() => state.visible, api2.watchVisible);
96
110
  api2.created();
97
111
  onMounted(api2.mounted);
98
112
  onBeforeUnmount(api2.beforeUnmouted);
@@ -1,6 +1,64 @@
1
- import "../chunk-G2ADBYYC.js";
1
+ import {
2
+ __spreadProps,
3
+ __spreadValues
4
+ } from "../chunk-G2ADBYYC.js";
2
5
  import { cloneDeep } from "../chart-core/deps/utils";
3
- const created = ({ props, state, refs, nextTick }) => () => {
6
+ const initValue = ({ props, emit }) => () => {
7
+ const { modelValue, dataSource = [], disabled } = props;
8
+ if (disabled) {
9
+ return;
10
+ }
11
+ let value = [];
12
+ dataSource == null ? void 0 : dataSource.forEach((data, index) => {
13
+ const isArrayVal = Array.isArray(modelValue[index]);
14
+ if (data.multiple) {
15
+ value.push(isArrayVal ? modelValue[index] : []);
16
+ } else {
17
+ value.push(isArrayVal ? "" : modelValue[index] || "");
18
+ }
19
+ });
20
+ emit("update:modelValue", value);
21
+ };
22
+ const updateValue = ({ state, props, emit }) => (value) => {
23
+ const activeIndex = state.headerIndex;
24
+ const values = cloneDeep(props.modelValue);
25
+ if (!values) {
26
+ return;
27
+ }
28
+ if (Array.isArray(values[state.headerIndex])) {
29
+ const currentVal = values[activeIndex];
30
+ values[activeIndex] = currentVal.includes(value) ? currentVal.filter((i) => i !== value) : [...currentVal, value];
31
+ } else {
32
+ values[activeIndex] = value;
33
+ }
34
+ emit("update:modelValue", values);
35
+ };
36
+ const getOption = (options, target) => {
37
+ var _a;
38
+ for (const option of options) {
39
+ if (option.value === target) {
40
+ return option;
41
+ }
42
+ if ((_a = option.children) == null ? void 0 : _a.length) {
43
+ const result = getOption(option.children, target);
44
+ if (result) {
45
+ return result;
46
+ }
47
+ }
48
+ }
49
+ return null;
50
+ };
51
+ const updateTitle = ({ props, state }) => () => {
52
+ const { modelValue = [], dataSource = [] } = props;
53
+ const { headerInfo } = state;
54
+ modelValue.forEach((value, index) => {
55
+ var _a;
56
+ if (!dataSource[index].multiple) {
57
+ headerInfo[index].title = ((_a = getOption(dataSource[index].options, value)) == null ? void 0 : _a.label) || headerInfo[index].title;
58
+ }
59
+ });
60
+ };
61
+ const created = ({ api, emit, props, state, refs, nextTick }) => () => {
4
62
  nextTick(() => {
5
63
  state.dataSource = cloneDeep(props.dataSource);
6
64
  state.defaultSelectedArray = cloneDeep(props.defaultSelectedArray);
@@ -9,43 +67,131 @@ const created = ({ props, state, refs, nextTick }) => () => {
9
67
  state.headerInfo = state.dataSource.map((item) => {
10
68
  return { isSelected: false, title: item.title, isUP: false };
11
69
  });
70
+ api.initValue({ props, emit });
71
+ if (props.type === "list") {
72
+ state.dataSource.forEach((item, index) => {
73
+ const { flattenData, dataMap } = getFlatOptions(item.options);
74
+ item.options = flattenData;
75
+ state.optionMap[index] = dataMap;
76
+ });
77
+ }
78
+ });
79
+ };
80
+ const computedCurrentOptions = ({ state, props }) => () => {
81
+ const { options = [], multiple } = state.dataSource[state.headerIndex] || {};
82
+ const selectedValue = props.modelValue[state.headerIndex];
83
+ options.forEach((item) => {
84
+ var _a;
85
+ item.show = state.isSearching ? item.label.includes(state.searchValue) : ((_a = item.show) != null ? _a : parent == null ? void 0 : parent.expanded) || item.level === 0;
86
+ item.active = multiple ? selectedValue.includes(item.value) : item.value === selectedValue;
87
+ });
88
+ return options.filter((i) => i.show);
89
+ };
90
+ const getFlatOptions = (options) => {
91
+ const flattenData = [];
92
+ const dataMap = {};
93
+ const getChild = (data, level = 0, parent2) => {
94
+ data.forEach((item, index) => {
95
+ var _a, _b;
96
+ const id = parent2 ? parent2.id + index : String(index);
97
+ const parentId = (parent2 == null ? void 0 : parent2.id) || "";
98
+ const expanded = (parent2 == null ? void 0 : parent2.expanded) && ((_a = item.children) == null ? void 0 : _a.length) && item.expanded || false;
99
+ const currentData = __spreadProps(__spreadValues({}, item), { id, level, expanded, parentId });
100
+ flattenData.push(currentData);
101
+ if ((_b = item.children) == null ? void 0 : _b.length) {
102
+ getChild(item.children, level + 1, currentData);
103
+ }
104
+ dataMap[currentData.id] = item;
105
+ });
106
+ };
107
+ getChild(options);
108
+ flattenData.forEach((item) => {
109
+ if (item.children) {
110
+ item.hasChild = item.children.length > 0;
111
+ delete item.children;
112
+ }
12
113
  });
114
+ return { flattenData, dataMap };
13
115
  };
14
116
  const handleClick = ({ api, props, state }) => (value) => {
15
117
  var _a, _b, _c;
16
- state.wheelData = (_a = props.dataSource[value]) == null ? void 0 : _a.children;
118
+ if (props.disabled || props.dataSource[value].disabled) {
119
+ return;
120
+ }
121
+ if (props.type === "wheel") {
122
+ state.wheelData = (_a = props.dataSource[value]) == null ? void 0 : _a.options;
123
+ }
17
124
  if (state.headerIndex === -1) {
18
- state.showWheel = true;
125
+ state.showOptions = true;
19
126
  state.headerIndex = value;
20
127
  state.headerInfo[value] = getNewHeaderInfo(state.headerInfo, value, true);
21
128
  state.defaultSelectedIndexs = (_b = state.defaultSelectedArray[value]) != null ? _b : api.loadDefault(value);
22
129
  } else if (state.headerIndex !== value) {
23
- state.showWheel = true;
130
+ state.showOptions = true;
24
131
  state.headerInfo[state.headerIndex] = getNewHeaderInfo(state.headerInfo, state.headerIndex, false);
25
132
  state.headerIndex = value;
26
133
  state.headerInfo[value] = getNewHeaderInfo(state.headerInfo, value, true);
27
134
  state.defaultSelectedIndexs = (_c = state.defaultSelectedArray[value]) != null ? _c : api.loadDefault(value);
28
135
  } else {
29
- state.showWheel = !state.showWheel;
136
+ state.showOptions = !state.showOptions;
30
137
  const { isUP } = state.headerInfo[value];
31
138
  state.headerInfo[value] = getNewHeaderInfo(state.headerInfo, value, !isUP);
32
139
  }
33
140
  };
141
+ const handleOptionSelect = ({ api, state, emit }) => (option) => {
142
+ api.updateValue(option.value);
143
+ emit("item-click", state.optionMap[state.headerIndex][option.id], state.headerIndex);
144
+ if (!state.dataSource[state.headerIndex].multiple) {
145
+ api.handleClose();
146
+ }
147
+ };
148
+ const handleSearchInput = ({ state, emit }) => () => {
149
+ const { searchValue } = state;
150
+ emit("update:searchValue", searchValue);
151
+ };
152
+ const toggleChildExpand = (state, parentId, index) => {
153
+ const { options } = state.dataSource[state.headerIndex];
154
+ for (let i = index + 1; i < options.length; i++) {
155
+ if (options[i].parentId === parentId) {
156
+ options[i].show = !options[i].show;
157
+ } else {
158
+ break;
159
+ }
160
+ }
161
+ };
162
+ const toggleItemExpand = ({ state }) => (option) => {
163
+ const index = state.dataSource[state.headerIndex].options.findIndex((i) => i.id === option.id);
164
+ if (index !== -1) {
165
+ const target = state.dataSource[state.headerIndex].options[index];
166
+ target.expanded = !target.expanded;
167
+ toggleChildExpand(state, target.id, index);
168
+ }
169
+ };
34
170
  const confirm = ({ state, emit }) => () => {
35
171
  const wheelLevelItems = getWheelLevelItems(state.wheelData, state.defaultSelectedIndexs);
36
172
  const { selectedLabels, selectedItems } = getSelected(wheelLevelItems, state.defaultSelectedIndexs);
37
173
  state.headerInfo[state.headerIndex] = { isSelected: true, title: selectedLabels, isUP: false };
38
174
  state.defaultSelectedArray[state.headerIndex] = state.defaultSelectedIndexs;
39
175
  emit("confirm", selectedItems, state.headerIndex, state.defaultSelectedIndexs);
40
- state.showWheel = false;
176
+ state.showOptions = false;
41
177
  };
42
178
  const reset = ({ api, props, state, emit }) => () => {
43
179
  var _a;
44
- state.headerInfo[state.headerIndex] = { isSelected: false, title: "", isUP: false };
180
+ state.headerInfo[state.headerIndex] = {
181
+ isSelected: false,
182
+ title: props.dataSource[state.headerIndex].title || "",
183
+ isUP: false
184
+ };
45
185
  state.defaultSelectedIndexs = (_a = props.defaultSelectedArray[state.headerIndex]) != null ? _a : api.loadDefault(state.headerIndex);
46
186
  state.defaultSelectedArray[state.headerIndex] = state.defaultSelectedIndexs;
47
187
  emit("reset", [], state.headerIndex, state.defaultSelectedIndexs);
48
- state.showWheel = false;
188
+ state.showOptions = false;
189
+ };
190
+ const handleClose = (state) => () => {
191
+ state.showOptions = false;
192
+ if (state.headerIndex !== -1) {
193
+ state.headerInfo[state.headerIndex].isUP = false;
194
+ }
49
195
  };
50
196
  const wheelChange = (state) => (indexs) => {
51
197
  state.defaultSelectedIndexs = indexs;
@@ -60,7 +206,7 @@ const clickWheelItem = ({ state, emit }) => (indexs, text, item) => {
60
206
  }
61
207
  state.defaultSelectedArray[state.headerIndex] = state.defaultSelectedIndexs;
62
208
  emit("confirm", item, state.headerIndex, indexs);
63
- state.showWheel = false;
209
+ state.showOptions = false;
64
210
  };
65
211
  const getWheelLevelItems = (wheelData, newIndexs) => {
66
212
  const level_1 = wheelData;
@@ -160,9 +306,17 @@ const getEl = (node) => {
160
306
  return node.$el || node;
161
307
  };
162
308
  const getLabelsStyle = (state) => {
309
+ const len = state.dataSource.length;
310
+ if (len === 1) {
311
+ return [
312
+ {
313
+ flex: 1,
314
+ justifyContent: "space-between"
315
+ }
316
+ ];
317
+ }
163
318
  const over25Labels = state.labelLevelsInfo.filter((i) => i && !i.isOver25);
164
319
  let widthInfo = over25Labels;
165
- const len = state.dataSource.length;
166
320
  if (len >= 4) {
167
321
  return getStyleConfig(state.labelLevelsInfo, { width: `${(1 / len * 100).toFixed(2)}%` });
168
322
  }
@@ -197,8 +351,20 @@ const getFillArray = (state, widthInfo, maxWidth) => {
197
351
  };
198
352
  });
199
353
  };
354
+ const handleSearchBtnClick = ({ props, state, nextTick, vm }) => () => {
355
+ if (props.disabled) {
356
+ return;
357
+ }
358
+ state.isSearching = !state.isSearching;
359
+ nextTick(() => {
360
+ if (state.isSearching) {
361
+ vm.$refs.searchInput.focus();
362
+ }
363
+ });
364
+ };
200
365
  export {
201
366
  clickWheelItem,
367
+ computedCurrentOptions,
202
368
  confirm,
203
369
  created,
204
370
  getEl,
@@ -208,12 +374,21 @@ export {
208
374
  getMaxFloor,
209
375
  getNewHeaderInfo,
210
376
  getNextLevel,
377
+ getOption,
211
378
  getRect,
212
379
  getSelected,
213
380
  getStyleConfig,
214
381
  getWheelLevelItems,
215
382
  handleClick,
383
+ handleClose,
384
+ handleOptionSelect,
385
+ handleSearchBtnClick,
386
+ handleSearchInput,
387
+ initValue,
216
388
  loadDefault,
217
389
  reset,
390
+ toggleItemExpand,
391
+ updateTitle,
392
+ updateValue,
218
393
  wheelChange
219
394
  };