kaui 3.0.9 → 4.0.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 (259) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/kaui/account/authorize.svg +4 -0
  3. data/app/assets/images/kaui/account/credit.svg +4 -0
  4. data/app/assets/images/kaui/account/down-arrow.svg +3 -0
  5. data/app/assets/images/kaui/account/edit.svg +4 -0
  6. data/app/assets/images/kaui/account/pay-all.svg +5 -0
  7. data/app/assets/images/kaui/account/plus.svg +3 -0
  8. data/app/assets/images/kaui/account/purchase.svg +5 -0
  9. data/app/assets/images/kaui/account/refresh.svg +5 -0
  10. data/app/assets/images/kaui/arrow.svg +3 -0
  11. data/app/assets/images/kaui/card.svg +5 -0
  12. data/app/assets/images/kaui/copy.svg +12 -0
  13. data/app/assets/images/kaui/dashboard/aviate.svg +6 -0
  14. data/app/assets/images/kaui/dashboard/custom-field.svg +5 -0
  15. data/app/assets/images/kaui/dashboard/kaui-doc-img.png +0 -0
  16. data/app/assets/images/kaui/dashboard/plugins.svg +7 -0
  17. data/app/assets/images/kaui/dashboard/tags.svg +4 -0
  18. data/app/assets/images/kaui/dashboard/users.svg +6 -0
  19. data/app/assets/images/kaui/delete.svg +6 -0
  20. data/app/assets/images/kaui/dots.svg +5 -0
  21. data/app/assets/images/kaui/download-csv.svg +5 -0
  22. data/app/assets/images/kaui/download.svg +4 -0
  23. data/app/assets/images/kaui/eye-off.svg +9 -0
  24. data/app/assets/images/kaui/eye.svg +7 -0
  25. data/app/assets/images/kaui/file-upload.svg +34 -0
  26. data/app/assets/images/kaui/generate.svg +5 -0
  27. data/app/assets/images/kaui/header/account.svg +4 -0
  28. data/app/assets/images/kaui/header/cog_icon.svg +4 -0
  29. data/app/assets/images/kaui/header/invoice.svg +5 -0
  30. data/app/assets/images/kaui/header/payment.svg +5 -0
  31. data/app/assets/images/kaui/header/search_icon.svg +4 -0
  32. data/app/assets/images/kaui/header/subscription.svg +6 -0
  33. data/app/assets/images/kaui/logout.svg +4 -0
  34. data/app/assets/images/kaui/modal/close.svg +3 -0
  35. data/app/assets/images/kaui/modal/plus.svg +3 -0
  36. data/app/assets/images/kaui/modal/red-close.svg +10 -0
  37. data/app/assets/images/kaui/modal/search.svg +4 -0
  38. data/app/assets/images/kaui/payment/payment.svg +4 -0
  39. data/app/assets/images/kaui/payment/refund.svg +4 -0
  40. data/app/assets/images/kaui/plus.svg +3 -0
  41. data/app/assets/images/kaui/search.svg +4 -0
  42. data/app/assets/images/kaui/setting/account.svg +10 -0
  43. data/app/assets/images/kaui/setting/analytics.svg +7 -0
  44. data/app/assets/images/kaui/setting/custom-field.svg +5 -0
  45. data/app/assets/images/kaui/setting/e-notifications.svg +6 -0
  46. data/app/assets/images/kaui/setting/plugins.svg +7 -0
  47. data/app/assets/images/kaui/setting/plus.svg +3 -0
  48. data/app/assets/images/kaui/setting/reset.svg +4 -0
  49. data/app/assets/images/kaui/setting/tag-definitions.svg +5 -0
  50. data/app/assets/images/kaui/setting/tags.svg +4 -0
  51. data/app/assets/images/kaui/setting/tenants.svg +6 -0
  52. data/app/assets/images/kaui/setting/users.svg +6 -0
  53. data/app/assets/images/kaui/setting.svg +4 -0
  54. data/app/assets/images/kaui/sidebar/account.svg +4 -0
  55. data/app/assets/images/kaui/sidebar/audit.svg +5 -0
  56. data/app/assets/images/kaui/sidebar/custom-fields.svg +5 -0
  57. data/app/assets/images/kaui/sidebar/invoices.svg +5 -0
  58. data/app/assets/images/kaui/sidebar/payments.svg +5 -0
  59. data/app/assets/images/kaui/sidebar/queues.svg +5 -0
  60. data/app/assets/images/kaui/sidebar/subscriptions.svg +6 -0
  61. data/app/assets/images/kaui/sidebar/tags.svg +5 -0
  62. data/app/assets/images/kaui/sidebar/timeline.svg +5 -0
  63. data/app/assets/images/kaui/sign_in_background.svg +57 -0
  64. data/app/assets/images/kaui/sort-down.svg +3 -0
  65. data/app/assets/images/kaui/sort-up.svg +3 -0
  66. data/app/assets/images/kaui/subscription/add-on.svg +7 -0
  67. data/app/assets/images/kaui/subscription/cancel.svg +6 -0
  68. data/app/assets/images/kaui/subscription/change.svg +6 -0
  69. data/app/assets/images/kaui/subscription/date.svg +6 -0
  70. data/app/assets/images/kaui/subscription/pause.svg +4 -0
  71. data/app/assets/images/kaui/timeline/authorize.svg +5 -0
  72. data/app/assets/images/kaui/timeline/capture.svg +5 -0
  73. data/app/assets/images/kaui/timeline/chargeback.svg +3 -0
  74. data/app/assets/images/kaui/timeline/credit.svg +6 -0
  75. data/app/assets/images/kaui/timeline/invoice.svg +5 -0
  76. data/app/assets/images/kaui/timeline/purchase.svg +5 -0
  77. data/app/assets/images/kaui/timeline/refund.svg +4 -0
  78. data/app/assets/images/kaui/timeline/void.svg +4 -0
  79. data/app/assets/images/kaui/view-doc.svg +6 -0
  80. data/app/assets/images/kaui/warning.png +0 -0
  81. data/app/assets/javascripts/application.js +2 -2
  82. data/app/assets/javascripts/kaui/kaui_override.js +232 -0
  83. data/app/assets/javascripts/kaui/multi_functions_bar_utils.js +125 -24
  84. data/app/assets/stylesheets/application.css +13 -1
  85. data/app/assets/stylesheets/kaui/account.css +2028 -14
  86. data/app/assets/stylesheets/kaui/account_timeline.css +183 -0
  87. data/app/assets/stylesheets/kaui/admin_allowed_users.css +260 -0
  88. data/app/assets/stylesheets/kaui/audit.css +26 -16
  89. data/app/assets/stylesheets/kaui/audit_logs.css +443 -0
  90. data/app/assets/stylesheets/kaui/auth_pages.css +72 -0
  91. data/app/assets/stylesheets/kaui/breadcrumb.css +38 -0
  92. data/app/assets/stylesheets/kaui/chargebacks.css +118 -0
  93. data/app/assets/stylesheets/kaui/clock.css +103 -0
  94. data/app/assets/stylesheets/kaui/common.css +1744 -401
  95. data/app/assets/stylesheets/kaui/custom_fields.css +546 -0
  96. data/app/assets/stylesheets/kaui/dashboard.css +26 -0
  97. data/app/assets/stylesheets/kaui/datatable.css +114 -56
  98. data/app/assets/stylesheets/kaui/header.css +221 -114
  99. data/app/assets/stylesheets/kaui/home.css +89 -62
  100. data/app/assets/stylesheets/kaui/invoice.css +1061 -27
  101. data/app/assets/stylesheets/kaui/kaui.css +217 -145
  102. data/app/assets/stylesheets/kaui/overdue.css +5 -3
  103. data/app/assets/stylesheets/kaui/payment.css +1102 -13
  104. data/app/assets/stylesheets/kaui/queues.css +269 -0
  105. data/app/assets/stylesheets/kaui/refunds.css +185 -0
  106. data/app/assets/stylesheets/kaui/role_definitions.css +111 -0
  107. data/app/assets/stylesheets/kaui/sidebar.css +122 -0
  108. data/app/assets/stylesheets/kaui/subscription.css +677 -0
  109. data/app/assets/stylesheets/kaui/tag_definitions.css +524 -0
  110. data/app/assets/stylesheets/kaui/tags.css +592 -121
  111. data/app/assets/stylesheets/kaui/tenants.css +1478 -0
  112. data/app/assets/stylesheets/kaui/tooltip.css +9 -5
  113. data/app/assets/stylesheets/kaui/wallets.css +121 -0
  114. data/app/controllers/kaui/accounts_controller.rb +3 -2
  115. data/app/controllers/kaui/admin_tenants_controller.rb +33 -0
  116. data/app/controllers/kaui/custom_fields_controller.rb +1 -1
  117. data/app/controllers/kaui/engine_controller.rb +1 -2
  118. data/app/controllers/kaui/engine_controller_util.rb +5 -7
  119. data/app/controllers/kaui/home_controller.rb +24 -17
  120. data/app/controllers/kaui/invoices_controller.rb +4 -15
  121. data/app/controllers/kaui/payments_controller.rb +1 -1
  122. data/app/controllers/kaui/sessions_controller.rb +1 -0
  123. data/app/controllers/kaui/tag_definitions_controller.rb +1 -0
  124. data/app/helpers/kaui/account_helper.rb +13 -0
  125. data/app/helpers/kaui/plugin_helper.rb +27 -0
  126. data/app/views/kaui/account_custom_fields/index.html.erb +95 -29
  127. data/app/views/kaui/account_emails/_account_emails_table.html.erb +13 -3
  128. data/app/views/kaui/account_emails/_form.html.erb +23 -6
  129. data/app/views/kaui/account_emails/new.html.erb +12 -6
  130. data/app/views/kaui/account_tags/_form_bar.html.erb +10 -1
  131. data/app/views/kaui/account_tags/index.html.erb +103 -24
  132. data/app/views/kaui/account_timelines/_multi_functions_bar.html.erb +302 -69
  133. data/app/views/kaui/account_timelines/show.html.erb +360 -254
  134. data/app/views/kaui/accounts/_account_details.html.erb +165 -0
  135. data/app/views/kaui/accounts/_account_filterbar.html.erb +70 -80
  136. data/app/views/kaui/accounts/_add_parent.html.erb +26 -0
  137. data/app/views/kaui/accounts/_billing_details.html.erb +196 -0
  138. data/app/views/kaui/accounts/_close_account_modal.html.erb +62 -40
  139. data/app/views/kaui/accounts/_form_account.html.erb +157 -0
  140. data/app/views/kaui/accounts/_functions_bar.html.erb +606 -0
  141. data/app/views/kaui/accounts/_link_parent_modal.html.erb +1 -1
  142. data/app/views/kaui/accounts/_link_parent_to_modal.html.erb +62 -0
  143. data/app/views/kaui/accounts/_multi_functions_bar.html.erb +67 -28
  144. data/app/views/kaui/accounts/_payment_gateways.html.erb +43 -0
  145. data/app/views/kaui/accounts/_personal_details.html.erb +67 -0
  146. data/app/views/kaui/accounts/edit.html.erb +15 -9
  147. data/app/views/kaui/accounts/index.html.erb +77 -27
  148. data/app/views/kaui/accounts/new.html.erb +14 -8
  149. data/app/views/kaui/accounts/show.html.erb +17 -11
  150. data/app/views/kaui/admin/index.html.erb +44 -19
  151. data/app/views/kaui/admin_allowed_users/_form.html.erb +123 -31
  152. data/app/views/kaui/admin_allowed_users/edit.html.erb +15 -9
  153. data/app/views/kaui/admin_allowed_users/index.html.erb +150 -30
  154. data/app/views/kaui/admin_allowed_users/new.html.erb +14 -8
  155. data/app/views/kaui/admin_allowed_users/show.html.erb +137 -32
  156. data/app/views/kaui/admin_tenants/_add_allowed_user_modal.html.erb +42 -15
  157. data/app/views/kaui/admin_tenants/_clock.html.erb +72 -0
  158. data/app/views/kaui/admin_tenants/_form.html.erb +32 -20
  159. data/app/views/kaui/admin_tenants/_form_catalog_translation.erb +21 -8
  160. data/app/views/kaui/admin_tenants/_form_invoice_template.erb +25 -9
  161. data/app/views/kaui/admin_tenants/_form_invoice_translation.erb +36 -20
  162. data/app/views/kaui/admin_tenants/_form_plugin_config.erb +16 -20
  163. data/app/views/kaui/admin_tenants/_show_catalog.erb +13 -6
  164. data/app/views/kaui/admin_tenants/_show_catalog_simple.erb +95 -46
  165. data/app/views/kaui/admin_tenants/_show_catalog_xml.erb +62 -37
  166. data/app/views/kaui/admin_tenants/_show_overdue.erb +91 -75
  167. data/app/views/kaui/admin_tenants/_tenant_details.html.erb +106 -17
  168. data/app/views/kaui/admin_tenants/_tenants_table.html.erb +67 -6
  169. data/app/views/kaui/admin_tenants/_useful_links.html.erb +21 -16
  170. data/app/views/kaui/admin_tenants/index.html.erb +35 -11
  171. data/app/views/kaui/admin_tenants/index.js.erb +3 -0
  172. data/app/views/kaui/admin_tenants/new.html.erb +19 -13
  173. data/app/views/kaui/admin_tenants/new_catalog.html.erb +230 -98
  174. data/app/views/kaui/admin_tenants/new_overdue_config.html.erb +152 -80
  175. data/app/views/kaui/admin_tenants/new_plan_currency.html.erb +44 -30
  176. data/app/views/kaui/admin_tenants/show.html.erb +211 -78
  177. data/app/views/kaui/admin_tenants/show.js.erb +3 -0
  178. data/app/views/kaui/audit_logs/_multi_functions_bar.html.erb +298 -101
  179. data/app/views/kaui/audit_logs/index.html.erb +137 -38
  180. data/app/views/kaui/bundle_tags/_form_bar.html.erb +11 -4
  181. data/app/views/kaui/bundles/_bundle_details.html.erb +24 -12
  182. data/app/views/kaui/bundles/index.html.erb +79 -104
  183. data/app/views/kaui/bundles/pause_resume.html.erb +73 -38
  184. data/app/views/kaui/chargebacks/_form.html.erb +35 -18
  185. data/app/views/kaui/chargebacks/new.html.erb +16 -9
  186. data/app/views/kaui/charges/_form.html.erb +54 -42
  187. data/app/views/kaui/charges/new.html.erb +15 -8
  188. data/app/views/kaui/components/breadcrumb/_breadcrumb.html.erb +146 -0
  189. data/app/views/kaui/components/button/_button.html.erb +16 -0
  190. data/app/views/kaui/components/dashboard/_card.html.erb +15 -0
  191. data/app/views/kaui/components/dashboard/_setting.html.erb +15 -0
  192. data/app/views/kaui/components/form_input/_form_input.html.erb +4 -0
  193. data/app/views/kaui/components/form_password/_form_password.html.erb +6 -0
  194. data/app/views/kaui/components/logo/_logo.html.erb +1 -0
  195. data/app/views/kaui/components/menu_dropdown/_menu_dropdown.html.erb +59 -0
  196. data/app/views/kaui/components/search_input/_search_input.html.erb +81 -0
  197. data/app/views/kaui/credits/_form.html.erb +42 -25
  198. data/app/views/kaui/credits/new.html.erb +15 -8
  199. data/app/views/kaui/custom_fields/_form.html.erb +37 -25
  200. data/app/views/kaui/custom_fields/_list_bar.html.erb +11 -10
  201. data/app/views/kaui/custom_fields/index.html.erb +121 -27
  202. data/app/views/kaui/custom_fields/new.html.erb +19 -8
  203. data/app/views/kaui/errors/500.html.erb +1 -1
  204. data/app/views/kaui/home/index.html.erb +77 -30
  205. data/app/views/kaui/invoice_items/_edit_form.html.erb +30 -14
  206. data/app/views/kaui/invoice_items/edit.html.erb +15 -7
  207. data/app/views/kaui/invoice_tags/_form_bar.html.erb +13 -3
  208. data/app/views/kaui/invoices/_invoice_filterbar.html.erb +53 -69
  209. data/app/views/kaui/invoices/_invoice_table.html.erb +77 -92
  210. data/app/views/kaui/invoices/_multi_functions_bar.html.erb +351 -140
  211. data/app/views/kaui/invoices/index.html.erb +89 -27
  212. data/app/views/kaui/invoices/show.html.erb +392 -80
  213. data/app/views/kaui/layouts/kaui_account_sidebar.html.erb +42 -0
  214. data/app/views/kaui/layouts/kaui_application.html.erb +29 -15
  215. data/app/views/kaui/layouts/kaui_flash.html.erb +82 -31
  216. data/app/views/kaui/layouts/kaui_navbar.html.erb +109 -82
  217. data/app/views/kaui/layouts/kaui_setting_sidebar.html.erb +36 -0
  218. data/app/views/kaui/payment_methods/_form.html.erb +32 -11
  219. data/app/views/kaui/payment_methods/_new_creditcard_payment_method.html.erb +35 -34
  220. data/app/views/kaui/payment_methods/_payment_methods_details_table.html.erb +27 -29
  221. data/app/views/kaui/payment_methods/_payment_methods_table.html.erb +116 -38
  222. data/app/views/kaui/payment_methods/_plugin_properties.html.erb +19 -9
  223. data/app/views/kaui/payment_methods/new.html.erb +14 -8
  224. data/app/views/kaui/payments/_form.html.erb +30 -13
  225. data/app/views/kaui/payments/_multi_functions_bar.html.erb +351 -141
  226. data/app/views/kaui/payments/_payment_filterbar.html.erb +63 -79
  227. data/app/views/kaui/payments/_payment_invoice_table.html.erb +105 -0
  228. data/app/views/kaui/payments/_payment_table.html.erb +4 -67
  229. data/app/views/kaui/payments/index.html.erb +90 -26
  230. data/app/views/kaui/payments/new.html.erb +15 -8
  231. data/app/views/kaui/payments/show.html.erb +222 -28
  232. data/app/views/kaui/queues/index.html.erb +329 -111
  233. data/app/views/kaui/refunds/_form.html.erb +68 -45
  234. data/app/views/kaui/refunds/new.html.erb +15 -8
  235. data/app/views/kaui/role_definitions/_form.html.erb +104 -17
  236. data/app/views/kaui/role_definitions/new.html.erb +15 -8
  237. data/app/views/kaui/sessions/_form.html.erb +9 -19
  238. data/app/views/kaui/sessions/new.html.erb +10 -9
  239. data/app/views/kaui/subscriptions/_cancel_by_date_modal.html.erb +65 -35
  240. data/app/views/kaui/subscriptions/_edit_form.html.erb +66 -35
  241. data/app/views/kaui/subscriptions/_form.html.erb +63 -32
  242. data/app/views/kaui/subscriptions/_subscriptions_table.html.erb +215 -57
  243. data/app/views/kaui/subscriptions/edit.html.erb +19 -8
  244. data/app/views/kaui/subscriptions/edit_bcd.erb +46 -16
  245. data/app/views/kaui/subscriptions/new.html.erb +22 -15
  246. data/app/views/kaui/tag_definitions/_form.html.erb +51 -30
  247. data/app/views/kaui/tag_definitions/index.html.erb +151 -40
  248. data/app/views/kaui/tag_definitions/new.html.erb +15 -8
  249. data/app/views/kaui/tags/index.html.erb +136 -47
  250. data/app/views/kaui/tenants/_form.html.erb +8 -5
  251. data/app/views/kaui/tenants/index.html.erb +15 -9
  252. data/app/views/kaui/transactions/_control_plugin_names.html.erb +18 -10
  253. data/app/views/kaui/transactions/_form.html.erb +86 -25
  254. data/app/views/kaui/transactions/new.html.erb +15 -9
  255. data/config/routes.rb +1 -0
  256. data/lib/kaui/engine.rb +11 -0
  257. data/lib/kaui/version.rb +1 -1
  258. data/lib/kaui.rb +0 -1
  259. metadata +120 -2
