@farris/ui-vue 1.0.0-beta.2 → 1.0.0-beta.4

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 (246) hide show
  1. package/accordion/index.esm.js +93 -0
  2. package/accordion/index.umd.js +1 -0
  3. package/accordion/package.json +8 -0
  4. package/accordion/style.css +1 -0
  5. package/avatar/index.esm.js +94 -0
  6. package/avatar/index.umd.js +1 -0
  7. package/avatar/package.json +8 -0
  8. package/avatar/style.css +1 -0
  9. package/button/index.esm.js +206 -0
  10. package/button/index.umd.js +1 -0
  11. package/button/package.json +8 -0
  12. package/button-edit/index.esm.js +300 -0
  13. package/button-edit/index.umd.js +1 -0
  14. package/button-edit/package.json +8 -0
  15. package/checkbox/index.esm.js +97 -0
  16. package/checkbox/index.umd.js +1 -0
  17. package/checkbox/package.json +8 -0
  18. package/combo-list/index.esm.js +457 -0
  19. package/combo-list/index.umd.js +1 -0
  20. package/combo-list/package.json +8 -0
  21. package/data-grid/index.esm.js +1535 -0
  22. package/data-grid/index.umd.js +1 -0
  23. package/data-grid/package.json +8 -0
  24. package/data-grid/style.css +1 -0
  25. package/date-picker/index.esm.js +1479 -0
  26. package/date-picker/index.umd.js +1 -0
  27. package/date-picker/package.json +8 -0
  28. package/date-picker/style.css +1 -0
  29. package/{src/index.esm.js → farris.all.esm.js} +1 -2
  30. package/farris.all.umd.js +1 -0
  31. package/list-view/index.esm.js +144 -0
  32. package/list-view/index.umd.js +1 -0
  33. package/list-view/package.json +8 -0
  34. package/list-view/style.css +1 -0
  35. package/message-box/index.esm.js +499 -0
  36. package/message-box/index.umd.js +1 -0
  37. package/message-box/package.json +8 -0
  38. package/modal/index.esm.js +165 -0
  39. package/modal/index.umd.js +1 -0
  40. package/modal/package.json +8 -0
  41. package/notify/index.esm.js +187 -0
  42. package/notify/index.umd.js +1 -0
  43. package/notify/package.json +8 -0
  44. package/notify/style.css +1 -0
  45. package/package.json +6 -5
  46. package/pagination/index.esm.js +334 -0
  47. package/pagination/index.umd.js +1 -0
  48. package/pagination/package.json +8 -0
  49. package/pagination/style.css +1 -0
  50. package/popover/index.esm.js +83 -0
  51. package/popover/index.umd.js +1 -0
  52. package/popover/package.json +8 -0
  53. package/popover/style.css +1 -0
  54. package/radio-group/index.esm.js +79 -0
  55. package/radio-group/index.umd.js +1 -0
  56. package/radio-group/package.json +8 -0
  57. package/section/index.esm.js +70 -0
  58. package/section/index.umd.js +1 -0
  59. package/section/package.json +8 -0
  60. package/switch/index.esm.js +78 -0
  61. package/switch/index.umd.js +1 -0
  62. package/switch/package.json +8 -0
  63. package/tabs/index.esm.js +385 -0
  64. package/tabs/index.umd.js +1 -0
  65. package/tabs/package.json +8 -0
  66. package/tabs/style.css +1 -0
  67. package/text/index.esm.js +33 -0
  68. package/text/index.umd.js +1 -0
  69. package/text/package.json +8 -0
  70. package/tooltip/index.esm.js +195 -0
  71. package/tooltip/index.umd.js +1 -0
  72. package/tooltip/package.json +8 -0
  73. package/tooltip/style.css +1 -0
  74. package/types/accordion/index.d.ts +25 -0
  75. package/types/accordion/src/accordion.component.d.ts +70 -0
  76. package/types/accordion/src/accordion.props.d.ts +50 -0
  77. package/types/accordion/src/components/accordion-item.component.d.ts +38 -0
  78. package/types/accordion/src/components/accordion-item.props.d.ts +34 -0
  79. package/types/avatar/index.d.ts +23 -0
  80. package/types/avatar/src/avatar.component.d.ts +109 -0
  81. package/types/avatar/src/avatar.props.d.ts +96 -0
  82. package/types/avatar/src/composition/types.d.ts +31 -0
  83. package/types/avatar/src/composition/use-image.d.ts +19 -0
  84. package/types/button/index.d.ts +24 -0
  85. package/types/button/src/button-group.component.d.ts +106 -0
  86. package/types/button/src/button-group.props.d.ts +106 -0
  87. package/types/button/src/button.component.d.ts +34 -0
  88. package/types/button/src/button.props.d.ts +47 -0
  89. package/types/button/src/composition/types-group.d.ts +24 -0
  90. package/types/button/src/composition/types.d.ts +24 -0
  91. package/types/button/src/composition/use-button-group.d.ts +19 -0
  92. package/types/button/src/composition/use-button.d.ts +19 -0
  93. package/types/button-edit/index.d.ts +23 -0
  94. package/types/button-edit/src/button-edit.props.d.ts +135 -0
  95. package/types/button-edit/src/composition/types.d.ts +118 -0
  96. package/types/button-edit/src/composition/use-button.d.ts +19 -0
  97. package/types/button-edit/src/composition/use-clear.d.ts +19 -0
  98. package/types/button-edit/src/composition/use-text-box.d.ts +19 -0
  99. package/types/checkbox/index.d.ts +23 -0
  100. package/types/checkbox/src/checkbox-group.component.d.ts +148 -0
  101. package/types/checkbox/src/checkbox-group.props.d.ts +123 -0
  102. package/types/checkbox/src/composition/types.d.ts +46 -0
  103. package/types/checkbox/src/composition/use-checkbox-group.d.ts +19 -0
  104. package/types/combo-list/index.d.ts +25 -0
  105. package/types/combo-list/src/combo-list.props.d.ts +290 -0
  106. package/types/combo-list/src/components/option.component.d.ts +39 -0
  107. package/types/combo-list/src/components/options.component.d.ts +10 -0
  108. package/types/combo-list/src/composition/index.d.ts +18 -0
  109. package/types/combo-list/src/composition/use-combo-list.d.ts +30 -0
  110. package/types/combo-list/src/composition/use-option.d.ts +19 -0
  111. package/types/combo-list/src/composition/use-options.d.ts +2 -0
  112. package/types/combo-list/src/composition/use-panel.d.ts +8 -0
  113. package/types/combo-list/src/const.d.ts +40 -0
  114. package/types/combo-list/src/types.d.ts +186 -0
  115. package/types/data-grid/index.d.ts +23 -0
  116. package/types/data-grid/src/components/data/data-area.component.d.ts +21 -0
  117. package/types/data-grid/src/components/editors/date-picker.component.d.ts +2 -0
  118. package/types/data-grid/src/components/editors/text-area-editor.component.d.ts +2 -0
  119. package/types/data-grid/src/components/editors/text-editor.component.d.ts +17 -0
  120. package/types/data-grid/src/components/header/data-grid-header.component.d.ts +22 -0
  121. package/types/data-grid/src/components/pagination/data-grid-pagination.component.d.ts +5 -0
  122. package/types/data-grid/src/components/scrollbar/horizontal-scrollbar.component.d.ts +21 -0
  123. package/types/data-grid/src/components/scrollbar/vertical-scrollbar.component.d.ts +21 -0
  124. package/types/data-grid/src/components/sidebar/data-grid-sidebar.component.d.ts +21 -0
  125. package/types/data-grid/src/components/summary/data-grid-summary.component.d.ts +5 -0
  126. package/types/data-grid/src/composition/types.d.ts +175 -0
  127. package/types/data-grid/src/composition/use-column.d.ts +17 -0
  128. package/types/data-grid/src/composition/use-data-view.d.ts +19 -0
  129. package/types/data-grid/src/composition/use-edit.d.ts +18 -0
  130. package/types/data-grid/src/composition/use-fit-column.d.ts +20 -0
  131. package/types/data-grid/src/composition/use-group-column.d.ts +22 -0
  132. package/types/data-grid/src/composition/use-group-data.d.ts +3 -0
  133. package/types/data-grid/src/composition/use-positon-style.d.ts +20 -0
  134. package/types/data-grid/src/composition/use-resize.d.ts +20 -0
  135. package/types/data-grid/src/composition/use-row.d.ts +3 -0
  136. package/types/data-grid/src/composition/use-sidebar.d.ts +3 -0
  137. package/types/data-grid/src/composition/use-virtual-scroll.d.ts +20 -0
  138. package/types/data-grid/src/composition/use-visual-data.d.ts +19 -0
  139. package/types/data-grid/src/data-grid.component.d.ts +278 -0
  140. package/types/data-grid/src/data-grid.props.d.ts +650 -0
  141. package/types/date-picker/index.d.ts +28 -0
  142. package/types/date-picker/src/components/calendar/calendar.component.d.ts +166 -0
  143. package/types/date-picker/src/components/calendar/calendar.props.d.ts +94 -0
  144. package/types/date-picker/src/components/calendar-navbar/calendar-navbar.component.d.ts +138 -0
  145. package/types/date-picker/src/components/calendar-navbar/calendar-navbar.props.d.ts +81 -0
  146. package/types/date-picker/src/components/date-picker-container/date-picker-container.component.d.ts +626 -0
  147. package/types/date-picker/src/components/date-picker-container/date-picker-container.props.d.ts +306 -0
  148. package/types/date-picker/src/components/month/month.component.d.ts +86 -0
  149. package/types/date-picker/src/components/month/month.props.d.ts +57 -0
  150. package/types/date-picker/src/components/year/year.component.d.ts +86 -0
  151. package/types/date-picker/src/components/year/year.props.d.ts +57 -0
  152. package/types/date-picker/src/composition/types.d.ts +102 -0
  153. package/types/date-picker/src/composition/use-calendar.d.ts +2 -0
  154. package/types/date-picker/src/composition/use-compare.d.ts +2 -0
  155. package/types/date-picker/src/composition/use-date.d.ts +2 -0
  156. package/types/date-picker/src/composition/use-disable-date.d.ts +18 -0
  157. package/types/date-picker/src/composition/use-disable-month.d.ts +2 -0
  158. package/types/date-picker/src/composition/use-event.d.ts +45 -0
  159. package/types/date-picker/src/composition/use-mark.d.ts +2 -0
  160. package/types/date-picker/src/composition/use-month.d.ts +2 -0
  161. package/types/date-picker/src/composition/use-number.d.ts +2 -0
  162. package/types/date-picker/src/composition/use-year.d.ts +2 -0
  163. package/types/date-picker/src/date-picker.props.d.ts +168 -0
  164. package/types/date-picker/src/types/calendar.d.ts +30 -0
  165. package/types/date-picker/src/types/common.d.ts +42 -0
  166. package/types/date-picker/src/types/date-model.d.ts +38 -0
  167. package/types/date-picker/src/types/month.d.ts +48 -0
  168. package/types/date-picker/src/types/year.d.ts +24 -0
  169. package/types/index.d.ts +20 -0
  170. package/types/list-view/index.d.ts +23 -0
  171. package/types/list-view/src/components/list-view-checkbox.component.d.ts +32 -0
  172. package/types/list-view/src/components/list-view-checkbox.props.d.ts +31 -0
  173. package/types/list-view/src/list-view.props.d.ts +44 -0
  174. package/types/message-box/index.d.ts +24 -0
  175. package/types/message-box/src/composition/types.d.ts +18 -0
  176. package/types/message-box/src/composition/use-copy.d.ts +18 -0
  177. package/types/message-box/src/message-box.component.d.ts +72 -0
  178. package/types/message-box/src/message-box.props.d.ts +52 -0
  179. package/types/modal/index.d.ts +23 -0
  180. package/types/modal/src/modal.component.d.ts +104 -0
  181. package/types/modal/src/modal.props.d.ts +72 -0
  182. package/types/notify/index.d.ts +26 -0
  183. package/types/notify/src/components/toast.component.d.ts +21 -0
  184. package/types/notify/src/components/toast.props.d.ts +27 -0
  185. package/types/notify/src/notify.props.d.ts +99 -0
  186. package/types/number-range/index.d.ts +23 -0
  187. package/types/number-range/src/composition/types.d.ts +52 -0
  188. package/types/number-range/src/composition/use-data.d.ts +19 -0
  189. package/types/number-range/src/composition/use-util.d.ts +19 -0
  190. package/types/number-range/src/number-range.component.d.ts +247 -0
  191. package/types/number-range/src/number-range.props.d.ts +216 -0
  192. package/types/number-spinner/index.d.ts +23 -0
  193. package/types/number-spinner/src/composition/types.d.ts +52 -0
  194. package/types/number-spinner/src/composition/use-data.d.ts +19 -0
  195. package/types/number-spinner/src/composition/use-util.d.ts +19 -0
  196. package/types/number-spinner/src/number-spinner.component.d.ts +202 -0
  197. package/types/number-spinner/src/number-spinner.props.d.ts +181 -0
  198. package/types/overlay/src/overlay.component.d.ts +20 -0
  199. package/types/overlay/src/overlay.props.d.ts +26 -0
  200. package/types/pagination/index.d.ts +23 -0
  201. package/types/pagination/src/components/buttons/goto-buttons.component.d.ts +19 -0
  202. package/types/pagination/src/components/buttons/next-buttons.component.d.ts +20 -0
  203. package/types/pagination/src/components/buttons/previous-buttons.component.d.ts +20 -0
  204. package/types/pagination/src/components/pages/page-info.component.d.ts +19 -0
  205. package/types/pagination/src/components/pages/page-list.component.d.ts +19 -0
  206. package/types/pagination/src/components/pages/page-number.component.d.ts +20 -0
  207. package/types/pagination/src/composition/types.d.ts +24 -0
  208. package/types/pagination/src/composition/use-pages.d.ts +18 -0
  209. package/types/pagination/src/pagination.components.d.ts +41 -0
  210. package/types/pagination/src/pagination.props.d.ts +36 -0
  211. package/types/popover/index.d.ts +24 -0
  212. package/types/popover/src/popover.component.d.ts +26 -0
  213. package/types/popover/src/popover.directive.d.ts +5 -0
  214. package/types/popover/src/popover.props.d.ts +30 -0
  215. package/types/radio-group/index.d.ts +23 -0
  216. package/types/radio-group/src/composition/change-radio.d.ts +19 -0
  217. package/types/radio-group/src/composition/types.d.ts +42 -0
  218. package/types/radio-group/src/radio-group.component.d.ts +91 -0
  219. package/types/radio-group/src/radio-group.props.d.ts +87 -0
  220. package/types/section/index.d.ts +23 -0
  221. package/types/section/src/section.component.d.ts +187 -0
  222. package/types/section/src/section.props.d.ts +117 -0
  223. package/types/switch/index.d.ts +23 -0
  224. package/types/switch/src/switch.component.d.ts +66 -0
  225. package/types/switch/src/switch.props.d.ts +52 -0
  226. package/types/tabs/index.d.ts +25 -0
  227. package/types/tabs/src/components/tab-page.component.d.ts +101 -0
  228. package/types/tabs/src/components/tab-page.props.d.ts +63 -0
  229. package/types/tabs/src/composition/types.d.ts +35 -0
  230. package/types/tabs/src/composition/use-tabs.d.ts +18 -0
  231. package/types/tabs/src/tabs.component.d.ts +149 -0
  232. package/types/tabs/src/tabs.props.d.ts +86 -0
  233. package/types/text/index.d.ts +23 -0
  234. package/types/text/src/text.component.d.ts +14 -0
  235. package/types/text/src/text.props.d.ts +26 -0
  236. package/types/tooltip/index.d.ts +24 -0
  237. package/types/tooltip/src/composition/types.d.ts +45 -0
  238. package/types/tooltip/src/composition/use-adjust-placement.d.ts +20 -0
  239. package/types/tooltip/src/composition/use-adjust-position.d.ts +6 -0
  240. package/types/tooltip/src/composition/use-calculate-position.d.ts +21 -0
  241. package/types/tooltip/src/composition/use-relative.d.ts +19 -0
  242. package/types/tooltip/src/composition/use-tooltip-position.d.ts +22 -0
  243. package/types/tooltip/src/tooltip.component.d.ts +56 -0
  244. package/types/tooltip/src/tooltip.props.d.ts +45 -0
  245. package/src/index.umd.js +0 -1
  246. /package/{src/style.css → style.css} +0 -0
