@quoreadmin/ui 1.4.2 → 1.4.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 (345) hide show
  1. package/dist/index.js +110 -85433
  2. package/dist/index10.js +55 -0
  3. package/dist/index101.js +213 -0
  4. package/dist/index103.js +78 -0
  5. package/dist/index105.js +136 -0
  6. package/dist/index107.js +216 -0
  7. package/dist/index109.js +134 -0
  8. package/dist/index11.js +183 -0
  9. package/dist/index111.js +154 -0
  10. package/dist/index113.js +44 -0
  11. package/dist/index115.js +78 -0
  12. package/dist/index117.js +25 -0
  13. package/dist/index119.js +84 -0
  14. package/dist/index12.js +74 -0
  15. package/dist/index121.js +16 -0
  16. package/dist/index123.js +82 -0
  17. package/dist/index125.js +134 -0
  18. package/dist/index127.js +56 -0
  19. package/dist/index129.js +37 -0
  20. package/dist/index13.js +32 -0
  21. package/dist/index131.js +65 -0
  22. package/dist/index133.js +815 -0
  23. package/dist/index135.js +277 -0
  24. package/dist/index137.js +350 -0
  25. package/dist/index139.js +31 -0
  26. package/dist/index14.js +190 -0
  27. package/dist/index141.js +89 -0
  28. package/dist/index143.js +93 -0
  29. package/dist/index145.js +116 -0
  30. package/dist/index147.js +389 -0
  31. package/dist/index149.js +44 -0
  32. package/dist/index15.js +138 -0
  33. package/dist/index151.js +210 -0
  34. package/dist/index154.js +116 -0
  35. package/dist/index155.js +497 -0
  36. package/dist/index156.js +5524 -0
  37. package/dist/index157.js +93 -0
  38. package/dist/index158.js +863 -0
  39. package/dist/index159.js +40 -0
  40. package/dist/index16.js +318 -0
  41. package/dist/index160.js +282 -0
  42. package/dist/index161.js +152 -0
  43. package/dist/index162.js +1201 -0
  44. package/dist/index163.js +774 -0
  45. package/dist/index164.js +1310 -0
  46. package/dist/index165.js +278 -0
  47. package/dist/index166.js +108 -0
  48. package/dist/index167.js +4 -0
  49. package/dist/index168.js +1378 -0
  50. package/dist/index17.js +25 -0
  51. package/dist/index170.js +20 -0
  52. package/dist/index171.js +20 -0
  53. package/dist/index172.js +20 -0
  54. package/dist/index173.js +20 -0
  55. package/dist/index174.js +27 -0
  56. package/dist/index175.js +761 -0
  57. package/dist/index176.js +831 -0
  58. package/dist/index177.js +1236 -0
  59. package/dist/index178.js +11279 -0
  60. package/dist/index179.js +38 -0
  61. package/dist/index18.js +48 -0
  62. package/dist/index180.js +117 -0
  63. package/dist/index181.js +46 -0
  64. package/dist/index182.js +1192 -0
  65. package/dist/index184.js +5940 -0
  66. package/dist/index185.js +209 -0
  67. package/dist/index186.js +37 -0
  68. package/dist/index187.js +20 -0
  69. package/dist/index188.js +80 -0
  70. package/dist/index189.js +255 -0
  71. package/dist/index19.js +53 -0
  72. package/dist/index190.js +13686 -0
  73. package/dist/index191.js +29 -0
  74. package/dist/index192.js +65 -0
  75. package/dist/index193.js +240 -0
  76. package/dist/index194.js +310 -0
  77. package/dist/index195.js +290 -0
  78. package/dist/index196.js +35 -0
  79. package/dist/index197.js +118 -0
  80. package/dist/index198.js +38 -0
  81. package/dist/index199.js +28 -0
  82. package/dist/index2.js +86 -0
  83. package/dist/index20.js +35 -0
  84. package/dist/index200.js +38 -0
  85. package/dist/index201.js +11 -0
  86. package/dist/index202.js +21 -0
  87. package/dist/index203.js +12 -0
  88. package/dist/index204.js +12 -0
  89. package/dist/index205.js +53 -0
  90. package/dist/index206.js +45 -0
  91. package/dist/index207.js +6 -0
  92. package/dist/index208.js +41 -0
  93. package/dist/index209.js +23 -0
  94. package/dist/index21.js +68 -0
  95. package/dist/index210.js +163 -0
  96. package/dist/index211.js +22 -0
  97. package/dist/index212.js +22 -0
  98. package/dist/index213.js +24 -0
  99. package/dist/index214.js +201 -0
  100. package/dist/index215.js +72 -0
  101. package/dist/index216.js +90 -0
  102. package/dist/index217.js +409 -0
  103. package/dist/index218.js +36 -0
  104. package/dist/index219.js +42 -0
  105. package/dist/index22.js +176 -0
  106. package/dist/index220.js +163 -0
  107. package/dist/index221.js +230 -0
  108. package/dist/index222.js +39 -0
  109. package/dist/index223.js +12 -0
  110. package/dist/index224.js +24 -0
  111. package/dist/index225.js +129 -0
  112. package/dist/index226.js +40 -0
  113. package/dist/index227.js +82 -0
  114. package/dist/index228.js +22 -0
  115. package/dist/index229.js +22 -0
  116. package/dist/index23.js +14 -0
  117. package/dist/index230.js +22 -0
  118. package/dist/index231.js +22 -0
  119. package/dist/index232.js +24 -0
  120. package/dist/index233.js +24 -0
  121. package/dist/index234.js +22 -0
  122. package/dist/index235.js +838 -0
  123. package/dist/index236.js +704 -0
  124. package/dist/index237.js +178 -0
  125. package/dist/index238.js +24 -0
  126. package/dist/index239.js +22 -0
  127. package/dist/index24.js +43 -0
  128. package/dist/index240.js +22 -0
  129. package/dist/index241.js +5 -0
  130. package/dist/index242.js +189 -0
  131. package/dist/index243.js +135 -0
  132. package/dist/index244.js +1225 -0
  133. package/dist/index245.js +22 -0
  134. package/dist/index246.js +24 -0
  135. package/dist/index247.js +24 -0
  136. package/dist/index248.js +31 -0
  137. package/dist/index249.js +22 -0
  138. package/dist/index25.js +123 -0
  139. package/dist/index250.js +22 -0
  140. package/dist/index251.js +4 -0
  141. package/dist/index252.js +4 -0
  142. package/dist/index253.js +3634 -0
  143. package/dist/index254.js +57 -0
  144. package/dist/index255.js +79 -0
  145. package/dist/index256.js +54 -0
  146. package/dist/index257.js +217 -0
  147. package/dist/index258.js +12 -0
  148. package/dist/index259.js +59 -0
  149. package/dist/index26.js +29 -0
  150. package/dist/index260.js +63 -0
  151. package/dist/index261.js +56 -0
  152. package/dist/index262.js +77 -0
  153. package/dist/index263.js +725 -0
  154. package/dist/index264.js +41 -0
  155. package/dist/index265.js +66 -0
  156. package/dist/index266.js +13 -0
  157. package/dist/index267.js +707 -0
  158. package/dist/index268.js +822 -0
  159. package/dist/index269.js +56 -0
  160. package/dist/index27.js +163 -0
  161. package/dist/index270.js +81 -0
  162. package/dist/index271.js +28 -0
  163. package/dist/index272.js +24 -0
  164. package/dist/index273.js +24 -0
  165. package/dist/index274.js +18 -0
  166. package/dist/index275.js +19 -0
  167. package/dist/index276.js +255 -0
  168. package/dist/index277.js +10 -0
  169. package/dist/index278.js +140 -0
  170. package/dist/index279.js +85 -0
  171. package/dist/index28.js +286 -0
  172. package/dist/index280.js +25 -0
  173. package/dist/index281.js +4 -0
  174. package/dist/index282.js +5 -0
  175. package/dist/index283.js +29 -0
  176. package/dist/index284.js +237 -0
  177. package/dist/index285.js +8 -0
  178. package/dist/index286.js +136 -0
  179. package/dist/index287.js +70 -0
  180. package/dist/index288.js +89 -0
  181. package/dist/index289.js +31 -0
  182. package/dist/index29.js +69 -0
  183. package/dist/index290.js +11 -0
  184. package/dist/index291.js +77 -0
  185. package/dist/index292.js +6 -0
  186. package/dist/index293.js +4 -0
  187. package/dist/index294.js +85 -0
  188. package/dist/index295.js +56 -0
  189. package/dist/index296.js +8 -0
  190. package/dist/index297.js +7 -0
  191. package/dist/index298.js +181 -0
  192. package/dist/index299.js +65 -0
  193. package/dist/index3.js +69 -0
  194. package/dist/index30.js +183 -0
  195. package/dist/index300.js +77 -0
  196. package/dist/index301.js +81 -0
  197. package/dist/index302.js +24 -0
  198. package/dist/index303.js +937 -0
  199. package/dist/index304.js +24 -0
  200. package/dist/index305.js +22 -0
  201. package/dist/index306.js +22 -0
  202. package/dist/index307.js +71 -0
  203. package/dist/index308.js +21 -0
  204. package/dist/index309.js +21 -0
  205. package/dist/index31.js +44 -0
  206. package/dist/index310.js +24 -0
  207. package/dist/index311.js +24 -0
  208. package/dist/index312.js +65 -0
  209. package/dist/index313.js +1520 -0
  210. package/dist/index314.js +388 -0
  211. package/dist/index315.js +2733 -0
  212. package/dist/index316.js +88 -0
  213. package/dist/index317.js +3772 -0
  214. package/dist/index318.js +62 -0
  215. package/dist/index319.js +17 -0
  216. package/dist/index32.js +55 -0
  217. package/dist/index320.js +86 -0
  218. package/dist/index321.js +204 -0
  219. package/dist/index322.js +248 -0
  220. package/dist/index323.js +39 -0
  221. package/dist/index324.js +11 -0
  222. package/dist/index325.js +15 -0
  223. package/dist/index326.js +57 -0
  224. package/dist/index327.js +14 -0
  225. package/dist/index328.js +16 -0
  226. package/dist/index329.js +60 -0
  227. package/dist/index33.js +38 -0
  228. package/dist/index330.js +54 -0
  229. package/dist/index331.js +33 -0
  230. package/dist/index332.js +4 -0
  231. package/dist/index333.js +7 -0
  232. package/dist/index334.js +4 -0
  233. package/dist/index335.js +25 -0
  234. package/dist/index336.js +43 -0
  235. package/dist/index337.js +4 -0
  236. package/dist/index338.js +13 -0
  237. package/dist/index339.js +22 -0
  238. package/dist/index34.js +35 -0
  239. package/dist/index340.js +19 -0
  240. package/dist/index341.js +12 -0
  241. package/dist/index342.js +12 -0
  242. package/dist/index343.js +4 -0
  243. package/dist/index344.js +11 -0
  244. package/dist/index345.js +12 -0
  245. package/dist/index346.js +16 -0
  246. package/dist/index347.js +23 -0
  247. package/dist/index348.js +58 -0
  248. package/dist/index349.js +31 -0
  249. package/dist/index35.js +19 -0
  250. package/dist/index350.js +9 -0
  251. package/dist/index351.js +54 -0
  252. package/dist/index352.js +8 -0
  253. package/dist/index353.js +14 -0
  254. package/dist/index354.js +9 -0
  255. package/dist/index355.js +30 -0
  256. package/dist/index356.js +4 -0
  257. package/dist/index357.js +72 -0
  258. package/dist/index358.js +169 -0
  259. package/dist/index359.js +22 -0
  260. package/dist/index36.js +47 -0
  261. package/dist/index360.js +22 -0
  262. package/dist/index361.js +66 -0
  263. package/dist/index362.js +39 -0
  264. package/dist/index363.js +33 -0
  265. package/dist/index364.js +13 -0
  266. package/dist/index365.js +6 -0
  267. package/dist/index366.js +6 -0
  268. package/dist/index367.js +15 -0
  269. package/dist/index368.js +9 -0
  270. package/dist/index369.js +14 -0
  271. package/dist/index37.js +42 -0
  272. package/dist/index370.js +7 -0
  273. package/dist/index371.js +35 -0
  274. package/dist/index372.js +33 -0
  275. package/dist/index373.js +30 -0
  276. package/dist/index374.js +63 -0
  277. package/dist/index375.js +19 -0
  278. package/dist/index376.js +103 -0
  279. package/dist/index377.js +93 -0
  280. package/dist/index378.js +100 -0
  281. package/dist/index379.js +5 -0
  282. package/dist/index38.js +32 -0
  283. package/dist/index380.js +4 -0
  284. package/dist/index381.js +4 -0
  285. package/dist/index382.js +19 -0
  286. package/dist/index383.js +15 -0
  287. package/dist/index384.js +8 -0
  288. package/dist/index385.js +34 -0
  289. package/dist/index39.js +39 -0
  290. package/dist/index4.js +23 -0
  291. package/dist/index40.js +44 -0
  292. package/dist/index41.js +1075 -0
  293. package/dist/index42.js +339 -0
  294. package/dist/index43.js +159 -0
  295. package/dist/index44.js +22 -0
  296. package/dist/index45.js +42 -0
  297. package/dist/index46.js +72 -0
  298. package/dist/index47.js +65 -0
  299. package/dist/index48.js +184 -0
  300. package/dist/index49.js +88 -0
  301. package/dist/index5.js +19 -0
  302. package/dist/index50.js +209 -0
  303. package/dist/index51.js +71 -0
  304. package/dist/index52.js +22 -0
  305. package/dist/index53.js +13 -0
  306. package/dist/index54.js +9 -0
  307. package/dist/index55.js +213 -0
  308. package/dist/index56.js +15 -0
  309. package/dist/index57.js +187 -0
  310. package/dist/index58.js +79 -0
  311. package/dist/index6.js +21 -0
  312. package/dist/index60.js +9 -0
  313. package/dist/index61.js +65 -0
  314. package/dist/index63.js +44 -0
  315. package/dist/index65.js +16 -0
  316. package/dist/index67.js +30 -0
  317. package/dist/index69.js +141 -0
  318. package/dist/index7.js +76 -0
  319. package/dist/index71.js +78 -0
  320. package/dist/index73.js +62 -0
  321. package/dist/index74.js +105 -0
  322. package/dist/index76.js +217 -0
  323. package/dist/index78.js +108 -0
  324. package/dist/index8.js +31 -0
  325. package/dist/index80.js +36 -0
  326. package/dist/index81.js +140 -0
  327. package/dist/index83.js +141 -0
  328. package/dist/index85.js +292 -0
  329. package/dist/index87.js +29 -0
  330. package/dist/index89.js +45 -0
  331. package/dist/index9.js +36 -0
  332. package/dist/index91.js +117 -0
  333. package/dist/index93.js +29 -0
  334. package/dist/index94.js +34 -0
  335. package/dist/index96.js +138 -0
  336. package/dist/index97.js +10 -0
  337. package/dist/index99.js +39 -0
  338. package/dist/src/composables/filtering.d.ts +5 -1
  339. package/dist/src/index.d.ts +1 -0
  340. package/dist/src/views/lists.vue.d.ts +52 -12
  341. package/dist/src/views/showcase.vue.d.ts +130 -30
  342. package/dist/src/views/tables.vue.d.ts +52 -12
  343. package/package.json +3 -4
  344. package/tailwind.preset.ts +1 -0
  345. package/dist/index.umd.cjs +0 -1322