@@ -1,57 +1,128 @@
1
1
  <div class="dropdown-container">
2
- <button class="btn btn-default download-button-right" type="button" id="modalDownloadButton">
3
- <i class="glyphicon glyphicon-download-alt"></i>
4
- <strong>Download CSV</strong>
5
- </button>
2
+ <%= render "kaui/components/button/button", {
3
+ label: "Download CSV",
4
+ icon: "kaui/download.svg",
5
+ variant: "outline-secondary d-inline-flex align-items-center gap-1 mx-2",
6
+ type: "button",
7
+ html_class: "kaui-button custom-hover",
8
+ html_options: {
9
+ id: "modalDownloadButton"
10
+ }
11
+ } %>
6
12
  </div>
7
13
 
8
14
  <div class="modal fade" id="downloadCsvModal" tabindex="-1" role="dialog" aria-labelledby="downloadCsvModalLabel" aria-hidden="true">
9
15
  <div class="modal-dialog" role="document">
10
16
  <div class="modal-content">
11
17
  <div class="modal-header">
12
- <h3 class="modal-title" id="downloadCsvModalLabel">Download</h3>
13
- <button type="button" class="close" data-dismiss="modal" aria-label="Close">
14
- <span aria-hidden="true">&times;</span>
18
+ <h5 class="modal-title d-flex align-items-center gap-3" id="downloadCsvModalLabel">
19
+ <span class="icon-container">
20
+ <%= image_tag("kaui/download-csv.svg") %>
21
+ </span>
22
+ Download
23
+ </h5>
24
+ <button type="button" class="close close-button custom-hover" data-bs-dismiss="modal" aria-label="Close">
25
+ <span aria-hidden="true">
26
+ <%= image_tag("kaui/modal/close.svg", width: 20, height: 20) %>
27
+ </span>
15
28
  </button>