@@ -0,0 +1,457 @@
1
+ import { ref as S, watch as R, defineComponent as N, computed as w, createVNode as f, Teleport as K, inject as q, withModifiers as _, withDirectives as G, vModelCheckbox as J, toRefs as Q, reactive as D, provide as U, resolveComponent as W, Fragment as X, mergeProps as Y } from "vue";
2
+ var x = /* @__PURE__ */ ((e) => (e.Text = "text", e.Tag = "tag", e))(x || {}), O = /* @__PURE__ */ ((e) => (e.top = "top", e.bottom = "bottom", e.auto = "auto", e))(O || {});
3
+ const Z = {
4
+ id: { type: String },
5
+ editable: { default: !1, type: Boolean },
6
+ disabled: { default: !1, type: Boolean },
7
+ readonly: { default: !1, type: Boolean },
8
+ maxLength: { type: Number },
9
+ placeholder: { type: String },
10
+ forcePlaceholder: { default: !1, type: Boolean },
11
+ enableClear: { default: !0, type: Boolean },
12
+ enableTitle: { default: !0, type: Boolean },
13
+ viewType: { default: x.Text, type: String },
14
+ mapFields: { type: Object },
15
+ data: { type: Array },
16
+ idField: { default: "id", type: String },
17
+ valueField: { default: "id", type: String },
18
+ textField: { default: "label", type: String },
19
+ multiSelect: { default: !1, type: Boolean },
20
+ remote: { default: null, type: Object },
21
+ maxHeight: { default: 350, type: Number },
22
+ remoteSearch: { default: !1, type: Boolean },
23
+ hidePanelOnClear: { default: !0, type: Boolean },
24
+ separator: { default: ",", type: String },
25
+ displayText: { type: String, default: "" },
26
+ modelValue: { type: [String, Number] },
27
+ dropDownIcon: { type: String, default: '<span class="f-icon f-icon-arrow-60-down"></span>' },
28
+ tabIndex: { type: Number, default: -1 },
29
+ enableSearch: { type: Boolean, default: !1 },
30
+ placement: { type: String, default: O.auto }
31
+ }, E = {
32
+ value: { required: !0, type: [String, Number] },
33
+ name: { required: !0, type: [String, Number] },
34
+ disabled: { default: !1, type: Boolean },
35
+ checked: { default: !1, type: Boolean }
36
+ }, L = {
37
+ isPanelVisible: { type: Boolean, default: !1 },
38
+ position: { type: String, default: O.bottom }
39
+ }, ee = {
40
+ options: {
41
+ type: Array
42
+ }
43
+ }, z = Symbol("fComboList"), A = Symbol("fComboListPanel");
44
+ var j = /* @__PURE__ */ ((e) => (e.clear = "clear", e.update = "update:modelValue", e))(j || {}), H = /* @__PURE__ */ ((e) => (e.panelShow = "panelShow", e.panelHidden = "panelHidden", e))(H || {});
45
+ function le(e, n) {
46
+ const l = S(""), u = S(e.modelValue), t = S(!1), a = S();
47
+ if (R([a], ([i]) => {
48
+ if (e.modelValue) {
49
+ const d = i.find((s) => s[e.valueField] === e.modelValue);
50
+ d && (l.value = d[e.textField]);
51
+ }
52
+ }), e.remote) {
53
+ const { url: i, method: d = "GET", headers: s = {}, body: y = null } = e.remote;
54
+ fetch(i, { method: d, headers: s, body: y }).then((v) => {
55
+ if (v.status === 200)
56
+ return v.json();
57
+ throw new Error(v.statusText);
58
+ }).then((v) => {
59
+ a.value = v;
60
+ }).catch((v) => {
61
+ console.error(v);
62
+ });
63
+ } else
64
+ a.value = e.data;
65
+ function o(i) {
66
+ u.value && (u.value = i.value), l.value = i.name, n.emit("update:modelValue", i.value);
67
+ }
68
+ return {
69
+ displayText: l,
70
+ modelValue: u,
71
+ isPanelVisible: t,
72
+ dataSource: a,
73
+ onValueChange: o
74
+ };
75
+ }
76
+ function te(e) {
77
+ const { isPanelVisible: n, context: l, modelValue: u, props: t } = e, a = (p) => {
78
+ n.value !== !1 && (n.value = !1);
79
+ }, o = (p) => {
80
+ n.value !== !1 && (n.value = !1);
81
+ };
82
+ R([n], ([p]) => {
83
+ p ? (window.addEventListener("resize", a), window.addEventListener("scroll", o)) : (window.removeEventListener("resize", a), window.removeEventListener("scroll", o));
84
+ });
85
+ function i(p) {
86
+ u.value = "", t.hidePanelOnClear && (n.value = !1), l.emit(j.update, ""), l.emit(j.clear);
87
+ }
88
+ function d(p) {
89
+ n.value = !n.value;
90
+ }
91
+ function s(p) {
92
+ n.value = !1;
93
+ }
94
+ function y(p) {
95
+ t.editable === !1 && (n.value = !0);
96
+ }
97
+ return {
98
+ onClear: i,
99
+ onClick: y,
100
+ onButtonClick: d,
101
+ onPanelHidden: s
102
+ };
103
+ }
104
+ const ae = {
105
+ popupContentPosition: { type: Object, default: { left: 0, top: 0 } }
106
+ }, ne = N({
107
+ name: "FOverlay",
108
+ props: ae,
109
+ emits: ["click"],
110
+ setup(e, n) {
111
+ const l = S(e.popupContentPosition);
112
+ function u(a) {
113
+ n.emit("click"), a.preventDefault(), a.stopPropagation();
114
+ }
115
+ const t = w(() => ({
116
+ position: "relative",
117
+ left: `${l.value.left}px`,
118
+ top: `${l.value.top}px`
119
+ }));
120
+ return () => f(K, {
121
+ to: "body"
122
+ }, {
123
+ default: () => {
124
+ var a, o;
125
+ return [f("div", {
126
+ class: "overlay-container",
127
+ style: "pointer-events: auto;",
128
+ onClick: (i) => u(i)
129
+ }, [f("div", {
130
+ style: t.value
131
+ }, [(o = (a = n.slots).default) == null ? void 0 : o.call(a)])])];
132
+ }
133
+ });
134
+ }
135
+ });
136
+ function ue() {
137
+ const e = q(z, null);
138
+ return {
139
+ idField: e == null ? void 0 : e.comboListProps.idField,
140
+ valueField: e == null ? void 0 : e.comboListProps.valueField,
141
+ textField: e == null ? void 0 : e.comboListProps.textField
142
+ };
143
+ }
144
+ function oe(e, n) {
145
+ const l = q(z, null), u = q(A, null), t = S(l == null ? void 0 : l.dataSource), a = (l == null ? void 0 : l.comboListProps.valueField) || "id", o = (l == null ? void 0 : l.comboListProps.textField) || "label", i = (l == null ? void 0 : l.comboListProps.separator) || ",", d = w(() => {
146
+ var B;
147
+ return l != null && l.modelValue ? e.value !== void 0 && ((B = l == null ? void 0 : l.modelValue) == null ? void 0 : B.toString().split(i).includes(e.value.toString())) : !1;
148
+ }), s = w(() => (l == null ? void 0 : l.comboListProps.multiSelect) || !1), y = w(() => e.name || e.value), p = l == null ? void 0 : l.defaultOptionSlot, v = (B) => {
149
+ var c, r;
150
+ if (!e.disabled && e.value !== void 0)
151
+ if (s.value) {
152
+ const h = (l == null ? void 0 : l.modelValue) || null, m = (h == null ? void 0 : h.toString().split(i)) || [], b = m == null ? void 0 : m.indexOf(e.value.toString());
153
+ b !== -1 ? m.splice(b, 1) : m.push(e.value.toString());
154
+ const g = (c = t.value) == null ? void 0 : c.filter((F) => F[a] && m.includes(F[a].toString())), P = g == null ? void 0 : g.map((F) => F[a]).join(i), V = g == null ? void 0 : g.map((F) => F[o]).join(i);
155
+ l == null || l.onValueChange({
156
+ value: P,
157
+ name: V
158
+ });
159
+ } else
160
+ l == null || l.onValueChange({
161
+ value: e.value,
162
+ name: e.name
163
+ }), (r = u == null ? void 0 : u.onPanelItemClick) == null || r.call(u, B);
164
+ }, k = w(() => s.value ? d.value : (l == null ? void 0 : l.modelValue) === e.value), C = w(() => ({
165
+ active: k.value,
166
+ "list-group-item": !0,
167
+ "list-group-item-action": !0
168
+ })), T = w(() => ({
169
+ cursor: e.disabled ? "not-allowed" : "default"
170
+ }));
171
+ return {
172
+ name: y,
173
+ optionClass: C,
174
+ isChecked: d,
175
+ rowStyle: T,
176
+ multiSelect: s,
177
+ onOptionClick: v,
178
+ defaultOptionSlot: p
179
+ };
180
+ }
181
+ const ie = N({
182
+ name: "FOption",
183
+ props: E,
184
+ emits: [],
185
+ setup(e, n) {
186
+ const {
187
+ name: l,
188
+ optionClass: u,
189
+ rowStyle: t,
190
+ multiSelect: a,
191
+ onOptionClick: o,
192
+ isChecked: i,
193
+ defaultOptionSlot: d
194
+ } = oe(e);
195
+ return () => f("li", {
196
+ style: t.value,
197
+ class: u.value,
198
+ onClick: _(o, ["prevent", "stop"])
199
+ }, [a.value && f("div", {
200
+ class: "custom-control custom-checkbox custom-control-inline",
201
+ style: "margin:0;padding-right:0;float:none;vertical-align: top;"
202
+ }, [G(f("input", {
203
+ class: "custom-control-input",
204
+ type: "checkbox",
205
+ title: "custom-input",
206
+ disabled: e.disabled,
207
+ "onUpdate:modelValue": (s) => i.value = s
208
+ }, null), [[J, i.value]]), f("label", {
209
+ class: "custom-control-label"
210
+ }, null)]), f("span", {
211
+ class: "f-datalist-item-text"
212
+ }, [d ? d({
213
+ name: l.value
214
+ }) : l.value])]);
215
+ }
216
+ }), re = N({
217
+ name: "FOptions",
218
+ props: ee,
219
+ emits: [],
220
+ setup(e, n) {
221
+ const {
222
+ valueField: l = "id",
223
+ textField: u = "label"
224
+ } = ue();
225
+ return () => {
226
+ var t;
227
+ return f("ul", {
228
+ class: "list-group list-group-flush"
229
+ }, [(t = e == null ? void 0 : e.options) == null ? void 0 : t.map((a) => f(ie, {
230
+ value: a[l],
231
+ name: a[u],
232
+ disabled: a.disabled
233
+ }, null))]);
234
+ };
235
+ }
236
+ });
237
+ function de(e) {
238
+ const { isPanelVisible: n, panelRef: l, context: u } = e, t = q(z, null), a = S((t == null ? void 0 : t.comboListProps.maxHeight) || 350), o = (t == null ? void 0 : t.comboListProps.valueField) || "id", i = (t == null ? void 0 : t.comboListProps.textField) || "label", d = (t == null ? void 0 : t.comboListProps.placement) || O.bottom, s = S(t == null ? void 0 : t.dataSource), y = S(t == null ? void 0 : t.dataSource), p = S(""), v = w(() => (t == null ? void 0 : t.comboListProps.enableSearch) || !1), k = w(() => ({
239
+ "z-index": 99999,
240
+ position: "absolute",
241
+ background: "#fff",
242
+ border: "solid 1px #ededed"
243
+ })), C = w(() => ({
244
+ "max-height": v.value ? a.value - 36 + "px" : a.value + "px",
245
+ overflow: "auto",
246
+ border: "none"
247
+ })), T = w(() => ({
248
+ comboPanel: !0,
249
+ "f-area-hide": !n.value,
250
+ "f-area-show": n.value
251
+ })), B = (c, r, h = O.bottom) => {
252
+ var F;
253
+ const m = ((F = c == null ? void 0 : c.getBoundingClientRect()) == null ? void 0 : F.height) || 350, b = r.bottom || 0, g = document.body.offsetHeight, P = (r == null ? void 0 : r.top) || 0, V = (r == null ? void 0 : r.height) || 0;
254
+ if (c.style.left = (r == null ? void 0 : r.left) + "px", c.style.width = (r == null ? void 0 : r.width) + "px", h === O.bottom || h === O.auto) {
255
+ c.style.top = P + V + "px";
256
+ const I = g - b, $ = m <= I ? m : I;
257
+ a.value = $;
258
+ } else if (h === O.top) {
259
+ const I = P, $ = m <= I ? m : I;
260
+ c.style.top = P - $ + "px", a.value = $;
261
+ }
262
+ };
263
+ return R([l, n], ([c, r]) => {
264
+ var h, m;
265
+ if (r && c) {
266
+ const b = t == null ? void 0 : t.comboListRef, g = (m = (h = b == null ? void 0 : b.$el) == null ? void 0 : h.parentNode) == null ? void 0 : m.querySelector(".input-group");
267
+ if (v.value) {
268
+ const V = c.querySelector("input");
269
+ V && V.focus();
270
+ }
271
+ const P = g == null ? void 0 : g.getBoundingClientRect();
272
+ B(c, P, d), u.emit(H.panelShow);
273
+ }
274
+ }), R([p], ([c]) => {
275
+ ce(() => {
276
+ var r;
277
+ if (!c)
278
+ return s.value = y.value;
279
+ s.value = (r = y == null ? void 0 : y.value) == null ? void 0 : r.filter(
280
+ (h) => {
281
+ var m, b;
282
+ return ((m = h[o]) == null ? void 0 : m.startsWith(c)) || h[o].toString().startsWith(c) || ((b = h[i]) == null ? void 0 : b.startsWith(c));
283
+ }
284
+ );
285
+ }, 500)();
286
+ }), {
287
+ panelStyle: k,
288
+ panelClass: T,
289
+ cardStyle: C,
290
+ enableSearch: v,
291
+ keyword: p,
292
+ items: s
293
+ };
294
+ }
295
+ function se(e) {
296
+ const { context: n } = e;
297
+ function l(o) {
298
+ n.emit(H.panelHidden);
299
+ }
300
+ function u(o) {
301
+ n.emit(H.panelHidden);
302
+ }
303
+ function t(o) {
304
+ }
305
+ function a(o) {
306
+ }
307
+ return {
308
+ onPanelContainerClick: l,
309
+ onPanelItemClick: u,
310
+ onSearchClick: t,
311
+ onPanelClick: a
312
+ };
313
+ }
314
+ function ce(e, n = 300) {
315
+ let l;
316
+ return (...u) => {
317
+ clearTimeout(l), l = window.setTimeout(() => {
318
+ e(u);
319
+ }, n);
320
+ };
321
+ }
322
+ const fe = N({
323
+ name: "FPanel",
324
+ props: L,
325
+ emits: [H.panelHidden, H.panelShow],
326
+ setup(e, n) {
327
+ const l = S(), {
328
+ isPanelVisible: u
329
+ } = Q(e), {
330
+ panelStyle: t,
331
+ panelClass: a,
332
+ cardStyle: o,
333
+ enableSearch: i,
334
+ keyword: d,
335
+ items: s
336
+ } = de({
337
+ isPanelVisible: u,
338
+ props: e,
339
+ panelRef: l,
340
+ context: n
341
+ }), {
342
+ onPanelContainerClick: y,
343
+ onPanelItemClick: p,
344
+ onSearchClick: v,
345
+ onPanelClick: k
346
+ } = se({
347
+ panelRef: l,
348
+ isPanelVisible: u,
349
+ context: n
350
+ }), C = D({
351
+ onPanelItemClick: p
352
+ });
353
+ return U(A, C), () => u.value && f(ne, {
354
+ onClick: y
355
+ }, {
356
+ default: () => [f("div", {
357
+ class: a.value,
358
+ ref: l,
359
+ style: t.value,
360
+ onClick: _(k, ["prevent", "stop"])
361
+ }, [i.value && f(W("f-button-edit"), {
362
+ enableClear: !0,
363
+ style: "padding:5px 10px",
364
+ buttonContent: "<i class='f-icon f-icon-search'></i>",
365
+ modelValue: d.value,
366
+ "onUpdate:modelValue": (T) => d.value = T,
367
+ onClickButton: v
368
+ }, null), f("div", {
369
+ style: "position: relative;",
370
+ class: "f-datalist"
371
+ }, [f("div", {
372
+ class: "card",
373
+ style: o.value
374
+ }, [f(re, {
375
+ options: s.value
376
+ }, null)])])])]
377
+ });
378
+ }
379
+ }), M = N({
380
+ name: "FComboList",
381
+ props: Z,
382
+ emits: [j.clear, j.update],
383
+ setup(e, n) {
384
+ const l = S(), {
385
+ onValueChange: u,
386
+ displayText: t,
387
+ modelValue: a,
388
+ isPanelVisible: o,
389
+ dataSource: i
390
+ } = le(e, n), {
391
+ onClear: d,
392
+ onButtonClick: s,
393
+ onPanelHidden: y,
394
+ onClick: p
395
+ } = te({
396
+ props: e,
397
+ context: n,
398
+ isPanelVisible: o,
399
+ modelValue: a
400
+ }), v = D({
401
+ comboListRef: l,
402
+ isPanelVisible: o,
403
+ comboListProps: e,
404
+ onValueChange: u,
405
+ modelValue: a,
406
+ dataSource: i,
407
+ defaultOptionSlot: n.slots.default
408
+ });
409
+ return U(z, v), () => f(X, null, [f(W("f-button-edit"), Y({
410
+ ref: l,
411
+ id: e.id,
412
+ class: {
413
+ active: o
414
+ }
415
+ }, n.attrs, {
416
+ disable: e.disabled,
417
+ readonly: e.readonly,
418
+ forcePlaceholder: e.forcePlaceholder,
419
+ editable: e.editable,
420
+ buttonContent: e.dropDownIcon,
421
+ placeholder: e.placeholder,
422
+ enableClear: e.enableClear,
423
+ maxLength: e.maxLength,
424
+ tabIndex: e.tabIndex,
425
+ enableTitle: e.enableTitle,
426
+ style: "display:block",
427
+ modelValue: t.value,
428
+ "onUpdate:modelValue": (k) => t.value = k,
429
+ onClear: d,
430
+ onClick: p,
431
+ onClickButton: s
432
+ }), null), o.value && f(fe, {
433
+ isPanelVisible: o.value,
434
+ onPanelHidden: y
435
+ }, null)]);
436
+ }
437
+ }), ve = {
438
+ install(e) {
439
+ e.component(M.name, M);
440
+ }
441
+ };
442
+ export {
443
+ M as FComboList,
444
+ O as Placement,
445
+ x as ViewType,
446
+ Z as comboListProps,
447
+ ce as debounce,
448
+ ve as default,
449
+ E as optionProps,
450
+ ee as optionsProps,
451
+ L as panelProps,
452
+ le as useComboList,
453
+ te as useComboListEvent,
454
+ oe as useOption,
455
+ de as usePanel,
456
+ se as usePanelEvent
457
+ };
@@ -0,0 +1 @@
1
+ (function(c,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],t):(c=typeof globalThis<"u"?globalThis:c||self,t(c["combo-list"]={},c.Vue))})(this,function(c,t){"use strict";var $=(e=>(e.Text="text",e.Tag="tag",e))($||{}),V=(e=>(e.top="top",e.bottom="bottom",e.auto="auto",e))(V||{});const M={id:{type:String},editable:{default:!1,type:Boolean},disabled:{default:!1,type:Boolean},readonly:{default:!1,type:Boolean},maxLength:{type:Number},placeholder:{type:String},forcePlaceholder:{default:!1,type:Boolean},enableClear:{default:!0,type:Boolean},enableTitle:{default:!0,type:Boolean},viewType:{default:$.Text,type:String},mapFields:{type:Object},data:{type:Array},idField:{default:"id",type:String},valueField:{default:"id",type:String},textField:{default:"label",type:String},multiSelect:{default:!1,type:Boolean},remote:{default:null,type:Object},maxHeight:{default:350,type:Number},remoteSearch:{default:!1,type:Boolean},hidePanelOnClear:{default:!0,type:Boolean},separator:{default:",",type:String},displayText:{type:String,default:""},modelValue:{type:[String,Number]},dropDownIcon:{type:String,default:'<span class="f-icon f-icon-arrow-60-down"></span>'},tabIndex:{type:Number,default:-1},enableSearch:{type:Boolean,default:!1},placement:{type:String,default:V.auto}},R={value:{required:!0,type:[String,Number]},name:{required:!0,type:[String,Number]},disabled:{default:!1,type:Boolean},checked:{default:!1,type:Boolean}},_={isPanelVisible:{type:Boolean,default:!1},position:{type:String,default:V.bottom}},z={options:{type:Array}},j=Symbol("fComboList"),D=Symbol("fComboListPanel");var N=(e=>(e.clear="clear",e.update="update:modelValue",e))(N||{}),k=(e=>(e.panelShow="panelShow",e.panelHidden="panelHidden",e))(k||{});function U(e,o){const l=t.ref(""),i=t.ref(e.modelValue),n=t.ref(!1),a=t.ref();if(t.watch([a],([r])=>{if(e.modelValue){const s=r.find(f=>f[e.valueField]===e.modelValue);s&&(l.value=s[e.textField])}}),e.remote){const{url:r,method:s="GET",headers:f={},body:b=null}=e.remote;fetch(r,{method:s,headers:f,body:b}).then(y=>{if(y.status===200)return y.json();throw new Error(y.statusText)}).then(y=>{a.value=y}).catch(y=>{console.error(y)})}else a.value=e.data;function d(r){i.value&&(i.value=r.value),l.value=r.name,o.emit("update:modelValue",r.value)}return{displayText:l,modelValue:i,isPanelVisible:n,dataSource:a,onValueChange:d}}function W(e){const{isPanelVisible:o,context:l,modelValue:i,props:n}=e,a=m=>{o.value!==!1&&(o.value=!1)},d=m=>{o.value!==!1&&(o.value=!1)};t.watch([o],([m])=>{m?(window.addEventListener("resize",a),window.addEventListener("scroll",d)):(window.removeEventListener("resize",a),window.removeEventListener("scroll",d))});function r(m){i.value="",n.hidePanelOnClear&&(o.value=!1),l.emit(N.update,""),l.emit(N.clear)}function s(m){o.value=!o.value}function f(m){o.value=!1}function b(m){n.editable===!1&&(o.value=!0)}return{onClear:r,onClick:b,onButtonClick:s,onPanelHidden:f}}const Q={popupContentPosition:{type:Object,default:{left:0,top:0}}},X=t.defineComponent({name:"FOverlay",props:Q,emits:["click"],setup(e,o){const l=t.ref(e.popupContentPosition);function i(a){o.emit("click"),a.preventDefault(),a.stopPropagation()}const n=t.computed(()=>({position:"relative",left:`${l.value.left}px`,top:`${l.value.top}px`}));return()=>t.createVNode(t.Teleport,{to:"body"},{default:()=>{var a,d;return[t.createVNode("div",{class:"overlay-container",style:"pointer-events: auto;",onClick:r=>i(r)},[t.createVNode("div",{style:n.value},[(d=(a=o.slots).default)==null?void 0:d.call(a)])])]}})}});function Y(){const e=t.inject(j,null);return{idField:e==null?void 0:e.comboListProps.idField,valueField:e==null?void 0:e.comboListProps.valueField,textField:e==null?void 0:e.comboListProps.textField}}function A(e,o){const l=t.inject(j,null),i=t.inject(D,null),n=t.ref(l==null?void 0:l.dataSource),a=(l==null?void 0:l.comboListProps.valueField)||"id",d=(l==null?void 0:l.comboListProps.textField)||"label",r=(l==null?void 0:l.comboListProps.separator)||",",s=t.computed(()=>{var O;return l!=null&&l.modelValue?e.value!==void 0&&((O=l==null?void 0:l.modelValue)==null?void 0:O.toString().split(r).includes(e.value.toString())):!1}),f=t.computed(()=>(l==null?void 0:l.comboListProps.multiSelect)||!1),b=t.computed(()=>e.name||e.value),m=l==null?void 0:l.defaultOptionSlot,y=O=>{var p,u;if(!e.disabled&&e.value!==void 0)if(f.value){const g=(l==null?void 0:l.modelValue)||null,h=(g==null?void 0:g.toString().split(r))||[],v=h==null?void 0:h.indexOf(e.value.toString());v!==-1?h.splice(v,1):h.push(e.value.toString());const S=(p=n.value)==null?void 0:p.filter(w=>w[a]&&h.includes(w[a].toString())),F=S==null?void 0:S.map(w=>w[a]).join(r),C=S==null?void 0:S.map(w=>w[d]).join(r);l==null||l.onValueChange({value:F,name:C})}else l==null||l.onValueChange({value:e.value,name:e.name}),(u=i==null?void 0:i.onPanelItemClick)==null||u.call(i,O)},P=t.computed(()=>f.value?s.value:(l==null?void 0:l.modelValue)===e.value),B=t.computed(()=>({active:P.value,"list-group-item":!0,"list-group-item-action":!0})),H=t.computed(()=>({cursor:e.disabled?"not-allowed":"default"}));return{name:b,optionClass:B,isChecked:s,rowStyle:H,multiSelect:f,onOptionClick:y,defaultOptionSlot:m}}const Z=t.defineComponent({name:"FOption",props:R,emits:[],setup(e,o){const{name:l,optionClass:i,rowStyle:n,multiSelect:a,onOptionClick:d,isChecked:r,defaultOptionSlot:s}=A(e);return()=>t.createVNode("li",{style:n.value,class:i.value,onClick:t.withModifiers(d,["prevent","stop"])},[a.value&&t.createVNode("div",{class:"custom-control custom-checkbox custom-control-inline",style:"margin:0;padding-right:0;float:none;vertical-align: top;"},[t.withDirectives(t.createVNode("input",{class:"custom-control-input",type:"checkbox",title:"custom-input",disabled:e.disabled,"onUpdate:modelValue":f=>r.value=f},null),[[t.vModelCheckbox,r.value]]),t.createVNode("label",{class:"custom-control-label"},null)]),t.createVNode("span",{class:"f-datalist-item-text"},[s?s({name:l.value}):l.value])])}}),E=t.defineComponent({name:"FOptions",props:z,emits:[],setup(e,o){const{valueField:l="id",textField:i="label"}=Y();return()=>{var n;return t.createVNode("ul",{class:"list-group list-group-flush"},[(n=e==null?void 0:e.options)==null?void 0:n.map(a=>t.createVNode(Z,{value:a[l],name:a[i],disabled:a.disabled},null))])}}});function K(e){const{isPanelVisible:o,panelRef:l,context:i}=e,n=t.inject(j,null),a=t.ref((n==null?void 0:n.comboListProps.maxHeight)||350),d=(n==null?void 0:n.comboListProps.valueField)||"id",r=(n==null?void 0:n.comboListProps.textField)||"label",s=(n==null?void 0:n.comboListProps.placement)||V.bottom,f=t.ref(n==null?void 0:n.dataSource),b=t.ref(n==null?void 0:n.dataSource),m=t.ref(""),y=t.computed(()=>(n==null?void 0:n.comboListProps.enableSearch)||!1),P=t.computed(()=>({"z-index":99999,position:"absolute",background:"#fff",border:"solid 1px #ededed"})),B=t.computed(()=>({"max-height":y.value?a.value-36+"px":a.value+"px",overflow:"auto",border:"none"})),H=t.computed(()=>({comboPanel:!0,"f-area-hide":!o.value,"f-area-show":o.value})),O=(p,u,g=V.bottom)=>{var w;const h=((w=p==null?void 0:p.getBoundingClientRect())==null?void 0:w.height)||350,v=u.bottom||0,S=document.body.offsetHeight,F=(u==null?void 0:u.top)||0,C=(u==null?void 0:u.height)||0;if(p.style.left=(u==null?void 0:u.left)+"px",p.style.width=(u==null?void 0:u.width)+"px",g===V.bottom||g===V.auto){p.style.top=F+C+"px";const T=S-v,I=h<=T?h:T;a.value=I}else if(g===V.top){const T=F,I=h<=T?h:T;p.style.top=F-I+"px",a.value=I}};return t.watch([l,o],([p,u])=>{var g,h;if(u&&p){const v=n==null?void 0:n.comboListRef,S=(h=(g=v==null?void 0:v.$el)==null?void 0:g.parentNode)==null?void 0:h.querySelector(".input-group");if(y.value){const C=p.querySelector("input");C&&C.focus()}const F=S==null?void 0:S.getBoundingClientRect();O(p,F,s),i.emit(k.panelShow)}}),t.watch([m],([p])=>{J(()=>{var u;if(!p)return f.value=b.value;f.value=(u=b==null?void 0:b.value)==null?void 0:u.filter(g=>{var h,v;return((h=g[d])==null?void 0:h.startsWith(p))||g[d].toString().startsWith(p)||((v=g[r])==null?void 0:v.startsWith(p))})},500)()}),{panelStyle:P,panelClass:H,cardStyle:B,enableSearch:y,keyword:m,items:f}}function G(e){const{context:o}=e;function l(d){o.emit(k.panelHidden)}function i(d){o.emit(k.panelHidden)}function n(d){}function a(d){}return{onPanelContainerClick:l,onPanelItemClick:i,onSearchClick:n,onPanelClick:a}}function J(e,o=300){let l;return(...i)=>{clearTimeout(l),l=window.setTimeout(()=>{e(i)},o)}}const x=t.defineComponent({name:"FPanel",props:_,emits:[k.panelHidden,k.panelShow],setup(e,o){const l=t.ref(),{isPanelVisible:i}=t.toRefs(e),{panelStyle:n,panelClass:a,cardStyle:d,enableSearch:r,keyword:s,items:f}=K({isPanelVisible:i,props:e,panelRef:l,context:o}),{onPanelContainerClick:b,onPanelItemClick:m,onSearchClick:y,onPanelClick:P}=G({panelRef:l,isPanelVisible:i,context:o}),B=t.reactive({onPanelItemClick:m});return t.provide(D,B),()=>i.value&&t.createVNode(X,{onClick:b},{default:()=>[t.createVNode("div",{class:a.value,ref:l,style:n.value,onClick:t.withModifiers(P,["prevent","stop"])},[r.value&&t.createVNode(t.resolveComponent("f-button-edit"),{enableClear:!0,style:"padding:5px 10px",buttonContent:"<i class='f-icon f-icon-search'></i>",modelValue:s.value,"onUpdate:modelValue":H=>s.value=H,onClickButton:y},null),t.createVNode("div",{style:"position: relative;",class:"f-datalist"},[t.createVNode("div",{class:"card",style:d.value},[t.createVNode(E,{options:f.value},null)])])])]})}}),q=t.defineComponent({name:"FComboList",props:M,emits:[N.clear,N.update],setup(e,o){const l=t.ref(),{onValueChange:i,displayText:n,modelValue:a,isPanelVisible:d,dataSource:r}=U(e,o),{onClear:s,onButtonClick:f,onPanelHidden:b,onClick:m}=W({props:e,context:o,isPanelVisible:d,modelValue:a}),y=t.reactive({comboListRef:l,isPanelVisible:d,comboListProps:e,onValueChange:i,modelValue:a,dataSource:r,defaultOptionSlot:o.slots.default});return t.provide(j,y),()=>t.createVNode(t.Fragment,null,[t.createVNode(t.resolveComponent("f-button-edit"),t.mergeProps({ref:l,id:e.id,class:{active:d}},o.attrs,{disable:e.disabled,readonly:e.readonly,forcePlaceholder:e.forcePlaceholder,editable:e.editable,buttonContent:e.dropDownIcon,placeholder:e.placeholder,enableClear:e.enableClear,maxLength:e.maxLength,tabIndex:e.tabIndex,enableTitle:e.enableTitle,style:"display:block",modelValue:n.value,"onUpdate:modelValue":P=>n.value=P,onClear:s,onClick:m,onClickButton:f}),null),d.value&&t.createVNode(x,{isPanelVisible:d.value,onPanelHidden:b},null)])}}),L={install(e){e.component(q.name,q)}};c.FComboList=q,c.Placement=V,c.ViewType=$,c.comboListProps=M,c.debounce=J,c.default=L,c.optionProps=R,c.optionsProps=z,c.panelProps=_,c.useComboList=U,c.useComboListEvent=W,c.useOption=A,c.usePanel=K,c.usePanelEvent=G,Object.defineProperties(c,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "combo-list",
3
+ "version": "1.0.0-beta.5",
4
+ "main": "index.umd.js",
5
+ "module": "index.es.js",
6
+ "style": "style.css",
7
+ "types": "../types/combo-list/index.d.ts"
8
+ }