@@ -0,0 +1,277 @@
1
+ import { defineComponent as L, ref as n, computed as a, watch as g, nextTick as i } from "vue";
2
+ import { Multiselect as x } from "./index182.js";
3
+ import { useI18n as P } from "vue-i18n";
4
+ /* empty css */
5
+ import H from "./index6.js";
6
+ const q = L({
7
+ name: "QSelect",
8
+ components: {
9
+ QBadge: H,
10
+ VueMultiselect: x
11
+ },
12
+ props: {
13
+ id: {
14
+ type: String,
15
+ default: ""
16
+ },
17
+ // Options in the select
18
+ options: {
19
+ type: [Array, Object],
20
+ required: !0
21
+ },
22
+ // v-model
23
+ modelValue: {
24
+ type: [String, Number, Array, Object],
25
+ default: ""
26
+ },
27
+ // trackby is for selected value
28
+ // Used to compare objects. Only use if options are objects.
29
+ trackBy: {
30
+ type: String,
31
+ default: "id"
32
+ },
33
+ // Label from option Object, that will be visible in the dropdown.
34
+ label: {
35
+ type: String,
36
+ default: "label"
37
+ },
38
+ // Equivalent to the placeholder attribute on a <select> input.
39
+ placeholder: {
40
+ type: String,
41
+ default: ""
42
+ },
43
+ // In our case, the multiselect acts like the tagging component - https://vue-multiselect.js.org/#sub-tagging
44
+ multiple: {
45
+ type: Boolean,
46
+ default: !1
47
+ },
48
+ taggable: {
49
+ type: Boolean,
50
+ default: !1
51
+ },
52
+ // Add / removes search input.
53
+ searchable: {
54
+ type: Boolean,
55
+ default: !0
56
+ },
57
+ // Defaulting to an empty function - this overrides vue-multiselects default sort
58
+ // customLabel(a, label).length - customLabel(b, label).length
59
+ // which is sorting by the length of the label desc
60
+ filterSortFunction: {
61
+ type: Function,
62
+ default: () => {
63
+ }
64
+ },
65
+ disabled: {
66
+ type: Boolean,
67
+ default: !1
68
+ },
69
+ loading: {
70
+ type: Boolean,
71
+ default: !1
72
+ },
73
+ // Grouping - like optgroups
74
+ // https://vue-multiselect.js.org/#sub-option-groups
75
+ groupValues: {
76
+ type: String,
77
+ default: ""
78
+ },
79
+ groupLabel: {
80
+ type: String,
81
+ default: ""
82
+ },
83
+ // Props for vue-multiselect - deselectGroupLabel, selectGroupLabel, selectLabel
84
+ groupSelectable: {
85
+ type: Boolean,
86
+ default: !0
87
+ },
88
+ // A couple of dropdowns have checkboxes
89
+ hasCheckboxes: {
90
+ type: Boolean,
91
+ default: !1
92
+ },
93
+ size: {
94
+ type: String,
95
+ default: "lg"
96
+ },
97
+ // TODO: Document what this is for when I realize what it is used for
98
+ info: {
99
+ type: String,
100
+ default: ""
101
+ },
102
+ // NEW - Allows to remove all selected values. Otherwise one must be left selected.
103
+ allowEmpty: {
104
+ type: Boolean,
105
+ default: !0
106
+ },
107
+ // Array of keyboard key aliases to block when selecting ex ['Tab', 'Enter', 'Delete']
108
+ blockKeys: {
109
+ type: Array,
110
+ default: () => ["Delete"]
111
+ },
112
+ // We could make this a slot like optionPrefix
113
+ noResultMessage: {
114
+ type: String,
115
+ default: ""
116
+ },
117
+ // Message to show when options array is empty
118
+ noOptionsMessage: {
119
+ type: String,
120
+ default: ""
121
+ },
122
+ // Selection control for mobile
123
+ selectionControl: {
124
+ type: Boolean,
125
+ default: !1
126
+ },
127
+ showExpanded: {
128
+ type: Boolean,
129
+ default: !1
130
+ },
131
+ showPlaceholderImage: {
132
+ type: Boolean,
133
+ default: !0
134
+ },
135
+ // Use this with multiple = true
136
+ showSelectAll: {
137
+ type: Boolean,
138
+ default: !1
139
+ },
140
+ // Helpful text for user to know how to add a new option
141
+ tagPlaceholder: {
142
+ type: String,
143
+ default: ""
144
+ },
145
+ // Expands the field to see all selected options
146
+ expand: {
147
+ type: Boolean,
148
+ default: !1
149
+ },
150
+ // Shows the selected count
151
+ showSelectedCount: {
152
+ type: Boolean,
153
+ default: !1
154
+ },
155
+ // Send email report and schedule report have email dropdowns with name & email. In those use cases, the selected value needs to be truncated.
156
+ truncateTag: {
157
+ type: Boolean,
158
+ default: !1
159
+ },
160
+ // Limit of options shown to the user - refer to receipents and week frequency example
161
+ limitShown: {
162
+ type: Number,
163
+ default: null
164
+ },
165
+ // Ability to pass in a function if we need validation for tags (example: email needs to check if it's a valid email before adding it to the list of options)
166
+ validationMethod: {
167
+ type: Function,
168
+ default: () => !0
169
+ },
170
+ // Show descriptions as part of the options (on right).
171
+ showOptionDescription: {
172
+ type: Boolean,
173
+ default: !1
174
+ },
175
+ // There are use cases where we do not want taggable true, because taggable allows for adding values to the list of options. There are scenarios where design wants the tag styling in some places but then not in others
176
+ showTags: {
177
+ type: Boolean,
178
+ default: !1
179
+ },
180
+ // Open direction of the options. Default to below.
181
+ openDirection: {
182
+ type: String,
183
+ default: "bottom"
184
+ },
185
+ // Use this with taggable = false, multiple = false, showTags = false to allow for adding options without tags.
186
+ useAddTagsOnly: {
187
+ type: Boolean,
188
+ default: !1
189
+ },
190
+ clearOnSelect: {
191
+ type: Boolean,
192
+ default: !1
193
+ },
194
+ closeOnSelect: {
195
+ type: Boolean,
196
+ default: !1
197
+ }
198
+ },
199
+ emits: ["update:model-value"],
200
+ setup(l, { slots: v, emit: o }) {
201
+ const { t: s } = P(), r = n(null), f = n(null), t = n(l.modelValue), p = n(""), c = n(!1), d = n([]), y = a(() => Array.isArray(l.options) ? l.options.length : 0), h = a(() => !!v.action), m = a(() => l.noResultMessage || s("HC_PRESS_ENTER_TO_CREATE_A_TAG")), S = a(() => l.tagPlaceholder || s("HC_PRESS_ENTER_TO_CREATE_A_TAG")), b = a(() => l.noOptionsMessage || s("HC_LIST_IS_EMPTY")), B = a(() => y.value === t.value.length ? s("HC_ALL") : t.value.length > 1 ? s("HC_MULTIPLE_SELECTED") : t.value[0].label || t.value[0].name || ""), _ = a(() => l.taggable || l.showTags), T = a(() => !!(l.groupValues && l.groupLabel && l.groupSelectable)), E = (e) => {
202
+ o("update:model-value", e);
203
+ }, A = (e) => {
204
+ p.value = e;
205
+ }, O = async (e) => {
206
+ const u = {
207
+ label: e,
208
+ name: e,
209
+ added: !0
210
+ // maybe change this to class - I am going to use this for external emails
211
+ };
212
+ if (!l.validationMethod(u)) {
213
+ await i(), r.value.search = e;
214
+ return;
215
+ }
216
+ d.value.push(u), t.value.push(u);
217
+ }, C = () => {
218
+ t.value = [], o("update:model-value", t.value);
219
+ }, w = (e) => {
220
+ typeof e == "number" && e >= 0 ? t.value.splice(e, 1) : t.value = [], i(() => {
221
+ o("update:model-value", t.value);
222
+ });
223
+ }, M = (e) => {
224
+ l.multiple && t.value && e.length === t.value.length && i(() => {
225
+ t.value = [], o("update:model-value", t.value);
226
+ });
227
+ }, R = async () => {
228
+ if (c.value || (c.value = !0, d.value = l.options), f.value && l.searchable) {
229
+ await i();
230
+ const e = f.value.querySelector(
231
+ ".multiselect__content-wrapper"
232
+ ), u = f.value.querySelector(
233
+ ".multiselect__input"
234
+ );
235
+ u.style.width = e.clientWidth + "px";
236
+ }
237
+ }, V = async () => {
238
+ if (!r.value)
239
+ return;
240
+ const e = r.value;
241
+ t.value = [], l.groupValues ? e.filteredOptions.forEach((u) => {
242
+ t.value.push(u);
243
+ }) : t.value = e.filteredOptions, o("update:model-value", t.value);
244
+ };
245
+ return g(() => l.modelValue, (e) => {
246
+ t.value = e;
247
+ }), g(() => l.options, (e) => {
248
+ c.value && (d.value = e);
249
+ }), {
250
+ currentSelect: r,
251
+ search: p,
252
+ selected: t,
253
+ isOpened: c,
254
+ internalOptions: d,
255
+ // computed
256
+ hasAction: h,
257
+ noResultsText: m,
258
+ noOptionsText: b,
259
+ noTagFound: S,
260
+ selectedCount: y,
261
+ selectedText: B,
262
+ useTags: _,
263
+ enableGroupSelect: T,
264
+ addTag: O,
265
+ clearAll: C,
266
+ onOpen: R,
267
+ onRemove: M,
268
+ onUpdateValue: E,
269
+ removeElement: w,
270
+ searchChange: A,
271
+ selectAll: V
272
+ };
273
+ }
274
+ });
275
+ export {
276
+ q as default
277
+ };
@@ -0,0 +1,350 @@
1
+ import { defineComponent as te, ref as n, computed as w, onMounted as le, onUnmounted as oe, h as D, render as H } from "vue";
2
+ import se from "./index184.js";
3
+ import re from "./index185.js";
4
+ import ae from "./index186.js";
5
+ import ne from "./index187.js";
6
+ import ce from "./index6.js";
7
+ import ie from "./index47.js";
8
+ import N from "./index26.js";
9
+ import ue from "./index167.js";
10
+ import de from "./index52.js";
11
+ import fe from "./index53.js";
12
+ import { filterData as ve } from "./index51.js";
13
+ import { useDebounceFn as he } from "./index166.js";
14
+ const ke = te({
15
+ name: "QTable",
16
+ components: {
17
+ Column: re,
18
+ ColumnGroup: ae,
19
+ DataTable: se,
20
+ Row: ne,
21
+ QBadge: ce,
22
+ QTooltip: ie
23
+ },
24
+ props: {
25
+ // Pass in an ID unique to the table.
26
+ id: {
27
+ type: String,
28
+ default: ""
29
+ },
30
+ // Pass in data for the table using v-model - this replaces tableData.
31
+ modelValue: {
32
+ type: Array,
33
+ default: () => []
34
+ },
35
+ // Pass in the columns for the table.
36
+ columns: {
37
+ type: Array,
38
+ default: () => []
39
+ },
40
+ // Pass in whether to show the search field.
41
+ hasSearch: {
42
+ type: Boolean,
43
+ default: !0
44
+ },
45
+ // Pass in a default sort.
46
+ // TODO: This is not set up with PrimeVue DataTable yet. No default sort.
47
+ sortBy: {
48
+ type: String,
49
+ default: ""
50
+ },
51
+ // Pass in the items per page to display.
52
+ // TODO: This is for pagination and/or infinite scroll, to be implemented later.
53
+ itemsPerPage: {
54
+ type: Number,
55
+ default: 20
56
+ },
57
+ // Pass in the currently displayed page.
58
+ // TODO: This is for pagination and/or infinite scroll, to be implemented later.
59
+ currentPage: {
60
+ type: Number,
61
+ default: 1
62
+ },
63
+ // Pass in a search field placeholder. Fallback is localized "Search" in template.
64
+ searchPlaceholder: {
65
+ type: String,
66
+ default: ""
67
+ },
68
+ // Pass in the filters for the table.
69
+ filters: {
70
+ type: Object,
71
+ default: () => ({})
72
+ },
73
+ // Pass in a function for when filters icon is clicked.
74
+ filtersAction: {
75
+ type: Function,
76
+ default: () => {
77
+ }
78
+ },
79
+ // Pass in a count of active filters.
80
+ filtersCount: {
81
+ type: Number,
82
+ default: 0
83
+ },
84
+ // Pass in an array of attribute names to globally search.
85
+ globalFilters: {
86
+ type: Array,
87
+ default: () => []
88
+ },
89
+ // Pass in a loading state.
90
+ loading: {
91
+ type: Boolean,
92
+ default: !1
93
+ },
94
+ // Pass in if table is multi-sort. We won't use this initially.
95
+ isMultiSort: {
96
+ type: Boolean,
97
+ default: !1
98
+ },
99
+ // Pass in if table is multi-select.
100
+ isMultiSelect: {
101
+ type: Boolean,
102
+ default: !1
103
+ },
104
+ // Pass in a function to handle when a row is selected.
105
+ rowSelect: {
106
+ type: Function,
107
+ default: () => {
108
+ }
109
+ },
110
+ // Pass in a function to handle when a row is unselected.
111
+ rowUnselect: {
112
+ type: Function,
113
+ default: () => {
114
+ }
115
+ },
116
+ // Pass in the height of combined fixed elements while vertical scrolling.
117
+ fixedTopOffset: {
118
+ type: Number,
119
+ default: 0
120
+ },
121
+ // Pass in the number of skeleton rows that should show while loading.
122
+ skeletonRows: {
123
+ type: Number,
124
+ default: 6
125
+ },
126
+ // Pass in the scroll amount for the left scroll button.
127
+ leftScrollAmount: {
128
+ type: Number,
129
+ default: 200
130
+ },
131
+ // Pass in the scroll amount for the right scroll button.
132
+ rightScrollAmount: {
133
+ type: Number,
134
+ default: 200
135
+ },
136
+ // If set to true we do not use the built in frozen prop for primevue table
137
+ // instead we set our own sticky columns. Initially only supporting first and last
138
+ overrideFrozen: {
139
+ type: Boolean,
140
+ default: !1
141
+ },
142
+ // Pass in the debounce time for the search field.
143
+ searchDelay: {
144
+ type: Number,
145
+ default: 300
146
+ }
147
+ },
148
+ emits: ["is-empty"],
149
+ setup(s, { emit: P }) {
150
+ const { deviceType: T } = fe(), k = n(), c = n(!1), d = n(!1), h = n(!1), L = n(!1), m = n(!1), y = n(!0), F = n(ue), t = n(), A = n(""), O = n([]), a = n(), Q = n(0), U = w(() => ve(
151
+ s.modelValue,
152
+ A.value,
153
+ s.filters,
154
+ void 0,
155
+ // sortBy handled by PrimeVue
156
+ void 0,
157
+ // orderBy handled by PrimeVue
158
+ []
159
+ )), q = w(() => T.value === "desktop"), I = w(() => {
160
+ const e = !s.loading && k.value?.empty;
161
+ return P("is-empty", e), e;
162
+ }), V = w(() => {
163
+ const e = [], l = {};
164
+ let o = 0;
165
+ return s.columns.forEach((r) => {
166
+ l[r.key] = "";
167
+ }), [...Array(s.skeletonRows)].forEach(() => {
168
+ e.push({
169
+ ...l,
170
+ shimmer: o % 2 ? "bg-gray-10" : "bg-gray-30"
171
+ }), o++;
172
+ }), e;
173
+ }), p = () => {
174
+ x(), R(), B(), b(), v();
175
+ }, j = (e) => {
176
+ s.rowSelect(e);
177
+ }, G = (e) => {
178
+ s.rowUnselect(e);
179
+ }, B = () => {
180
+ const e = a.value.offsetTop - s.fixedTopOffset, l = document.querySelector('div[data-pc-section="header"]'), o = t.value?.querySelector("thead");
181
+ if (d.value = !!s.fixedTopOffset && a.value && window.scrollY >= e, d.value)
182
+ if (l.style.top = s.fixedTopOffset + "px", c.value)
183
+ o.style.top = "";
184
+ else {
185
+ const r = s.fixedTopOffset + l.clientHeight + 1;
186
+ o.style.top = r + "px";
187
+ }
188
+ else
189
+ l.style.top = "", o.style.top = "";
190
+ if (d.value && c.value) {
191
+ const r = document.querySelector(
192
+ 'div[data-pc-section="header"] > div[data-pc-section="wrapper"]'
193
+ );
194
+ r?.querySelectorAll("th")?.forEach((u, i) => {
195
+ const f = t.value?.querySelector(
196
+ `th:nth-child(${i + 1})`
197
+ ), S = f?.getAttribute("aria-sort");
198
+ u?.setAttribute("aria-sort", S), u.classList.contains("actions") && (u.style.minWidth = f?.clientWidth + "px");
199
+ }), r && (r.scrollLeft = t.value.scrollLeft);
200
+ }
201
+ R(), b(), v();
202
+ }, b = () => {
203
+ const l = t.value.scrollWidth - t.value.clientWidth;
204
+ y.value = Math.abs(t.value.scrollLeft) <= 1, m.value = Math.abs(t.value.scrollLeft - l) <= 1;
205
+ }, Y = () => {
206
+ x(), h.value = !1, L.value = !1, s.columns.forEach((e, l) => {
207
+ e.frozen && (h.value || (h.value = !0), a.value.querySelectorAll(`th:nth-child(${l + 1}), td:nth-child(${l + 1})`).forEach(
208
+ (o) => {
209
+ o.classList.add("sticky"), l === 0 ? o.classList.add("left-0") : l === s.columns.length - 1 && e.frozen && (o.classList.add("right-0"), L.value = !0);
210
+ }
211
+ ));
212
+ });
213
+ }, J = () => {
214
+ const e = t.value?.cloneNode(!0);
215
+ if (e) {
216
+ const l = document.querySelector('div[data-pc-section="header"]');
217
+ l?.append(e);
218
+ const o = l?.querySelector('div[data-pc-section="wrapper"]');
219
+ o?.querySelector("tbody")?.remove(), o?.addEventListener("scroll", () => {
220
+ t.value.scrollLeft = o.scrollLeft, b(), v();
221
+ }), t.value?.addEventListener("scroll", () => {
222
+ o.scrollLeft = t.value.scrollLeft, b(), t.value?.setAttribute("data-scroll", t.value.scrollLeft.toString()), v();
223
+ }), o?.querySelectorAll("th")?.forEach((r, u) => {
224
+ r?.addEventListener("click", async () => {
225
+ if (d.value && c.value) {
226
+ const i = t.value?.querySelector(`th:nth-child(${u + 1})`);
227
+ await i?.click();
228
+ const f = i?.getAttribute("aria-sort");
229
+ r?.setAttribute("aria-sort", f);
230
+ }
231
+ });
232
+ });
233
+ }
234
+ }, x = () => {
235
+ t.value.scrollWidth > t.value.clientWidth ? (c.value = !0, t.value?.classList.add("is-scrolled")) : (c.value = !1, t.value?.classList.remove("is-scrolled")), t.value && t.value.setAttribute("data-scroll", t.value.scrollLeft.toString());
236
+ }, R = () => {
237
+ const e = t.value.clientWidth + "px", l = document.querySelector('div[data-pc-section="header"]'), o = l.querySelector('div[data-pc-section="wrapper"] thead');
238
+ l.style.width = e, t.value.querySelector("thead").style.width = e, o && (o.style.width = e);
239
+ }, C = () => {
240
+ if (t.value) {
241
+ const e = -Math.min(
242
+ s.leftScrollAmount,
243
+ t.value.scrollLeft
244
+ ), l = d.value ? "instant" : "smooth";
245
+ t.value.scrollBy({
246
+ left: e,
247
+ behavior: l
248
+ });
249
+ }
250
+ }, W = () => {
251
+ if (t.value) {
252
+ const e = t.value.scrollWidth - t.value.clientWidth, l = Math.min(
253
+ s.rightScrollAmount,
254
+ e - t.value.scrollLeft
255
+ ), o = d.value ? "instant" : "smooth";
256
+ t.value.scrollBy({
257
+ left: l,
258
+ behavior: o
259
+ });
260
+ }
261
+ }, $ = () => {
262
+ if (c.value || !q.value) {
263
+ const e = y.value ? "hidden" : "", l = m.value ? "hidden" : "";
264
+ a.value?.insertAdjacentHTML(
265
+ "beforeend",
266
+ `<button type="button" class="q-table-scroll-button scroll-button scroll-left ${e}"></button>
267
+ <button type="button" class="q-table-scroll-button scroll-button scroll-right ${l}"></button>`
268
+ );
269
+ const o = D(N, {
270
+ icon: "chevron-left",
271
+ type: "",
272
+ size: "md",
273
+ class: "p-[0.1875rem]"
274
+ }), r = D(N, {
275
+ icon: "chevron-right",
276
+ type: "",
277
+ size: "md",
278
+ class: "p-[0.1875rem]"
279
+ }), u = a.value?.querySelector(".scroll-button.scroll-left"), i = a.value?.querySelector(".scroll-button.scroll-right");
280
+ H(o, u), H(r, i), u?.addEventListener("click", C), i?.addEventListener("click", W), v();
281
+ }
282
+ }, K = () => {
283
+ a.value?.querySelectorAll(".scroll-button")?.forEach((e) => {
284
+ e.remove();
285
+ });
286
+ }, v = () => {
287
+ const e = a.value?.querySelector(".scroll-button.scroll-left"), l = a.value?.querySelector(".scroll-button.scroll-right"), o = t.value?.querySelector("td.sticky:first-child"), r = a.value?.getBoundingClientRect(), i = document.querySelector('div[data-pc-section="header"]')?.getBoundingClientRect().height || 0, f = t.value;
288
+ if (a.value && r && f) {
289
+ const S = o?.getBoundingClientRect().width || 0;
290
+ a.value.style.setProperty("--first-sticky-width", `${S}px`);
291
+ const M = f.getBoundingClientRect(), g = Math.max(M.top, i), E = Math.min(M.bottom, window.innerHeight), Z = g < window.innerHeight && E > i, _ = E - g, ee = g + _ / 2;
292
+ if (e && l)
293
+ if (Z && c.value) {
294
+ e.classList.remove("hidden"), l.classList.remove("hidden");
295
+ const z = Math.max(
296
+ g,
297
+ Math.min(ee, E - e.offsetHeight)
298
+ );
299
+ e.style.top = `${z}px`, l.style.top = `${z}px`, e.style.left = `${r.left + S + 8}px`, l.style.right = `${window.innerWidth - r.right + 8}px`;
300
+ } else
301
+ e.classList.add("hidden"), l.classList.add("hidden");
302
+ e && (y.value || !c.value ? e.classList.add("hidden") : e.classList.remove("hidden")), l && (m.value || !c.value ? l.classList.add("hidden") : l.classList.remove("hidden"));
303
+ }
304
+ }, X = he((e) => {
305
+ A.value = e;
306
+ }, s.searchDelay);
307
+ return le(() => {
308
+ t.value = document.querySelector('div[data-pc-section="wrapper"]'), p(), window.addEventListener("resize", p), window.addEventListener("scroll", B), J(), q.value || $();
309
+ }), oe(() => {
310
+ window.removeEventListener("resize", p), window.removeEventListener("scroll", B);
311
+ }), {
312
+ // Refs
313
+ dataTableRef: k,
314
+ horizontalScroll: c,
315
+ isFixed: d,
316
+ isSticky: h,
317
+ isLastCellSticky: L,
318
+ isScrolledToEnd: m,
319
+ isScrolledToStart: y,
320
+ noResultsPath: F,
321
+ scrollableElement: t,
322
+ scrollLeft: C,
323
+ scrollRight: W,
324
+ search: A,
325
+ selectedRows: O,
326
+ tableContainer: a,
327
+ tableHeight: Q,
328
+ // Computed
329
+ isDesktop: q,
330
+ isEmpty: I,
331
+ skeletonData: V,
332
+ filteredData: U,
333
+ // Methods
334
+ // determineFixed,
335
+ addScrollButtons: $,
336
+ onPageResizeOrLoad: p,
337
+ onSelectRow: j,
338
+ onUnselectRow: G,
339
+ removeScrollButtons: K,
340
+ setSticky: Y,
341
+ // Composable
342
+ mq: de,
343
+ deviceType: T,
344
+ debouncedSearch: X
345
+ };
346
+ }
347
+ });
348
+ export {
349
+ ke as default
350
+ };
@@ -0,0 +1,31 @@
1
+ import { defineComponent as e } from "vue";
2
+ const r = e({
3
+ name: "QTag",
4
+ components: {},
5
+ props: {
6
+ tagClass: {
7
+ type: String,
8
+ default: ""
9
+ },
10
+ bgColor: {
11
+ type: String,
12
+ default: "bg-green-0"
13
+ },
14
+ textColor: {
15
+ type: String,
16
+ default: "text-green-20"
17
+ },
18
+ shape: {
19
+ type: String,
20
+ default: "square"
21
+ }
22
+ },
23
+ setup(n, { slots: t }) {
24
+ return {
25
+ hasIcon: !!t.icon
26
+ };
27
+ }
28
+ });
29
+ export {
30
+ r as default
31
+ };