16
29
  </div>
17
30
  <div class="modal-body">
18
31
  <form id="downloadCsvForm">
19
32
  <div class="row">
20
- <div class="col-md-6">
21
- <div class="form-group">
22
- <label for="startDate">Created Date From:</label>
23
- <input type="text" class="form-control" id="startDate" name="startDate">
24
- </div>
25
- </div>
26
- <div class="col-md-6">
27
- <div class="form-group">
28
- <label for="endDate">To:</label>
29
- <input type="text" class="form-control" id="endDate" name="endDate">
30
- </div>
33
+ <div class="d-flex align-items-center">
34
+ <label for="searchFieldSelect" class="field-label col-sm-3">Audit Log Date</label>
35
+ <div class="fake-select-wrapper col-sm-9">
36
+ <input type="checkbox" id="single-toggle" hidden />
37
+ <div class="d-flex align-items-center position-relative">
38
+ <label for="single-toggle" class="fake-select-display">
39
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
40
+ <path d="M14.5833 12.5V18.3333M17.5 15.4167H11.6666" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
41
+ <path d="M13.75 1.6665V4.99984M6.25 1.6665V4.99984" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
42
+ <path d="M17.5 10.8335V5.00016C17.5 4.07969 16.7538 3.3335 15.8333 3.3335H4.16667C3.24619 3.3335 2.5 4.07969 2.5 5.00016V16.6668C2.5 17.5873 3.24619 18.3335 4.16667 18.3335H10" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
43
+ <path d="M2.5 8.3335H17.5" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
44
+ </svg>
45
+ </label>
46
+ <input type="text" class="form-control center-input" id="startDate" placeholder="All Accounts" name="startDate">
47
+ <div id="dash" class="dash">–</div>
48
+ <input type="text" class="form-control right-input" id="endDate" placeholder="" name="endDate">
49
+ <div id="toggle-wrapper" class="position-absolute" style="width: 100%; height: 100%;" onclick="document.getElementById('single-toggle').click()"></div>
50
+ </div>
51
+
52
+ <% today = Date.today %>
53
+
54
+ <% start_of_year = Date.new(today.year, 1, 1) %>
55
+ <% end_of_year = Date.new(today.year, 12, 31) %>
56
+ <% this_year_range = "#{start_of_year.strftime('%b %-d, %Y')} – #{end_of_year.strftime('%b %-d, %Y')}" %>
57
+
58
+ <% start_of_month = Date.new(today.year, today.month, 1) %>
59
+ <% end_of_month = Date.new(today.year, today.month, -1) %>
60
+ <% this_month_range = "#{start_of_month.strftime('%b %-d, %Y')} – #{end_of_month.strftime('%b %-d, %Y')}" %>
61
+
62
+ <% start_of_week = today - ((today.wday - 1) % 7) %>
63
+ <% end_of_week = start_of_week + 6 %>
64
+ <% this_week_range = "#{start_of_week.strftime('%b %-d, %Y')} – #{end_of_week.strftime('%b %-d, %Y')}" %>
65
+
66
+
67
+ <div class="fake-select-dropdown">
68
+ <label class="fake-select-option">
69
+ <input type="radio" name="download_option" id="allData" />
70
+ <span>All accounts</span>
71
+ </label>
72
+
73
+ <label class="fake-select-option">
74
+ <input type="radio" name="download_option" id="thisWeek" />
75
+ <span>This week <small>(<%= this_week_range %>)</small></span>
76
+ </label>
77
+
78
+ <label class="fake-select-option">
79
+ <input type="radio" name="download_option" id="thisMonth" />
80
+ <span>This month <small>(<%= this_month_range %>)</small></span>
81
+ </label>
82
+
83
+ <label class="fake-select-option">
84
+ <input type="radio" name="download_option" id="thisYear" />
85
+ <span>This year <small>(<%= this_year_range %>)</small></span>
86
+ </label>
87
+ <label class="fake-select-option">
88
+ <input type="radio" name="download_option" id="customDate" />
89
+ <span>Custom date</span>
90
+ </label>
91
+ </div>
92
+ </div>
31
93
  </div>
32
94
  </div>
33
95
  <div class="row">
34
- <div class="col-md-6">
35
- <div class="form-check">
36
- <div>
37
- <input type="radio" id="customDate" name="download_option" value="customDate">
38
- <label for="customDate">Custom date</label>
39
- </div>
40
- <div>
41
- <input type="radio" id="allData" name="download_option" value="all">
42
- <label for="allData">All logs</label>
43
- </div>
44
- <div>
45
- <input type="radio" id="thisWeek" name="download_option" value="thisWeek">
46
- <label for="thisWeek">This week</label>
47
- </div>
48
- <div>
49
- <input type="radio" id="thisMonth" name="download_option" value="thisMonth">
50
- <label for="thisMonth">This month</label>
51
- </div>
52
- <div>
53
- <input type="radio" id="thisYear" name="download_option" value="thisYear">
54
- <label for="thisYear">This year</label>
96
+ <div class="d-flex align-items-center">
97
+ <label for="searchFieldSelect" class="field-label col-sm-3">Include fields</label>
98
+ <div class="col-md-9">
99
+ <div class="chip-select">
100
+ <input type="checkbox" id="dropdown-toggle" hidden />
101
+
102
+ <label for="dropdown-toggle" class="chip-input-box position-relative" style="position: relative; overflow: hidden;">
103
+ <div class="chip-list" id="selected-fields-chips">
104
+ <%# This will be dynamically populated with chips for selected fields %>
105
+ <span class="chip" style="color: #999;">No fields selected</span>
106
+ <svg width="16" height="16" class="position-absolute" style="top: 0.625rem; right: 0.625rem;" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
107
+ <path d="M4 6L8 10L12 6" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
108
+ </svg>
109
+ </div>
110
+ <div id="" class="position-absolute" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;"></div>
111
+ </label>
112
+ <div class="chip-dropdown">
113
+ <label class="chip-option">
114
+ <input type="checkbox" id="allFields" />
115
+ All fields
116
+ </label>
117
+ <div class="mt-2" id="field-selection">
118
+ <% Kaui.account_audit_logs_columns.call[0].each_with_index do |title, index| %>
119
+ <label class="chip-option d-flex align-items-center gap-2">
120
+ <input type="checkbox" class="field-toggle" data-field-index="<%= index %>" checked />
121
+ <span><%= title %></span>
122
+ </label>
123
+ <% end %>
124
+ </div>
125
+ </div>
55
126
  </div>
56
127
  </div>
57
128
  </div>
@@ -59,65 +130,31 @@
59
130
  </form>
60
131
  </div>
61
132
  <div class="modal-footer">
62
- <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
63
- <button type="button" class="btn btn-primary" id="downloadButton">Download</button>
133
+ <%= render "kaui/components/button/button", {
134
+ label: 'Close',
135
+ variant: "outline-secondary d-inline-flex align-items-center gap-1",
136
+ type: "button",
137
+ html_class: "kaui-button custom-hover mx-2 my-0",
138
+ html_options: {
139
+ data: {
140
+ bs_dismiss: "modal"
141
+ },
142
+ }
143
+ } %>
144
+ <%= render "kaui/components/button/button", {
145
+ label: 'Download CSV',
146
+ variant: "outline-secondary d-inline-flex align-items-center gap-1",
147
+ type: "button",
148
+ html_class: "kaui-dropdown custom-hover m-0",
149
+ html_options: {
150
+ id: "downloadButton"
151
+ }
152
+ } %>
64
153
  </div>
65
154
  </div>
66
155
  </div>
67
156
  </div>
68
157
 
69
- <style>
70
- .dropdown-menu#column-visibility {
71
- max-height: 300px;
72
- width: 220px;
73
- overflow-y: auto;
74
- }
75
-
76
- .dropdown-menu {
77
- padding: 5px;
78
- }
79
- .toggle-button-right {
80
- float: right;
81
- margin-bottom: 10px;
82
- margin-left: 10px;
83
- background-color: white;
84
- color: black;
85
- text-transform: none;
86
- border: 1px solid #ccc;
87
- padding: 8px 15px;
88
- }
89
-
90
- .download-button-right {
91
- float: right;
92
- margin-bottom: 10px;
93
- margin-left: 10px;
94
- background-color: white;
95
- color: black;
96
- text-transform: none;
97
- border: 1px solid #ccc;
98
- padding: 8px 15px;
99
- }
100
-
101
- .icon-drag {
102
- float: right;
103
- padding: 5px;
104
- }
105
-
106
- .dropdown-container {
107
- display: flex;
108
- justify-content: flex-end;
109
- }
110
-
111
- .label-group-item-manual {
112
- margin: 5px;
113
- width: -webkit-fill-available;
114
- cursor: grab;
115
- }
116
- .label-group-item-manual:active {
117
- cursor: grabbing;
118
- }
119
- </style>
120
-
121
158
  <%= javascript_tag do %>
122
159
  $(document).ready(function() {
123
160
  $('.dropdown-menu').on('click', 'input[type="checkbox"], label', function(event) {
@@ -128,13 +165,20 @@ $(document).ready(function() {
128
165
  $('#downloadCsvModal').modal('show');
129
166
  });
130
167
 
131
- $('#startDate, #endDate').datepicker({
132
- dateFormat: 'yy-mm-dd'
168
+ // Native date inputs are used; no jQuery UI datepicker initialization needed
169
+
170
+ // Open native date picker on input click/focus
171
+ $('#startDate, #endDate').on('click focus', function() {
172
+ if (!this.disabled && typeof this.showPicker === 'function') {
173
+ this.showPicker();
174
+ }
133
175
  });
134
176
 
135
177
  $('#downloadCsvModal').on('show.bs.modal', function (e) {
136
178
  $('#allData').prop('checked', true);
137
179
  $('#startDate, #endDate').prop('disabled', true);
180
+ $('#toggle-wrapper').show();
181
+ $('#dash').hide();
138
182
  $('#startDate').val(null);
139
183
  $('#endDate').val(null);
140
184
  });
@@ -142,24 +186,40 @@ $(document).ready(function() {
142
186
  $('#allData').change(function() {
143
187
  $('#startDate').val(null);
144
188
  $('#endDate').val(null);
189
+ $('#toggle-wrapper').show();
190
+ $('#dash').hide();
145
191
  $('#startDate, #endDate').prop('disabled', true);
192
+ // Change to text inputs to show placeholder
193
+ $('#startDate, #endDate').attr('type', 'text');
146
194
  });
147
195
 
148
196
  $('#thisWeek').change(function() {
149
197
  if ($(this).is(':checked')) {
150
198
  setDateRange("week");
199
+ $('#toggle-wrapper').show();
200
+ $('#dash').show();
201
+ // Change back to date inputs
202
+ $('#startDate, #endDate').attr('type', 'date');
151
203
  }
152
204
  });
153
205
 
154
206
  $('#thisMonth').change(function() {
155
207
  if ($(this).is(':checked')) {
156
208
  setDateRange("month");
209
+ $('#toggle-wrapper').show();
210
+ $('#dash').show();
211
+ // Change back to date inputs
212
+ $('#startDate, #endDate').attr('type', 'date');
157
213
  }
158
214
  });
159
215
 
160
216
  $('#thisYear').change(function() {
161
217
  if ($(this).is(':checked')) {
162
218
  setDateRange("year");
219
+ $('#toggle-wrapper').show();
220
+ $('#dash').show();
221
+ // Change back to date inputs
222
+ $('#startDate, #endDate').attr('type', 'date');
163
223
  }
164
224
  });
165
225
 
@@ -167,23 +227,160 @@ $(document).ready(function() {
167
227
  if ($(this).is(':checked')) {
168
228
  setDateRange("day");
169
229
  $('#startDate, #endDate').prop('disabled', false);
230
+ $('#toggle-wrapper').hide();
231
+ $('#dash').show();
232
+ // Change back to date inputs
233
+ $('#startDate, #endDate').attr('type', 'date');
170
234
  }
171
235
  });
172
236
 
173
237
  var downloadButton = document.getElementById('downloadButton');
174
238
  if (downloadButton) {
175
- downloadButton.addEventListener('click', function() {
176
- event.preventDefault();
239
+ downloadButton.addEventListener('click', function(e) {
240
+ e.preventDefault();
177
241
  var startDate = $('#startDate').val();
178
242
  var endDate = $('#endDate').val();
179
243
  var downloadAll = $('#allData').is(':checked');
180
-
181
- if (downloadAll) {
182
- window.open("<%= download_audit_logs_path %>?account_id=<%=@account.account_id%>", '_blank');
244
+ var allFieldsChecked = $('#allFields').is(':checked');
245
+
246
+ // Build URL like reference partial
247
+ var url = new URL("<%= download_audit_logs_path %>", window.location.origin);
248
+ var params = new URLSearchParams();
249
+ params.append('account_id', "<%=@account.account_id%>");
250
+
251
+ if (!downloadAll) {
252
+ params.append('startDate', startDate);
253
+ params.append('endDate', endDate);
254
+ }
255
+
256
+ // Determine columnsString per reference behavior
257
+ var columns = [];
258
+ if (allFieldsChecked) {
259
+ var thElements = document.querySelectorAll('#audit-logs-table th');
260
+ columns = Array.from(thElements).map(function(th) { return th.textContent.trim(); });
183
261
  } else {
184
- window.open("<%= download_audit_logs_path %>?account_id=<%=@account.account_id%>&startDate="+startDate+"&endDate="+endDate, '_blank');
262
+ $('#field-selection input.field-toggle:checked').each(function() {
263
+ var labelText = $(this).closest('label').find('span').text().trim();
264
+ columns.push(labelText);
265
+ });
266
+ }
267
+ if (columns.length > 0) {
268
+ params.append('columnsString', columns.join(','));
185
269
  }
270
+
271
+ url.search = params.toString();
272
+ window.open(url.toString(), '_blank');
273
+ });
274
+ }
275
+
276
+ document.addEventListener('click', function (e) {
277
+ const wrapper = document.querySelector('.chip-select');
278
+ const toggle = document.getElementById('dropdown-toggle');
279
+
280
+ if (wrapper && !wrapper.contains(e.target)) {
281
+ toggle.checked = false; // close dropdown
282
+ }
283
+ });
284
+
285
+ document.addEventListener('click', function (e) {
286
+ const wrapper = document.querySelector('.fake-select-wrapper');
287
+ const toggle = document.getElementById('single-toggle');
288
+ if (!wrapper.contains(e.target)) toggle.checked = false;
289
+ });
290
+
291
+ // Initialize on modal open
292
+ $('#downloadCsvModal').on('show.bs.modal', function () {
293
+ $('#allFields').prop('checked', true);
294
+ updateChipLabel();
295
+ });
296
+
297
+ // Initial binding
298
+ bindAllFieldsToggle();
299
+ bindDropdownAllFieldsToggle();
300
+
301
+ // Toggle behavior - this will be re-bound in updateChipLabel
302
+ function bindAllFieldsToggle() {
303
+ $('#allFields').off('change').on('change', function() {
304
+ var checked = $(this).is(':checked');
305
+
306
+ // When "All fields" is checked, select all individual fields
307
+ // When unchecked, deselect all individual fields
308
+ $('#field-selection input.field-toggle').prop('checked', checked);
309
+ $('#allFieldsDropdown').prop('checked', checked);
310
+
311
+ updateChipLabel();
186
312
  });
187
313
  }
314
+
315
+ // Also bind to the dropdown "All fields" checkbox
316
+ function bindDropdownAllFieldsToggle() {
317
+ $('#allFields').off('change').on('change', function() {
318
+ var checked = $(this).is(':checked');
319
+
320
+ // When "All fields" is checked, select all individual fields
321
+ // When unchecked, deselect all individual fields
322
+ $('#field-selection input.field-toggle').prop('checked', checked);
323
+
324
+ updateChipLabel();
325
+ });
326
+ }
327
+
328
+ // Update chip display based on selected fields
329
+ function updateChipLabel() {
330
+ var allFieldsChecked = $('#allFields').is(':checked');
331
+ var $chipList = $('#selected-fields-chips');
332
+
333
+ if (allFieldsChecked) {
334
+ // Show "All fields" chip
335
+ $chipList.html(`
336
+ <span class="chip">All fields</span>
337
+ <svg width="16" height="16" class="position-absolute" style="top: 0.625rem; right: 0.625rem;" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
338
+ <path d="M4 6L8 10L12 6" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
339
+ </svg>
340
+ `);
341
+ } else {
342
+ // Show individual field chips
343
+ var selectedFields = [];
344
+ $('#field-selection input.field-toggle:checked').each(function() {
345
+ var labelText = $(this).closest('label').find('span').text().trim();
346
+ selectedFields.push(labelText);
347
+ });
348
+
349
+ if (selectedFields.length === 0) {
350
+ $chipList.html(`
351
+ <span class="chip" style="color: #999;">No fields selected</span>
352
+ <svg width="16" height="16" class="position-absolute" style="top: 0.625rem; right: 0.625rem;" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
353
+ <path d="M4 6L8 10L12 6" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
354
+ </svg>
355
+ `);
356
+ } else {
357
+ var chipsHtml = selectedFields.map(function(field) {
358
+ return `<span class="chip">${field}</span>`;
359
+ }).join('');
360
+ chipsHtml = chipsHtml + `
361
+ <svg width="16" height="16" class="position-absolute" style="top: 0.625rem; right: 0.625rem;" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
362
+ <path d="M4 6L8 10L12 6" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
363
+ </svg>
364
+ `;
365
+ $chipList.html(chipsHtml);
366
+ }
367
+ }
368
+ }
369
+
370
+ // Update chip label when individual fields change
371
+ $('#field-selection input.field-toggle').on('change', function() {
372
+ // Check if all individual fields are selected
373
+ var totalFields = $('#field-selection input.field-toggle').length;
374
+ var checkedFields = $('#field-selection input.field-toggle:checked').length;
375
+
376
+ // Update "All fields" checkbox based on individual field selections
377
+ if (checkedFields === totalFields) {
378
+ $('#allFields').prop('checked', true);
379
+ } else {
380
+ $('#allFields').prop('checked', false);
381
+ }
382
+
383
+ updateChipLabel();
384
+ });
188
385
  });
189
386
  <% end %>