decidim-core 0.27.4 → 0.28.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1501) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -4
  3. data/app/cells/decidim/activities/show.erb +5 -3
  4. data/app/cells/decidim/activities_cell.rb +5 -5
  5. data/app/cells/decidim/activity/show.erb +23 -22
  6. data/app/cells/decidim/activity_cell.rb +26 -6
  7. data/app/cells/decidim/address/online.erb +9 -0
  8. data/app/cells/decidim/address/show.erb +13 -13
  9. data/app/cells/decidim/address_cell.rb +3 -7
  10. data/app/cells/decidim/amendable/amend_button_card/show.erb +4 -9
  11. data/app/cells/decidim/amendable/amend_button_card_cell.rb +0 -17
  12. data/app/cells/decidim/amendable/amenders_list/show.erb +0 -12
  13. data/app/cells/decidim/amendable/amendments/show.erb +12 -0
  14. data/app/cells/decidim/amendable/amendments_cell.rb +25 -0
  15. data/app/cells/decidim/amendable/announcement_cell.rb +1 -1
  16. data/app/cells/decidim/amendable/emendation_actions/show.erb +12 -10
  17. data/app/cells/decidim/amendable/emendation_actions_cell.rb +0 -26
  18. data/app/cells/decidim/amendable/promote_button_card/show.erb +9 -9
  19. data/app/cells/decidim/amendable/promote_button_card_cell.rb +1 -5
  20. data/app/cells/decidim/amendable/wizard_step_form_cell.rb +5 -5
  21. data/app/cells/decidim/announcement/show.erb +10 -10
  22. data/app/cells/decidim/announcement_cell.rb +14 -4
  23. data/app/cells/decidim/author/avatar.erb +9 -0
  24. data/app/cells/decidim/author/avatar_image.erb +1 -0
  25. data/app/cells/decidim/author/cancelled_on.erb +4 -0
  26. data/app/cells/decidim/author/comments.erb +3 -5
  27. data/app/cells/decidim/author/date.erb +4 -5
  28. data/app/cells/decidim/author/endorsements.erb +3 -5
  29. data/app/cells/decidim/author/flag.erb +6 -8
  30. data/app/cells/decidim/author/flag_user.erb +10 -6
  31. data/app/cells/decidim/author/name.erb +5 -0
  32. data/app/cells/decidim/author/profile_minicard.erb +24 -19
  33. data/app/cells/decidim/author/show.erb +22 -14
  34. data/app/cells/decidim/author/withdraw.erb +3 -5
  35. data/app/cells/decidim/author_cell.rb +50 -32
  36. data/app/cells/decidim/authorization_modal/show.erb +28 -0
  37. data/app/cells/decidim/authorization_modal_cell.rb +92 -0
  38. data/app/cells/decidim/badge/show.erb +9 -31
  39. data/app/cells/decidim/badge/small.erb +3 -3
  40. data/app/cells/decidim/badges/show.erb +13 -6
  41. data/app/cells/decidim/badges_cell.rb +1 -0
  42. data/app/cells/decidim/button/button.erb +9 -0
  43. data/app/cells/decidim/button/content.erb +2 -0
  44. data/app/cells/decidim/button/link.erb +10 -0
  45. data/app/cells/decidim/button/show.erb +5 -0
  46. data/app/cells/decidim/button_cell.rb +48 -0
  47. data/app/cells/decidim/card/show.erb +8 -16
  48. data/app/cells/decidim/card/title.erb +1 -0
  49. data/app/cells/decidim/card_cell.rb +63 -6
  50. data/app/cells/decidim/card_g/show.erb +19 -0
  51. data/app/cells/decidim/card_g_cell.rb +102 -0
  52. data/app/cells/decidim/card_l/author.erb +3 -0
  53. data/app/cells/decidim/card_l/content.erb +10 -0
  54. data/app/cells/decidim/card_l/description.erb +3 -0
  55. data/app/cells/decidim/card_l/image.erb +11 -0
  56. data/app/cells/decidim/card_l/metadata.erb +3 -0
  57. data/app/cells/decidim/card_l/show.erb +13 -0
  58. data/app/cells/decidim/card_l/space.erb +1 -0
  59. data/app/cells/decidim/card_l/title_and_details.erb +5 -0
  60. data/app/cells/decidim/card_l_cell.rb +139 -0
  61. data/app/cells/decidim/card_metadata/show.erb +22 -0
  62. data/app/cells/decidim/card_metadata_cell.rb +218 -0
  63. data/app/cells/decidim/card_s/show.erb +10 -0
  64. data/app/cells/decidim/card_s_cell.rb +34 -0
  65. data/app/cells/decidim/coauthorships_cell.rb +2 -27
  66. data/app/cells/decidim/collapsible_authors/show.erb +17 -16
  67. data/app/cells/decidim/collapsible_authors/stack.erb +9 -0
  68. data/app/cells/decidim/collapsible_authors_cell.rb +13 -22
  69. data/app/cells/decidim/comments_button_cell.rb +31 -0
  70. data/app/cells/decidim/content_blocks/base/show.erb +3 -0
  71. data/app/cells/decidim/content_blocks/base_cell.rb +49 -0
  72. data/app/cells/decidim/content_blocks/cta/show.erb +10 -12
  73. data/app/cells/decidim/content_blocks/cta_cell.rb +0 -4
  74. data/app/cells/decidim/content_blocks/footer_sub_hero/show.erb +14 -12
  75. data/app/cells/decidim/content_blocks/global_menu/show.erb +11 -0
  76. data/app/cells/decidim/content_blocks/global_menu_cell.rb +35 -0
  77. data/app/cells/decidim/content_blocks/hero/cta_button.erb +4 -0
  78. data/app/cells/decidim/content_blocks/hero/show.erb +11 -18
  79. data/app/cells/decidim/content_blocks/hero_cell.rb +1 -1
  80. data/app/cells/decidim/content_blocks/highlighted_content_banner/show.erb +16 -20
  81. data/app/cells/decidim/content_blocks/highlighted_elements_cell.rb +7 -31
  82. data/app/cells/decidim/content_blocks/highlighted_elements_for_component_settings_form/show.erb +4 -0
  83. data/app/cells/decidim/content_blocks/highlighted_elements_for_component_settings_form_cell.rb +31 -0
  84. data/app/cells/decidim/content_blocks/highlighted_elements_settings_form/show.erb +1 -1
  85. data/app/cells/decidim/content_blocks/highlighted_elements_with_cell_for_list/content.erb +1 -0
  86. data/app/cells/decidim/content_blocks/highlighted_elements_with_cell_for_list_cell.rb +29 -0
  87. data/app/cells/decidim/content_blocks/highlighted_participatory_spaces/content.erb +16 -0
  88. data/app/cells/decidim/content_blocks/highlighted_participatory_spaces_cell.rb +39 -0
  89. data/app/cells/decidim/content_blocks/how_to_participate/show.erb +37 -41
  90. data/app/cells/decidim/content_blocks/html/show.erb +1 -1
  91. data/app/cells/decidim/content_blocks/html_cell.rb +4 -0
  92. data/app/cells/decidim/content_blocks/html_settings_form/show.erb +1 -1
  93. data/app/cells/decidim/content_blocks/last_activity/show.erb +11 -14
  94. data/app/cells/decidim/content_blocks/last_activity_cell.rb +2 -2
  95. data/app/cells/decidim/content_blocks/last_activity_settings_form/show.erb +3 -0
  96. data/app/cells/decidim/content_blocks/last_activity_settings_form_cell.rb +13 -0
  97. data/app/cells/decidim/content_blocks/menu_breadcrumb_last_activity/show.erb +10 -0
  98. data/app/cells/decidim/content_blocks/menu_breadcrumb_last_activity_cell.rb +43 -0
  99. data/app/cells/decidim/content_blocks/organization_metrics_cell.rb +21 -0
  100. data/app/cells/decidim/content_blocks/participatory_space_announcement/content.erb +1 -0
  101. data/app/cells/decidim/content_blocks/participatory_space_announcement_cell.rb +19 -0
  102. data/app/cells/decidim/content_blocks/participatory_space_documents/content.erb +5 -0
  103. data/app/cells/decidim/content_blocks/participatory_space_documents_cell.rb +7 -0
  104. data/app/cells/decidim/content_blocks/participatory_space_extra_data/content.erb +5 -0
  105. data/app/cells/decidim/content_blocks/participatory_space_extra_data/extra_data.erb +13 -0
  106. data/app/cells/decidim/content_blocks/participatory_space_extra_data/recent_users.erb +5 -0
  107. data/app/cells/decidim/content_blocks/participatory_space_extra_data_cell.rb +13 -0
  108. data/app/cells/decidim/content_blocks/participatory_space_hero/show.erb +20 -0
  109. data/app/cells/decidim/content_blocks/participatory_space_hero_cell.rb +41 -0
  110. data/app/cells/decidim/content_blocks/participatory_space_images/content.erb +5 -0
  111. data/app/cells/decidim/content_blocks/participatory_space_images_cell.rb +7 -0
  112. data/app/cells/decidim/content_blocks/participatory_space_last_activity/content.erb +11 -0
  113. data/app/cells/decidim/content_blocks/participatory_space_last_activity/recent_avatars.erb +5 -0
  114. data/app/cells/decidim/content_blocks/participatory_space_last_activity_cell.rb +45 -0
  115. data/app/cells/decidim/content_blocks/participatory_space_main_data/content.erb +7 -0
  116. data/app/cells/decidim/content_blocks/participatory_space_main_data/title.erb +32 -0
  117. data/app/cells/decidim/content_blocks/participatory_space_main_data_cell.rb +23 -0
  118. data/app/cells/decidim/content_blocks/participatory_space_metadata/content.erb +10 -0
  119. data/app/cells/decidim/content_blocks/participatory_space_metadata_cell.rb +40 -0
  120. data/app/cells/decidim/content_blocks/participatory_space_metrics/content.erb +18 -0
  121. data/app/cells/decidim/content_blocks/participatory_space_metrics_cell.rb +43 -0
  122. data/app/cells/decidim/content_blocks/participatory_space_social_networks/content.erb +10 -0
  123. data/app/cells/decidim/content_blocks/participatory_space_social_networks_cell.rb +31 -0
  124. data/app/cells/decidim/content_blocks/participatory_space_stats/content.erb +1 -0
  125. data/app/cells/decidim/content_blocks/participatory_space_stats_cell.rb +21 -0
  126. data/app/cells/decidim/content_blocks/static_page/section/show.erb +1 -0
  127. data/app/cells/decidim/content_blocks/static_page/section_cell.rb +13 -0
  128. data/app/cells/decidim/content_blocks/static_page/section_settings_form/show.erb +3 -0
  129. data/app/cells/decidim/content_blocks/static_page/section_settings_form_cell.rb +19 -0
  130. data/app/cells/decidim/content_blocks/static_page/summary/show.erb +1 -0
  131. data/app/cells/decidim/content_blocks/static_page/summary_cell.rb +13 -0
  132. data/app/cells/decidim/content_blocks/static_page/summary_settings_form/show.erb +3 -0
  133. data/app/cells/decidim/content_blocks/static_page/summary_settings_form_cell.rb +19 -0
  134. data/app/cells/decidim/content_blocks/static_page/two_pane_section/show.erb +8 -0
  135. data/app/cells/decidim/content_blocks/static_page/two_pane_section_cell.rb +17 -0
  136. data/app/cells/decidim/content_blocks/static_page/two_pane_section_settings_form/show.erb +4 -0
  137. data/app/cells/decidim/content_blocks/static_page/two_pane_section_settings_form_cell.rb +23 -0
  138. data/app/cells/decidim/content_blocks/stats/show.erb +5 -18
  139. data/app/cells/decidim/content_blocks/sub_hero/show.erb +11 -13
  140. data/app/cells/decidim/data_consent/category.erb +49 -45
  141. data/app/cells/decidim/data_consent/dialog.erb +20 -24
  142. data/app/cells/decidim/data_consent/modal.erb +32 -36
  143. data/app/cells/decidim/date_range/show.erb +4 -4
  144. data/app/cells/decidim/diff/attribute.erb +5 -25
  145. data/app/cells/decidim/diff/diff_mode_dropdown.erb +5 -33
  146. data/app/cells/decidim/diff/diff_mode_html.erb +5 -33
  147. data/app/cells/decidim/diff/diff_split.erb +2 -11
  148. data/app/cells/decidim/diff/diff_split_full.erb +8 -0
  149. data/app/cells/decidim/diff/diff_unified.erb +1 -7
  150. data/app/cells/decidim/diff/show.erb +10 -3
  151. data/app/cells/decidim/diff_cell.rb +35 -4
  152. data/app/cells/decidim/documents_panel/show.erb +1 -0
  153. data/app/cells/decidim/documents_panel_cell.rb +34 -0
  154. data/app/cells/decidim/endorsement_block/show.erb +4 -0
  155. data/app/cells/decidim/endorsement_block_cell.rb +7 -0
  156. data/app/cells/decidim/endorsement_buttons/button_content.erb +2 -0
  157. data/app/cells/decidim/endorsement_buttons/disabled_endorsements.erb +3 -0
  158. data/app/cells/decidim/endorsement_buttons/select_identity_button.erb +5 -7
  159. data/app/cells/decidim/endorsement_buttons/show.erb +16 -3
  160. data/app/cells/decidim/endorsement_buttons/verification_modal.erb +5 -0
  161. data/app/cells/decidim/endorsement_buttons_cell.rb +25 -138
  162. data/app/cells/decidim/endorsers_list/full.erb +6 -0
  163. data/app/cells/decidim/endorsers_list/full_endorsers_list.erb +3 -0
  164. data/app/cells/decidim/endorsers_list/show.erb +11 -16
  165. data/app/cells/decidim/endorsers_list_button/content.erb +1 -0
  166. data/app/cells/decidim/endorsers_list_button_cell.rb +15 -0
  167. data/app/cells/decidim/endorsers_list_cell.rb +25 -5
  168. data/app/cells/decidim/flag_modal/flag_user.erb +12 -2
  169. data/app/cells/decidim/flag_modal/show.erb +51 -26
  170. data/app/cells/decidim/flag_modal_cell.rb +22 -1
  171. data/app/cells/decidim/follow_button/content.erb +2 -0
  172. data/app/cells/decidim/follow_button/show.erb +24 -53
  173. data/app/cells/decidim/follow_button_cell.rb +23 -34
  174. data/app/cells/decidim/followers/show.erb +11 -8
  175. data/app/cells/decidim/followers_cell.rb +4 -0
  176. data/app/cells/decidim/following/show.erb +6 -11
  177. data/app/cells/decidim/following_cell.rb +9 -2
  178. data/app/cells/decidim/footer_pages/pages.erb +3 -0
  179. data/app/cells/decidim/footer_pages/topics.erb +12 -0
  180. data/app/cells/decidim/footer_pages_cell.rb +68 -0
  181. data/app/cells/decidim/group_admins/show.erb +32 -0
  182. data/app/cells/decidim/group_admins_cell.rb +8 -0
  183. data/app/cells/decidim/group_members/show.erb +42 -0
  184. data/app/cells/decidim/group_members_cell.rb +8 -0
  185. data/app/cells/decidim/groups/show.erb +12 -8
  186. data/app/cells/decidim/groups_cell.rb +6 -0
  187. data/app/cells/decidim/highlighted_participatory_process/show.erb +1 -0
  188. data/app/cells/decidim/highlighted_participatory_process_cell.rb +15 -0
  189. data/app/cells/decidim/images_panel/show.erb +7 -0
  190. data/app/cells/decidim/images_panel_cell.rb +29 -0
  191. data/app/cells/decidim/linked_resources_for/show.erb +3 -0
  192. data/app/cells/decidim/linked_resources_for_cell.rb +52 -0
  193. data/app/cells/decidim/members/show.erb +11 -8
  194. data/app/cells/decidim/members_cell.rb +9 -7
  195. data/app/cells/decidim/nav_links/show.erb +17 -0
  196. data/app/cells/decidim/nav_links_cell.rb +10 -0
  197. data/app/cells/decidim/navbar_admin_link/show.erb +4 -6
  198. data/app/cells/decidim/navbar_admin_link_cell.rb +2 -8
  199. data/app/cells/decidim/newsletter_templates/basic_only_text/show.erb +1 -12
  200. data/app/cells/decidim/newsletter_templates/image_text_cta/show.erb +1 -12
  201. data/app/cells/decidim/newsletter_templates/image_text_cta_settings_form/show.erb +1 -1
  202. data/app/cells/decidim/notification/show.erb +14 -30
  203. data/app/cells/decidim/notification_cell.rb +11 -0
  204. data/app/cells/decidim/notifications/show.erb +5 -20
  205. data/app/cells/decidim/notifications/validations.erb +3 -0
  206. data/app/cells/decidim/notifications_cell.rb +13 -0
  207. data/app/cells/decidim/pad_iframe/show.erb +1 -1
  208. data/app/cells/decidim/participatory_space_dropdown_metadata/links.erb +9 -0
  209. data/app/cells/decidim/participatory_space_dropdown_metadata/metadata.erb +9 -0
  210. data/app/cells/decidim/participatory_space_dropdown_metadata/show.erb +9 -0
  211. data/app/cells/decidim/participatory_space_dropdown_metadata_cell.rb +35 -0
  212. data/app/cells/decidim/photo/show.erb +19 -0
  213. data/app/cells/decidim/photo_cell.rb +44 -0
  214. data/app/cells/decidim/photos_list/show.erb +5 -0
  215. data/app/cells/decidim/photos_list_cell.rb +16 -0
  216. data/app/cells/decidim/profile/avatar.erb +7 -0
  217. data/app/cells/decidim/profile/badge.erb +4 -0
  218. data/app/cells/decidim/profile/details.erb +22 -0
  219. data/app/cells/decidim/profile/inaccessible.erb +1 -9
  220. data/app/cells/decidim/profile/invalid.erb +1 -9
  221. data/app/cells/decidim/profile/show.erb +24 -14
  222. data/app/cells/decidim/profile/tabs.erb +13 -0
  223. data/app/cells/decidim/profile_actions/dropdown_actions.erb +21 -0
  224. data/app/cells/decidim/profile_actions/profile_actions.erb +7 -0
  225. data/app/cells/decidim/profile_actions/show.erb +12 -0
  226. data/app/cells/decidim/profile_actions_cell.rb +144 -0
  227. data/app/cells/decidim/profile_cell.rb +77 -11
  228. data/app/cells/decidim/profile_sidebar/show.erb +11 -11
  229. data/app/cells/decidim/progress_bar/show.erb +9 -19
  230. data/app/cells/decidim/progress_bar_cell.rb +1 -30
  231. data/app/cells/decidim/public_participation/show.erb +1 -1
  232. data/app/cells/decidim/report_button/already_reported_modal.erb +11 -0
  233. data/app/cells/decidim/report_button/flag_modal.erb +60 -0
  234. data/app/cells/decidim/report_button/show.erb +2 -0
  235. data/app/cells/decidim/report_button_cell.rb +82 -0
  236. data/app/cells/decidim/represent_user_group/show.erb +5 -5
  237. data/app/cells/decidim/resource_types_filter/show.erb +22 -0
  238. data/app/cells/decidim/resource_types_filter_cell.rb +56 -0
  239. data/app/cells/decidim/search_results/show.erb +1 -2
  240. data/app/cells/decidim/search_results_section/show.erb +20 -20
  241. data/app/cells/decidim/search_results_section_cell.rb +0 -4
  242. data/app/cells/decidim/share_button_cell.rb +23 -0
  243. data/app/cells/decidim/statistic/show.erb +4 -5
  244. data/app/cells/decidim/statistics/show.erb +7 -19
  245. data/app/cells/decidim/statistics_cell.rb +0 -20
  246. data/app/cells/decidim/tab_panels/show.erb +19 -0
  247. data/app/cells/decidim/tab_panels_cell.rb +40 -0
  248. data/app/cells/decidim/tags/show.erb +3 -4
  249. data/app/cells/decidim/tags_cell.rb +24 -5
  250. data/app/cells/decidim/tos_page/form.erb +9 -15
  251. data/app/cells/decidim/tos_page/refuse_btn_modal.erb +17 -27
  252. data/app/cells/decidim/tos_page_cell.rb +3 -3
  253. data/app/cells/decidim/upload_modal/files.erb +50 -35
  254. data/app/cells/decidim/upload_modal/modal.erb +62 -44
  255. data/app/cells/decidim/upload_modal/show.erb +1 -2
  256. data/app/cells/decidim/upload_modal_cell.rb +19 -30
  257. data/app/cells/decidim/user_activity/show.erb +9 -27
  258. data/app/cells/decidim/user_activity_cell.rb +4 -2
  259. data/app/cells/decidim/user_conversation/conversation_header.erb +12 -12
  260. data/app/cells/decidim/user_conversation/messages.erb +1 -15
  261. data/app/cells/decidim/user_conversation/new.erb +4 -13
  262. data/app/cells/decidim/user_conversation/reply.erb +8 -16
  263. data/app/cells/decidim/user_conversation/show.erb +15 -18
  264. data/app/cells/decidim/user_conversation/start.erb +12 -0
  265. data/app/cells/decidim/user_conversation_cell.rb +7 -32
  266. data/app/cells/decidim/user_conversations/new_conversation_button.erb +20 -0
  267. data/app/cells/decidim/user_conversations/show.erb +11 -55
  268. data/app/cells/decidim/user_conversations_cell.rb +2 -21
  269. data/app/cells/decidim/user_group_pending_invitations_list/show.erb +22 -17
  270. data/app/cells/decidim/user_group_pending_requests_list/show.erb +21 -17
  271. data/app/cells/decidim/user_profile/badge.erb +4 -0
  272. data/app/cells/decidim/user_profile/role_badge.erb +3 -0
  273. data/app/cells/decidim/user_profile/show.erb +15 -0
  274. data/app/cells/decidim/user_profile_cell.rb +19 -24
  275. data/app/cells/decidim/user_timeline/show.erb +1 -3
  276. data/app/cells/decidim/version/show.erb +5 -30
  277. data/app/cells/decidim/version_author_cell.rb +13 -10
  278. data/app/cells/decidim/version_cell.rb +7 -22
  279. data/app/cells/decidim/versions_list/show.erb +3 -32
  280. data/app/cells/decidim/versions_list_cell.rb +10 -22
  281. data/app/cells/decidim/versions_list_item/show.erb +4 -20
  282. data/app/cells/decidim/versions_list_item_cell.rb +10 -3
  283. data/app/cells/decidim/wizard_step_form/wizard_aside.erb +1 -1
  284. data/app/cells/decidim/wizard_step_form/wizard_header.erb +2 -2
  285. data/app/cells/decidim/wizard_step_form_cell.rb +3 -3
  286. data/app/commands/decidim/accept_group_invitation.rb +2 -2
  287. data/app/commands/decidim/accept_user_group_join_request.rb +1 -1
  288. data/app/commands/decidim/amendable/accept.rb +1 -1
  289. data/app/commands/decidim/amendable/create_draft.rb +2 -2
  290. data/app/commands/decidim/amendable/publish_draft.rb +1 -1
  291. data/app/commands/decidim/amendable/reject.rb +1 -1
  292. data/app/commands/decidim/amendable/update_draft.rb +1 -1
  293. data/app/commands/decidim/attachment_methods.rb +1 -5
  294. data/app/commands/decidim/create_editor_image.rb +1 -1
  295. data/app/commands/decidim/create_follow.rb +1 -1
  296. data/app/commands/decidim/create_omniauth_registration.rb +4 -5
  297. data/app/commands/decidim/create_registration.rb +1 -2
  298. data/app/commands/decidim/create_report.rb +15 -24
  299. data/app/commands/decidim/create_user_group.rb +1 -1
  300. data/app/commands/decidim/create_user_report.rb +1 -1
  301. data/app/commands/decidim/delete_follow.rb +1 -1
  302. data/app/commands/decidim/demote_membership.rb +2 -2
  303. data/app/commands/decidim/endorse_resource.rb +3 -1
  304. data/app/commands/decidim/gallery_methods.rb +1 -1
  305. data/app/commands/decidim/invite_user_to_group.rb +3 -3
  306. data/app/commands/decidim/join_user_group.rb +3 -3
  307. data/app/commands/decidim/leave_user_group.rb +4 -4
  308. data/app/commands/decidim/messaging/reply_to_conversation.rb +2 -2
  309. data/app/commands/decidim/messaging/start_conversation.rb +2 -2
  310. data/app/commands/decidim/multiple_attachments_methods.rb +5 -3
  311. data/app/commands/decidim/promote_membership.rb +1 -1
  312. data/app/commands/decidim/reject_group_invitation.rb +2 -2
  313. data/app/commands/decidim/reject_user_group_join_request.rb +1 -1
  314. data/app/commands/decidim/remove_user_from_group.rb +1 -1
  315. data/app/commands/decidim/search.rb +3 -11
  316. data/app/commands/decidim/unendorse_resource.rb +2 -2
  317. data/app/commands/decidim/update_account.rb +21 -5
  318. data/app/commands/decidim/update_password.rb +0 -1
  319. data/app/commands/decidim/update_user_group.rb +1 -1
  320. data/app/constraints/decidim/current_component.rb +1 -1
  321. data/app/controllers/concerns/decidim/amendments_controller.rb +9 -1
  322. data/app/controllers/concerns/decidim/devise_controllers.rb +3 -0
  323. data/app/controllers/concerns/decidim/disable_redirection_to_external_host.rb +1 -1
  324. data/app/controllers/concerns/decidim/filter_resource.rb +9 -15
  325. data/app/controllers/concerns/decidim/force_authentication.rb +7 -3
  326. data/app/controllers/concerns/decidim/has_account_breadcrumb.rb +24 -0
  327. data/app/controllers/concerns/decidim/has_participatory_space_content_blocks.rb +31 -0
  328. data/app/controllers/concerns/decidim/has_profile_breadcrumb.rb +24 -0
  329. data/app/controllers/concerns/decidim/has_specific_breadcrumb.rb +23 -0
  330. data/app/controllers/concerns/decidim/has_stored_path.rb +2 -2
  331. data/app/controllers/concerns/decidim/headers/content_security_policy.rb +25 -0
  332. data/app/controllers/concerns/decidim/headers/http_caching_disabler.rb +23 -0
  333. data/app/controllers/concerns/decidim/html_safe_flash.rb +40 -0
  334. data/app/controllers/concerns/decidim/linked_resource_reference.rb +30 -0
  335. data/app/controllers/concerns/decidim/locale_switcher.rb +2 -2
  336. data/app/controllers/concerns/decidim/needs_permission.rb +1 -1
  337. data/app/controllers/concerns/decidim/needs_tos_accepted.rb +12 -5
  338. data/app/controllers/concerns/decidim/paginable.rb +1 -1
  339. data/app/controllers/concerns/decidim/participatory_space_context.rb +30 -1
  340. data/app/controllers/concerns/decidim/safe_redirect.rb +1 -1
  341. data/app/controllers/concerns/decidim/skip_timeoutable.rb +1 -1
  342. data/app/controllers/concerns/decidim/use_organization_time_zone.rb +2 -2
  343. data/app/controllers/concerns/decidim/user_profile.rb +2 -1
  344. data/app/controllers/decidim/account_controller.rb +13 -8
  345. data/app/controllers/decidim/application_controller.rb +8 -3
  346. data/app/controllers/decidim/authorization_modals_controller.rb +5 -5
  347. data/app/controllers/decidim/components/base_controller.rb +15 -4
  348. data/app/controllers/decidim/devise/confirmations_controller.rb +3 -1
  349. data/app/controllers/decidim/devise/invitations_controller.rb +1 -1
  350. data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +1 -1
  351. data/app/controllers/decidim/devise/passwords_controller.rb +1 -1
  352. data/app/controllers/decidim/devise/registrations_controller.rb +2 -2
  353. data/app/controllers/decidim/devise/sessions_controller.rb +1 -1
  354. data/app/controllers/decidim/devise/unlocks_controller.rb +1 -1
  355. data/app/controllers/decidim/doorkeeper/authorizations_controller.rb +9 -0
  356. data/app/controllers/decidim/download_your_data_controller.rb +3 -3
  357. data/app/controllers/decidim/endorsements_controller.rb +3 -3
  358. data/app/controllers/decidim/errors_controller.rb +8 -0
  359. data/app/controllers/decidim/favicon_controller.rb +56 -0
  360. data/app/controllers/decidim/follows_controller.rb +13 -3
  361. data/app/controllers/decidim/free_resource_authorization_modals_controller.rb +4 -4
  362. data/app/controllers/decidim/gamification/badges_controller.rb +10 -0
  363. data/app/controllers/decidim/group_email_confirmations_controller.rb +1 -1
  364. data/app/controllers/decidim/group_invites_controller.rb +2 -2
  365. data/app/controllers/decidim/group_members_controller.rb +23 -10
  366. data/app/controllers/decidim/groups_controller.rb +5 -4
  367. data/app/controllers/decidim/homepage_controller.rb +0 -1
  368. data/app/controllers/decidim/last_activities_controller.rb +14 -12
  369. data/app/controllers/decidim/links_controller.rb +6 -5
  370. data/app/controllers/decidim/locales_controller.rb +1 -1
  371. data/app/controllers/decidim/messaging/conversations_controller.rb +26 -8
  372. data/app/controllers/decidim/newsletters_opt_in_controller.rb +1 -1
  373. data/app/controllers/decidim/notifications_controller.rb +11 -1
  374. data/app/controllers/decidim/notifications_settings_controller.rb +2 -2
  375. data/app/controllers/decidim/offline_controller.rb +9 -0
  376. data/app/controllers/decidim/pages_controller.rb +15 -2
  377. data/app/controllers/decidim/profiles_controller.rb +31 -2
  378. data/app/controllers/decidim/report_users_controller.rb +5 -1
  379. data/app/controllers/decidim/reports_controller.rb +1 -1
  380. data/app/controllers/decidim/scopes_controller.rb +7 -7
  381. data/app/controllers/decidim/searches_controller.rb +17 -4
  382. data/app/controllers/decidim/tos_controller.rb +3 -3
  383. data/app/controllers/decidim/user_activities_controller.rb +8 -4
  384. data/app/controllers/decidim/user_conversations_controller.rb +4 -3
  385. data/app/controllers/decidim/user_group_join_requests_controller.rb +7 -7
  386. data/app/controllers/decidim/user_interests_controller.rb +2 -2
  387. data/app/events/decidim/amendable/amendment_accepted_event.rb +1 -1
  388. data/app/events/decidim/amendable/amendment_base_event.rb +1 -1
  389. data/app/events/decidim/amendable/amendment_created_event.rb +1 -1
  390. data/app/events/decidim/amendable/amendment_rejected_event.rb +1 -1
  391. data/app/events/decidim/amendable/emendation_promoted_event.rb +1 -1
  392. data/app/events/decidim/change_nickname_event.rb +1 -1
  393. data/app/events/decidim/demoted_membership_event.rb +3 -3
  394. data/app/events/decidim/invited_to_group_event.rb +1 -1
  395. data/app/events/decidim/join_request_accepted_event.rb +1 -1
  396. data/app/events/decidim/join_request_created_event.rb +3 -3
  397. data/app/events/decidim/join_request_rejected_event.rb +1 -1
  398. data/app/events/decidim/profile_updated_event.rb +1 -1
  399. data/app/events/decidim/promoted_to_admin_event.rb +3 -3
  400. data/app/events/decidim/removed_from_group_event.rb +3 -3
  401. data/app/events/decidim/resource_endorsed_event.rb +1 -1
  402. data/app/events/decidim/user_group_admin_event.rb +1 -1
  403. data/app/events/decidim/user_group_created_event.rb +1 -1
  404. data/app/events/decidim/user_group_updated_event.rb +1 -1
  405. data/app/forms/decidim/account_form.rb +13 -8
  406. data/app/forms/decidim/amendable/form.rb +2 -2
  407. data/app/forms/decidim/follow_form.rb +1 -1
  408. data/app/forms/decidim/invite_user_form.rb +1 -1
  409. data/app/forms/decidim/notifications_settings_form.rb +0 -8
  410. data/app/forms/decidim/password_form.rb +1 -2
  411. data/app/forms/decidim/registration_form.rb +8 -12
  412. data/app/forms/decidim/report_form.rb +2 -0
  413. data/app/forms/decidim/user_group_form.rb +7 -7
  414. data/app/forms/decidim/user_interest_scope_form.rb +1 -1
  415. data/app/forms/decidim/user_interests_form.rb +1 -7
  416. data/app/helpers/concerns/decidim/flash_helper_extensions.rb +80 -12
  417. data/app/helpers/decidim/account_helper.rb +9 -0
  418. data/app/helpers/decidim/action_authorization_helper.rb +11 -11
  419. data/app/helpers/decidim/amendments_helper.rb +45 -27
  420. data/app/helpers/decidim/application_helper.rb +11 -11
  421. data/app/helpers/decidim/aria_selected_link_to_helper.rb +1 -1
  422. data/app/helpers/decidim/attachments_helper.rb +26 -3
  423. data/app/helpers/decidim/authorization_form_helper.rb +2 -2
  424. data/app/helpers/decidim/breadcrumb_helper.rb +60 -0
  425. data/app/helpers/decidim/cache_helper.rb +2 -2
  426. data/app/helpers/decidim/cells_paginate_helper.rb +1 -1
  427. data/app/helpers/decidim/check_boxes_tree_helper.rb +82 -17
  428. data/app/helpers/decidim/component_path_helper.rb +1 -1
  429. data/app/helpers/decidim/contextual_help_helper.rb +2 -2
  430. data/app/helpers/decidim/cta_button_helper.rb +5 -3
  431. data/app/helpers/decidim/date_range_helper.rb +19 -0
  432. data/app/helpers/decidim/decidim_form_helper.rb +24 -9
  433. data/app/helpers/decidim/endorsable_helper.rb +3 -3
  434. data/app/helpers/decidim/filters_helper.rb +16 -17
  435. data/app/helpers/decidim/followable_helper.rb +5 -2
  436. data/app/helpers/decidim/icon_helper.rb +20 -3
  437. data/app/helpers/decidim/layout_helper.rb +52 -39
  438. data/app/helpers/decidim/map_helper.rb +20 -46
  439. data/app/helpers/decidim/menu_helper.rb +47 -0
  440. data/app/helpers/decidim/messaging/conversation_helper.rb +34 -16
  441. data/app/helpers/decidim/meta_tags_helper.rb +3 -3
  442. data/app/helpers/decidim/modal_helper.rb +38 -0
  443. data/app/helpers/decidim/omniauth_helper.rb +7 -2
  444. data/app/helpers/decidim/orders_helper.rb +3 -3
  445. data/app/helpers/decidim/paginate_helper.rb +12 -1
  446. data/app/helpers/decidim/participatory_space_helpers.rb +4 -5
  447. data/app/helpers/decidim/passwords_helper.rb +19 -4
  448. data/app/helpers/decidim/resource_helper.rb +4 -26
  449. data/app/helpers/decidim/resource_reference_helper.rb +3 -3
  450. data/app/helpers/decidim/resource_versions_helper.rb +6 -4
  451. data/app/helpers/decidim/rich_text_editor_helper.rb +1 -0
  452. data/app/helpers/decidim/sanitize_helper.rb +8 -6
  453. data/app/helpers/decidim/scopes_helper.rb +23 -13
  454. data/app/helpers/decidim/searches_helper.rb +2 -2
  455. data/app/helpers/decidim/short_link_helper.rb +1 -1
  456. data/app/helpers/decidim/social_share_button_helper.rb +53 -0
  457. data/app/helpers/decidim/tooltip_helper.rb +4 -3
  458. data/app/helpers/decidim/traceability_helper.rb +3 -1
  459. data/app/helpers/decidim/twitter_search_helper.rb +1 -1
  460. data/app/helpers/decidim/view_hooks_helper.rb +1 -4
  461. data/app/jobs/decidim/download_your_data_export_job.rb +2 -1
  462. data/app/jobs/decidim/email_notifications_digest_generator_job.rb +2 -2
  463. data/app/jobs/decidim/event_publisher_job.rb +2 -2
  464. data/app/jobs/decidim/export_job.rb +4 -1
  465. data/app/jobs/decidim/find_and_update_descendants_job.rb +1 -1
  466. data/app/jobs/decidim/hide_all_created_by_author_job.rb +31 -0
  467. data/app/jobs/decidim/machine_translation_fields_job.rb +1 -1
  468. data/app/jobs/decidim/machine_translation_resource_job.rb +1 -1
  469. data/app/jobs/decidim/machine_translation_save_job.rb +2 -2
  470. data/app/jobs/decidim/open_data_job.rb +3 -1
  471. data/app/mailers/decidim/block_user_mailer.rb +1 -1
  472. data/app/mailers/decidim/decidim_devise_mailer.rb +1 -1
  473. data/app/mailers/decidim/messaging/conversation_mailer.rb +7 -7
  474. data/app/mailers/decidim/notification_mailer.rb +2 -2
  475. data/app/mailers/decidim/reported_mailer.rb +3 -3
  476. data/app/mailers/decidim/user_update_mailer.rb +28 -0
  477. data/app/models/decidim/action_log.rb +41 -9
  478. data/app/models/decidim/amendment.rb +8 -11
  479. data/app/models/decidim/authorization.rb +14 -4
  480. data/app/models/decidim/authorization_transfer.rb +257 -0
  481. data/app/models/decidim/authorization_transfer_record.rb +31 -0
  482. data/app/models/decidim/coauthorship.rb +7 -0
  483. data/app/models/decidim/component.rb +2 -2
  484. data/app/models/decidim/content_block.rb +5 -5
  485. data/app/models/decidim/contextual_help_section.rb +3 -3
  486. data/app/models/decidim/follow.rb +1 -3
  487. data/app/models/decidim/messaging/conversation.rb +7 -7
  488. data/app/models/decidim/messaging/message.rb +1 -1
  489. data/app/models/decidim/messaging/receipt.rb +1 -1
  490. data/app/models/decidim/newsletter.rb +2 -2
  491. data/app/models/decidim/notification.rb +5 -5
  492. data/app/models/decidim/organization.rb +16 -10
  493. data/app/models/decidim/participatory_space_private_user.rb +2 -23
  494. data/app/models/decidim/permission_action.rb +1 -1
  495. data/app/models/decidim/reminder_record.rb +3 -20
  496. data/app/models/decidim/report.rb +1 -1
  497. data/app/models/decidim/share_token.rb +2 -2
  498. data/app/models/decidim/short_link.rb +6 -6
  499. data/app/models/decidim/static_page.rb +5 -5
  500. data/app/models/decidim/user.rb +15 -6
  501. data/app/models/decidim/user_base_entity.rb +16 -2
  502. data/app/models/decidim/user_group.rb +4 -4
  503. data/app/packs/entrypoints/decidim_conference_diploma.scss +3 -1
  504. data/app/packs/entrypoints/decidim_core.js +4 -66
  505. data/app/packs/entrypoints/decidim_core.scss +2 -0
  506. data/app/packs/entrypoints/decidim_editor.js +7 -0
  507. data/app/packs/entrypoints/decidim_email.js +2 -1
  508. data/app/packs/entrypoints/decidim_map.scss +2 -0
  509. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.eot +0 -0
  510. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.svg +337 -0
  511. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.ttf +0 -0
  512. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.woff +0 -0
  513. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.woff2 +0 -0
  514. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-700.eot +0 -0
  515. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-700.svg +337 -0
  516. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-700.ttf +0 -0
  517. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-700.woff +0 -0
  518. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-700.woff2 +0 -0
  519. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.eot +0 -0
  520. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.svg +337 -0
  521. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.ttf +0 -0
  522. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.woff +0 -0
  523. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  524. data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_followers.svg +52 -1
  525. data/app/packs/images/decidim/icons.svg +1 -1
  526. data/app/packs/images/decidim/placeholder-card-g.svg +8 -0
  527. data/app/packs/images/decidim/placeholder-card-l.svg +7 -0
  528. data/app/packs/images/decidim/remixicon.symbol.svg +11 -0
  529. data/app/packs/images/decidim/vendor/social-share-button/x.svg +3 -0
  530. data/app/packs/src/decidim/a11y.js +186 -0
  531. data/app/packs/src/decidim/account_form.js +49 -30
  532. data/app/packs/src/decidim/append_redirect_url_to_modals.js +1 -1
  533. data/app/packs/src/decidim/autocomplete.js +26 -4
  534. data/app/packs/src/decidim/back_to_list.js +1 -1
  535. data/app/packs/src/decidim/change_report_form_behavior.js +45 -0
  536. data/app/packs/src/decidim/check_boxes_tree.js +31 -89
  537. data/app/packs/src/decidim/clipboard.js +2 -2
  538. data/app/packs/src/decidim/confirm.js +8 -25
  539. data/app/packs/src/decidim/data_consent/consent_manager.js +2 -1
  540. data/app/packs/src/decidim/data_consent/consent_manager.test.js +8 -8
  541. data/app/packs/src/decidim/data_consent/index.js +7 -23
  542. data/app/packs/src/decidim/direct_uploads/upload_field.js +110 -94
  543. data/app/packs/src/decidim/direct_uploads/upload_modal.js +195 -184
  544. data/app/packs/src/decidim/direct_uploads/upload_utility.js +0 -40
  545. data/app/packs/src/decidim/direct_uploads/uploader.js +22 -45
  546. data/app/packs/src/decidim/editor/common/bubble_menu.js +163 -0
  547. data/app/packs/src/decidim/editor/common/helpers.js +3 -0
  548. data/app/packs/src/decidim/editor/common/input_dialog.js +156 -0
  549. data/app/packs/src/decidim/editor/common/suggestion.js +179 -0
  550. data/app/packs/src/decidim/editor/common/upload_dialog.js +225 -0
  551. data/app/packs/src/decidim/editor/extensions/bold/index.js +34 -0
  552. data/app/packs/src/decidim/editor/extensions/character_count/index.js +35 -0
  553. data/app/packs/src/decidim/editor/extensions/decidim_kit/index.js +84 -0
  554. data/app/packs/src/decidim/editor/extensions/dialog/index.js +34 -0
  555. data/app/packs/src/decidim/editor/extensions/emoji/index.js +16 -0
  556. data/app/packs/src/decidim/editor/extensions/hashtag/index.js +66 -0
  557. data/app/packs/src/decidim/editor/extensions/heading/index.js +33 -0
  558. data/app/packs/src/decidim/editor/extensions/image/index.js +215 -0
  559. data/app/packs/src/decidim/editor/extensions/image/node_view.js +216 -0
  560. data/app/packs/src/decidim/editor/extensions/indent/index.js +188 -0
  561. data/app/packs/src/decidim/editor/extensions/link/bubble_menu.js +50 -0
  562. data/app/packs/src/decidim/editor/extensions/link/index.js +128 -0
  563. data/app/packs/src/decidim/editor/extensions/mention/index.js +66 -0
  564. data/app/packs/src/decidim/editor/extensions/ordered_list/index.js +188 -0
  565. data/app/packs/src/decidim/editor/extensions/video_embed/index.js +242 -0
  566. data/app/packs/src/decidim/editor/index.js +86 -0
  567. data/app/packs/src/decidim/editor/test/editor/create.test.js +38 -0
  568. data/app/packs/src/decidim/editor/test/extensions/bold.test.js +69 -0
  569. data/app/packs/src/decidim/editor/test/extensions/character_count.test.js +41 -0
  570. data/app/packs/src/decidim/editor/test/extensions/decidim_kit.test.js +110 -0
  571. data/app/packs/src/decidim/editor/test/extensions/dialog.test.js +32 -0
  572. data/app/packs/src/decidim/editor/test/extensions/emoji.test.js +35 -0
  573. data/app/packs/src/decidim/editor/test/extensions/hashtag.test.js +105 -0
  574. data/app/packs/src/decidim/editor/test/extensions/heading.test.js +56 -0
  575. data/app/packs/src/decidim/editor/test/extensions/image.test.js +294 -0
  576. data/app/packs/src/decidim/editor/test/extensions/indent.test.js +154 -0
  577. data/app/packs/src/decidim/editor/test/extensions/link.test.js +103 -0
  578. data/app/packs/src/decidim/editor/test/extensions/mention.test.js +129 -0
  579. data/app/packs/src/decidim/editor/test/extensions/ordered_list.test.js +219 -0
  580. data/app/packs/src/decidim/editor/test/extensions/video_embed.test.js +183 -0
  581. data/app/packs/src/decidim/editor/test/fixtures/editor_messages.js +57 -0
  582. data/app/packs/src/decidim/editor/test/fixtures/logo.png +0 -0
  583. data/app/packs/src/decidim/editor/test/fixtures/upload_templates.js +50 -0
  584. data/app/packs/src/decidim/editor/test/helpers.js +255 -0
  585. data/app/packs/src/decidim/editor/test/toolbar/basic.test.js +36 -0
  586. data/app/packs/src/decidim/editor/test/toolbar/content.test.js +37 -0
  587. data/app/packs/src/decidim/editor/test/toolbar/full.test.js +245 -0
  588. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic.js +23 -0
  589. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_block.js +45 -0
  590. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_formatting.js +17 -0
  591. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_indent.js +61 -0
  592. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_link.js +33 -0
  593. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_list.js +47 -0
  594. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_styling.js +95 -0
  595. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_content.js +25 -0
  596. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_content_styling.js +40 -0
  597. data/app/packs/src/decidim/editor/test/toolbar/shared/context.js +18 -0
  598. data/app/packs/src/decidim/editor/test/utilities/paste_transform.test.js +272 -0
  599. data/app/packs/src/decidim/editor/toolbar.js +263 -0
  600. data/app/packs/src/decidim/editor/utilities/file.js +3 -0
  601. data/app/packs/src/decidim/editor/utilities/html.js +53 -0
  602. data/app/packs/src/decidim/editor/utilities/paste_transform.js +251 -0
  603. data/app/packs/src/decidim/external_domain_warning.js +16 -23
  604. data/app/packs/src/decidim/external_domain_warning.test.js +59 -0
  605. data/app/packs/src/decidim/external_link.js +24 -56
  606. data/app/packs/src/decidim/external_link.test.js +8 -29
  607. data/app/packs/src/decidim/focus_guard.js +3 -1
  608. data/app/packs/src/decidim/form_filter.component_for_testing.js +1 -1
  609. data/app/packs/src/decidim/form_filter.js +12 -53
  610. data/app/packs/src/decidim/form_validator.js +1 -1
  611. data/app/packs/src/decidim/geocoding/attach_input.js +4 -1
  612. data/app/packs/src/decidim/geocoding/provider/here.js +17 -21
  613. data/app/packs/src/decidim/geocoding/provider/photon.js +1 -1
  614. data/app/packs/src/decidim/i18n.js +52 -0
  615. data/app/packs/src/decidim/i18n.test.js +64 -0
  616. data/app/packs/src/decidim/icon.js +13 -19
  617. data/app/packs/src/decidim/identity_selector_dialog.js +24 -51
  618. data/app/packs/src/decidim/index.js +159 -63
  619. data/app/packs/src/decidim/input_autojump.js +1 -1
  620. data/app/packs/src/decidim/input_character_counter.js +34 -38
  621. data/app/packs/src/decidim/input_emoji.js +130 -52
  622. data/app/packs/src/decidim/input_hashtags.js +6 -53
  623. data/app/packs/src/decidim/input_mentions.js +14 -59
  624. data/app/packs/src/decidim/input_multiple_mentions.js +10 -10
  625. data/app/packs/src/decidim/input_tags.js +12 -8
  626. data/app/packs/src/decidim/map/controller/markers.js +3 -3
  627. data/app/packs/src/decidim/map/controller.js +7 -4
  628. data/app/packs/src/decidim/map/factory.js +1 -3
  629. data/app/packs/src/decidim/map/legacy.js +1 -1
  630. data/app/packs/src/decidim/notifications.js +42 -30
  631. data/app/packs/src/decidim/password_toggler.js +104 -0
  632. data/app/packs/src/decidim/remote_modal.js +54 -0
  633. data/app/packs/src/decidim/scroll_to_last_child.js +14 -0
  634. data/app/packs/src/decidim/session_timeouter.js +3 -4
  635. data/app/packs/src/decidim/sw/loader.js +1 -1
  636. data/app/packs/src/decidim/sw/sw.js +1 -1
  637. data/app/packs/src/decidim/toggle.js +37 -0
  638. data/app/packs/src/decidim/tooltips.js +132 -0
  639. data/app/packs/src/decidim/user_registrations.js +10 -3
  640. data/app/packs/src/decidim/utilities/text.js +17 -0
  641. data/app/packs/src/decidim/vendor/jquery-tmpl.js +1 -1
  642. data/app/packs/src/decidim/vendor/leaflet-tilelayer-here.js +1 -1
  643. data/app/packs/src/decidim/vendor/tribute.js +3 -3
  644. data/app/packs/src/decidim/vizzs/areachart.js +7 -8
  645. data/app/packs/stylesheets/decidim/_accordion.scss +13 -0
  646. data/app/packs/stylesheets/decidim/_actions.scss +7 -0
  647. data/app/packs/stylesheets/decidim/_activity.scss +49 -0
  648. data/app/packs/stylesheets/decidim/_address.scss +25 -0
  649. data/app/packs/stylesheets/decidim/_author.scss +74 -0
  650. data/app/packs/stylesheets/decidim/_buttons.scss +100 -0
  651. data/app/packs/stylesheets/decidim/_callout.scss +55 -0
  652. data/app/packs/stylesheets/decidim/_cards.scss +186 -0
  653. data/app/packs/stylesheets/decidim/_content_blocks.scss +39 -0
  654. data/app/packs/stylesheets/decidim/_conversations.scss +122 -0
  655. data/app/packs/stylesheets/decidim/_cookies.scss +117 -0
  656. data/app/packs/stylesheets/decidim/_documents.scss +60 -0
  657. data/app/packs/stylesheets/decidim/_dropdown.scss +69 -0
  658. data/app/packs/stylesheets/decidim/_endorsers_list.scss +45 -0
  659. data/app/packs/stylesheets/decidim/_filters.scss +137 -0
  660. data/app/packs/stylesheets/decidim/_flash.scss +57 -0
  661. data/app/packs/stylesheets/decidim/_floating_help.scss +7 -0
  662. data/app/packs/stylesheets/decidim/_fonts.scss +70 -0
  663. data/app/packs/stylesheets/decidim/_footer.scss +59 -0
  664. data/app/packs/stylesheets/decidim/_forms.scss +199 -0
  665. data/app/packs/stylesheets/decidim/_header.scss +444 -0
  666. data/app/packs/stylesheets/decidim/_hero.scss +20 -0
  667. data/app/packs/stylesheets/decidim/_home.scss +105 -0
  668. data/app/packs/stylesheets/decidim/_labels.scss +26 -0
  669. data/app/packs/stylesheets/decidim/_layout.scss +107 -0
  670. data/app/packs/stylesheets/decidim/_login.scss +59 -0
  671. data/app/packs/stylesheets/decidim/_login_box.scss +31 -0
  672. data/app/packs/stylesheets/decidim/_metadata.scss +18 -0
  673. data/app/packs/stylesheets/decidim/_metrics.scss +70 -0
  674. data/app/packs/stylesheets/decidim/_modal.scss +45 -0
  675. data/app/packs/stylesheets/decidim/_modal_authorization.scss +21 -0
  676. data/app/packs/stylesheets/decidim/_modal_fingerprint.scss +17 -0
  677. data/app/packs/stylesheets/decidim/_modal_flag.scss +39 -0
  678. data/app/packs/stylesheets/decidim/_modal_identities.scss +23 -0
  679. data/app/packs/stylesheets/decidim/_modal_share.scss +28 -0
  680. data/app/packs/stylesheets/decidim/_modal_tos_refuse.scss +6 -0
  681. data/app/packs/stylesheets/decidim/_modal_update.scss +137 -0
  682. data/app/packs/stylesheets/decidim/_notifications.scss +35 -0
  683. data/app/packs/stylesheets/decidim/_omnipresent_banner.scss +7 -0
  684. data/app/packs/stylesheets/decidim/_order-by.scss +15 -0
  685. data/app/packs/stylesheets/decidim/_pages.scss +49 -0
  686. data/app/packs/stylesheets/decidim/_participatory_spaces.scss +201 -0
  687. data/app/packs/stylesheets/decidim/_photos.scss +53 -0
  688. data/app/packs/stylesheets/decidim/_profile.scss +258 -0
  689. data/app/packs/stylesheets/decidim/_progress-bar.scss +42 -0
  690. data/app/packs/stylesheets/decidim/_rich_text.scss +96 -0
  691. data/app/packs/stylesheets/decidim/_search.scss +17 -0
  692. data/app/packs/stylesheets/decidim/_spinner.scss +11 -0
  693. data/app/packs/stylesheets/decidim/_static-map.scss +15 -0
  694. data/app/packs/stylesheets/decidim/_statistics.scss +15 -0
  695. data/app/packs/stylesheets/decidim/_tabs_x.scss +20 -0
  696. data/app/packs/stylesheets/decidim/_tags.scss +11 -0
  697. data/app/packs/stylesheets/decidim/_toggle_switch.scss +77 -0
  698. data/app/packs/stylesheets/decidim/_tooltip.scss +69 -0
  699. data/app/packs/stylesheets/decidim/_tos.scss +7 -0
  700. data/app/packs/stylesheets/decidim/_typography.scss +80 -0
  701. data/app/packs/stylesheets/decidim/_versions.scss +63 -0
  702. data/app/packs/stylesheets/decidim/_vertical_tabs.scss +49 -0
  703. data/app/packs/stylesheets/decidim/_wizard_steps.scss +15 -0
  704. data/app/packs/stylesheets/decidim/application.scss +77 -3
  705. data/app/packs/stylesheets/decidim/decidim_application.scss +0 -2
  706. data/app/packs/stylesheets/decidim/editor.scss +204 -0
  707. data/app/packs/stylesheets/decidim/legacy/MarkerCluster.Default.scss +67 -0
  708. data/app/packs/stylesheets/decidim/legacy/MarkerCluster.scss +18 -0
  709. data/app/packs/stylesheets/decidim/{_variables.scss → legacy/_variables.scss} +8 -8
  710. data/app/packs/stylesheets/decidim/{conference-diploma.scss → legacy/conference-diploma.scss} +11 -11
  711. data/app/packs/stylesheets/decidim/{email.scss → legacy/email.scss} +312 -312
  712. data/app/packs/stylesheets/decidim/{plugins → legacy}/leaflet.scss +164 -140
  713. data/app/packs/stylesheets/decidim/map.scss +65 -3
  714. data/app/permissions/decidim/permissions.rb +2 -2
  715. data/app/presenters/decidim/admin_log/area_presenter.rb +2 -2
  716. data/app/presenters/decidim/admin_log/area_type_presenter.rb +2 -2
  717. data/app/presenters/decidim/admin_log/attachment_collection_presenter.rb +2 -2
  718. data/app/presenters/decidim/admin_log/attachment_presenter.rb +2 -2
  719. data/app/presenters/decidim/admin_log/category_presenter.rb +2 -2
  720. data/app/presenters/decidim/admin_log/component_presenter.rb +2 -2
  721. data/app/presenters/decidim/admin_log/contextual_help_section_presenter.rb +2 -2
  722. data/app/presenters/decidim/admin_log/impersonation_log_presenter.rb +2 -2
  723. data/app/presenters/decidim/admin_log/moderation_presenter.rb +2 -2
  724. data/app/presenters/decidim/admin_log/newsletter_presenter.rb +2 -2
  725. data/app/presenters/decidim/admin_log/oauth_application_presenter.rb +2 -2
  726. data/app/presenters/decidim/admin_log/organization_presenter.rb +2 -3
  727. data/app/presenters/decidim/admin_log/participatory_space_private_user_presenter.rb +2 -2
  728. data/app/presenters/decidim/admin_log/scope_presenter.rb +2 -2
  729. data/app/presenters/decidim/admin_log/scope_type_presenter.rb +2 -2
  730. data/app/presenters/decidim/admin_log/static_page_presenter.rb +2 -2
  731. data/app/presenters/decidim/admin_log/user_group_presenter.rb +2 -2
  732. data/app/presenters/decidim/admin_log/user_moderation_presenter.rb +2 -2
  733. data/app/presenters/decidim/admin_log/user_presenter.rb +2 -2
  734. data/app/presenters/decidim/area_presenter.rb +6 -0
  735. data/app/presenters/decidim/authorization_transfer_presenter.rb +57 -0
  736. data/app/presenters/decidim/breadcrumb_root_menu_item_presenter.rb +25 -0
  737. data/app/presenters/decidim/breadcrumb_root_menu_presenter.rb +18 -0
  738. data/app/presenters/decidim/footer_menu_presenter.rb +12 -0
  739. data/app/presenters/decidim/hashtag_presenter.rb +1 -1
  740. data/app/presenters/decidim/log/base_presenter.rb +13 -6
  741. data/app/presenters/decidim/log/diff_presenter.rb +9 -8
  742. data/app/presenters/decidim/log/resource_presenter.rb +1 -1
  743. data/app/presenters/decidim/log/space_presenter.rb +1 -1
  744. data/app/presenters/decidim/log/user_presenter.rb +3 -7
  745. data/app/presenters/decidim/log/value_types/default_presenter.rb +2 -2
  746. data/app/presenters/decidim/menu_item_presenter.rb +11 -3
  747. data/app/presenters/decidim/menu_presenter.rb +11 -3
  748. data/app/presenters/decidim/metric_charts_presenter.rb +25 -46
  749. data/app/presenters/decidim/nil_presenter.rb +4 -2
  750. data/app/presenters/decidim/notification_presenter.rb +1 -1
  751. data/app/presenters/decidim/notification_to_mailer_presenter.rb +5 -5
  752. data/app/presenters/decidim/notifications_digest_presenter.rb +1 -1
  753. data/app/presenters/decidim/official_author_presenter.rb +4 -0
  754. data/app/presenters/decidim/participatory_space_manifest_presenter.rb +24 -0
  755. data/app/presenters/decidim/resource_presenter.rb +18 -1
  756. data/app/presenters/decidim/stats_presenter.rb +54 -0
  757. data/app/presenters/decidim/user_group_presenter.rb +4 -0
  758. data/app/presenters/decidim/user_presenter.rb +4 -2
  759. data/app/queries/decidim/last_activity.rb +1 -1
  760. data/app/queries/decidim/metric_manage.rb +1 -1
  761. data/app/queries/decidim/participatory_processes_with_user_role.rb +2 -2
  762. data/app/queries/decidim/participatory_space_last_activity.rb +18 -0
  763. data/app/queries/decidim/public_activities.rb +1 -1
  764. data/app/queries/decidim/public_components.rb +2 -2
  765. data/app/queries/decidim/similar_emendations.rb +1 -1
  766. data/app/resolvers/decidim/core/metric_resolver.rb +1 -1
  767. data/app/scrubbers/decidim/admin_input_scrubber.rb +1 -1
  768. data/app/scrubbers/decidim/newsletter_scrubber.rb +1 -1
  769. data/app/serializers/decidim/exporters/serializer.rb +2 -2
  770. data/app/services/decidim/action_authorizer.rb +3 -3
  771. data/app/services/decidim/action_logger.rb +11 -11
  772. data/app/services/decidim/base_diff_renderer.rb +5 -5
  773. data/app/services/decidim/content_blocks_creator.rb +89 -0
  774. data/app/services/decidim/email_notification_generator.rb +3 -3
  775. data/app/services/decidim/engine_resolver.rb +2 -2
  776. data/app/services/decidim/events_manager.rb +6 -6
  777. data/app/services/decidim/log/diff_changeset_calculator.rb +2 -2
  778. data/app/services/decidim/log_reference_generator.rb +31 -0
  779. data/app/services/decidim/notification_generator.rb +3 -3
  780. data/app/services/decidim/notification_generator_for_recipient.rb +2 -2
  781. data/app/services/decidim/open_data_exporter.rb +3 -3
  782. data/app/services/decidim/send_push_notification.rb +5 -5
  783. data/app/services/decidim/static_map_generator.rb +4 -4
  784. data/app/uploaders/decidim/application_uploader.rb +1 -1
  785. data/app/uploaders/decidim/avatar_uploader.rb +2 -2
  786. data/app/uploaders/decidim/cw/application_uploader.rb +1 -1
  787. data/app/uploaders/decidim/image_uploader.rb +1 -1
  788. data/app/uploaders/decidim/organization_favicon_uploader.rb +15 -2
  789. data/app/validators/etiquette_validator.rb +1 -1
  790. data/app/validators/geocoding_validator.rb +1 -1
  791. data/app/validators/password_validator.rb +16 -12
  792. data/app/validators/uploader_image_dimensions_validator.rb +3 -3
  793. data/app/views/decidim/account/_account_notification.js.erb +4 -18
  794. data/app/views/decidim/account/_delete_modal.html.erb +17 -0
  795. data/app/views/decidim/account/_old_password_field.html.erb +15 -0
  796. data/app/views/decidim/account/_password_fields.html.erb +13 -2
  797. data/app/views/decidim/account/cancel_email_change.js.erb +1 -1
  798. data/app/views/decidim/account/delete.html.erb +23 -30
  799. data/app/views/decidim/account/show.html.erb +48 -33
  800. data/app/views/decidim/amendments/_edit_form_fields.html.erb +1 -3
  801. data/app/views/decidim/amendments/_wizard_header.html.erb +17 -0
  802. data/app/views/decidim/amendments/compare_draft.html.erb +14 -17
  803. data/app/views/decidim/amendments/edit_draft.html.erb +23 -25
  804. data/app/views/decidim/amendments/new.html.erb +21 -24
  805. data/app/views/decidim/amendments/preview_draft.html.erb +24 -25
  806. data/app/views/decidim/amendments/review.html.erb +26 -37
  807. data/app/views/decidim/application/_collection.html.erb +18 -15
  808. data/app/views/decidim/application/_document.html.erb +23 -0
  809. data/app/views/decidim/application/_documents.html.erb +13 -0
  810. data/app/views/decidim/authorization_modals/show.html.erb +1 -5
  811. data/app/views/decidim/devise/confirmations/new.html.erb +19 -25
  812. data/app/views/decidim/devise/invitations/edit.html.erb +42 -69
  813. data/app/views/decidim/devise/omniauth_registrations/new.html.erb +34 -45
  814. data/app/views/decidim/devise/passwords/edit.html.erb +23 -32
  815. data/app/views/decidim/devise/passwords/new.html.erb +20 -24
  816. data/app/views/decidim/devise/registrations/new.html.erb +59 -83
  817. data/app/views/decidim/devise/sessions/new.html.erb +52 -53
  818. data/app/views/decidim/devise/shared/_links.html.erb +5 -15
  819. data/app/views/decidim/devise/shared/_login_boxes.html.erb +28 -0
  820. data/app/views/decidim/devise/shared/_newsletter_modal.html.erb +15 -23
  821. data/app/views/decidim/devise/shared/_omniauth_buttons.html.erb +13 -19
  822. data/app/views/decidim/devise/unlocks/new.html.erb +20 -26
  823. data/app/views/decidim/doorkeeper/authorizations/new.html.erb +53 -57
  824. data/app/views/decidim/download_your_data/show.html.erb +15 -7
  825. data/app/views/decidim/endorsements/_identity.html.erb +4 -9
  826. data/app/views/decidim/endorsements/identities.html.erb +16 -10
  827. data/app/views/decidim/endorsements/update_buttons_and_counters.js.erb +24 -17
  828. data/app/views/decidim/errors/internal_server_error.html.erb +32 -8
  829. data/app/views/decidim/errors/not_found.html.erb +15 -11
  830. data/app/views/decidim/follows/update_button.js.erb +8 -1
  831. data/app/views/decidim/gamification/badges/index.html.erb +5 -7
  832. data/app/views/decidim/group_invites/index.html.erb +20 -24
  833. data/app/views/decidim/groups/_form.html.erb +15 -24
  834. data/app/views/decidim/groups/edit.html.erb +13 -22
  835. data/app/views/decidim/groups/new.html.erb +16 -24
  836. data/app/views/decidim/homepage/show.html.erb +6 -4
  837. data/app/views/decidim/last_activities/_activities.html.erb +4 -11
  838. data/app/views/decidim/last_activities/index.html.erb +8 -13
  839. data/app/views/decidim/last_activities/index.js.erb +7 -2
  840. data/app/views/decidim/links/_modal.html.erb +18 -19
  841. data/app/views/decidim/links/new.html.erb +17 -21
  842. data/app/views/decidim/links/new.js.erb +22 -6
  843. data/app/views/decidim/manifests/show.json.erb +2 -2
  844. data/app/views/decidim/messaging/conversations/_add_conversation_users.html.erb +18 -22
  845. data/app/views/decidim/messaging/conversations/_conversation.html.erb +39 -53
  846. data/app/views/decidim/messaging/conversations/_messages.html.erb +15 -19
  847. data/app/views/decidim/messaging/conversations/_new_conversation_button.html.erb +20 -32
  848. data/app/views/decidim/messaging/conversations/_reply.html.erb +7 -10
  849. data/app/views/decidim/messaging/conversations/_reply_form.html.erb +9 -0
  850. data/app/views/decidim/messaging/conversations/_show.html.erb +29 -35
  851. data/app/views/decidim/messaging/conversations/_start.html.erb +9 -14
  852. data/app/views/decidim/messaging/conversations/create.js.erb +1 -1
  853. data/app/views/decidim/messaging/conversations/error.js.erb +1 -1
  854. data/app/views/decidim/messaging/conversations/index.html.erb +17 -51
  855. data/app/views/decidim/messaging/conversations/new.html.erb +1 -2
  856. data/app/views/decidim/messaging/conversations/show.html.erb +3 -9
  857. data/app/views/decidim/newsletters/show.html.erb +1 -1
  858. data/app/views/decidim/newsletters_opt_in_mailer/notify.html.erb +1 -1
  859. data/app/views/decidim/notifications/index.html.erb +15 -4
  860. data/app/views/decidim/notifications_digest_mailer/digest_mail.erb +2 -2
  861. data/app/views/decidim/notifications_settings/show.html.erb +169 -70
  862. data/app/views/decidim/own_user_groups/index.html.erb +9 -29
  863. data/app/views/decidim/pages/_standalone.html.erb +17 -15
  864. data/app/views/decidim/pages/_tabbed.html.erb +38 -38
  865. data/app/views/decidim/pages/index.html.erb +48 -64
  866. data/app/views/decidim/pages/show.html.erb +9 -9
  867. data/app/views/decidim/profiles/show.html.erb +9 -1
  868. data/app/views/decidim/reported_mailer/report.html.erb +1 -1
  869. data/app/views/decidim/scopes/picker.html.erb +7 -4
  870. data/app/views/decidim/searches/_count.html.erb +19 -28
  871. data/app/views/decidim/searches/_filters.html.erb +41 -25
  872. data/app/views/decidim/searches/_resources_filter_block.html.erb +3 -3
  873. data/app/views/decidim/searches/index.html.erb +18 -12
  874. data/app/views/decidim/searches/index.js.erb +1 -7
  875. data/app/views/decidim/shared/_authorization_modal.html.erb +1 -1
  876. data/app/views/decidim/shared/_component_announcement.html.erb +5 -4
  877. data/app/views/decidim/shared/_confirm_modal.html.erb +15 -16
  878. data/app/views/decidim/shared/_extended_navigation_bar.html.erb +2 -2
  879. data/app/views/decidim/shared/_filters.html.erb +42 -0
  880. data/app/views/decidim/shared/_floating_help.html.erb +13 -27
  881. data/app/views/decidim/shared/_follow_button.html.erb +2 -1
  882. data/app/views/decidim/shared/_login_modal.html.erb +46 -50
  883. data/app/views/decidim/shared/_orders.html.erb +12 -26
  884. data/app/views/decidim/shared/_results_per_page.html.erb +24 -26
  885. data/app/views/decidim/shared/_share_modal.html.erb +21 -44
  886. data/app/views/decidim/shared/_static_map.html.erb +4 -17
  887. data/app/views/decidim/shared/_tags.html.erb +1 -1
  888. data/app/views/decidim/shared/filters/_check_boxes_tree.html.erb +12 -0
  889. data/app/views/decidim/shared/filters/_collection.html.erb +18 -0
  890. data/app/views/decidim/shared/filters/_dropdown_label.html.erb +46 -0
  891. data/app/views/decidim/user_activities/index.html.erb +15 -7
  892. data/app/views/decidim/user_activities/index.js.erb +1 -3
  893. data/app/views/decidim/user_conversations/index.html.erb +3 -3
  894. data/app/views/decidim/user_conversations/show.html.erb +3 -3
  895. data/app/views/decidim/user_interests/_scopes.html.erb +21 -16
  896. data/app/views/decidim/user_interests/show.html.erb +20 -13
  897. data/app/views/decidim/user_update_mailer/notify.html.erb +9 -0
  898. data/app/views/kaminari/decidim/_gap.html.erb +1 -1
  899. data/app/views/kaminari/decidim/_next_page.html.erb +8 -7
  900. data/app/views/kaminari/decidim/_page.html.erb +2 -2
  901. data/app/views/kaminari/decidim/_paginator.html.erb +3 -3
  902. data/app/views/kaminari/decidim/_prev_page.html.erb +8 -7
  903. data/app/views/layouts/decidim/_admin_links.html.erb +11 -2
  904. data/app/views/layouts/decidim/_application.html.erb +6 -1
  905. data/app/views/layouts/decidim/_cors.html.erb +8 -4
  906. data/app/views/layouts/decidim/_data_consent_warning.html.erb +2 -2
  907. data/app/views/layouts/decidim/_decidim_javascript.html.erb +6 -3
  908. data/app/views/layouts/decidim/_head.html.erb +7 -3
  909. data/app/views/layouts/decidim/_impersonation_warning.html.erb +7 -5
  910. data/app/views/layouts/decidim/_js_configuration.html.erb +7 -7
  911. data/app/views/layouts/decidim/_meta_tags_config.html.erb +6 -6
  912. data/app/views/layouts/decidim/_offline_banner.html.erb +3 -3
  913. data/app/views/layouts/decidim/_omnipresent_banner.html.erb +10 -12
  914. data/app/views/layouts/decidim/_organization_colors.html.erb +2 -3
  915. data/app/views/layouts/decidim/_timeout_modal.html.erb +26 -18
  916. data/app/views/layouts/decidim/_user_menu.html.erb +1 -1
  917. data/app/views/layouts/decidim/_wrapper.html.erb +19 -102
  918. data/app/views/layouts/decidim/footer/_main.html.erb +20 -0
  919. data/app/views/layouts/decidim/footer/_main_intro.html.erb +9 -0
  920. data/app/views/layouts/decidim/footer/_main_language_chooser.html.erb +26 -0
  921. data/app/views/layouts/decidim/footer/_main_legal.html.erb +9 -0
  922. data/app/views/layouts/decidim/footer/_main_links.html.erb +27 -0
  923. data/app/views/layouts/decidim/footer/_main_social_media_links.html.erb +42 -0
  924. data/app/views/layouts/decidim/footer/_mini.html.erb +18 -0
  925. data/app/views/layouts/decidim/header/_follow_space_menu_bar_button.html.erb +7 -0
  926. data/app/views/layouts/decidim/header/_main.html.erb +35 -0
  927. data/app/views/layouts/decidim/header/_main_links_desktop.html.erb +54 -0
  928. data/app/views/layouts/decidim/header/_main_links_dropdown.html.erb +45 -0
  929. data/app/views/layouts/decidim/header/_main_links_mobile.html.erb +36 -0
  930. data/app/views/layouts/decidim/header/_main_links_mobile_account.html.erb +32 -0
  931. data/app/views/layouts/decidim/header/_main_links_mobile_search.html.erb +34 -0
  932. data/app/views/layouts/decidim/header/_main_search.html.erb +15 -0
  933. data/app/views/layouts/decidim/header/_menu.html.erb +20 -0
  934. data/app/views/layouts/decidim/header/_menu_breadcrumb_desktop.html.erb +14 -0
  935. data/app/views/layouts/decidim/header/_menu_breadcrumb_items.html.erb +30 -0
  936. data/app/views/layouts/decidim/header/_menu_breadcrumb_main_dropdown.html.erb +16 -0
  937. data/app/views/layouts/decidim/header/_menu_breadcrumb_main_dropdown_top_left.html.erb +2 -0
  938. data/app/views/layouts/decidim/header/_menu_breadcrumb_mobile_tablet.html.erb +33 -0
  939. data/app/views/layouts/decidim/mailer.html.erb +16 -12
  940. data/app/views/layouts/decidim/newsletter_base.html.erb +2 -2
  941. data/app/views/layouts/decidim/shared/_layout_center.html.erb +15 -0
  942. data/app/views/layouts/decidim/shared/_layout_item.html.erb +35 -0
  943. data/app/views/layouts/decidim/shared/_layout_two_col.html.erb +12 -0
  944. data/app/views/layouts/decidim/shared/_layout_user_profile.html.erb +27 -0
  945. data/app/views/layouts/decidim/shared/_linked_resource.html.erb +6 -0
  946. data/app/views/layouts/decidim/user_profile.html.erb +1 -32
  947. data/config/assets.rb +1 -0
  948. data/config/brakeman.ignore +4 -116
  949. data/config/initializers/devise.rb +10 -10
  950. data/config/locales/ar.yml +95 -335
  951. data/config/locales/bg.yml +1 -276
  952. data/config/locales/ca.yml +414 -263
  953. data/config/locales/cs.yml +422 -273
  954. data/config/locales/de.yml +424 -271
  955. data/config/locales/el.yml +104 -265
  956. data/config/locales/en.yml +444 -293
  957. data/config/locales/eo.yml +0 -16
  958. data/config/locales/es-MX.yml +417 -267
  959. data/config/locales/es-PY.yml +420 -270
  960. data/config/locales/es.yml +406 -255
  961. data/config/locales/eu.yml +794 -505
  962. data/config/locales/fi-plain.yml +392 -243
  963. data/config/locales/fi.yml +404 -255
  964. data/config/locales/fr-CA.yml +412 -256
  965. data/config/locales/fr.yml +416 -260
  966. data/config/locales/ga-IE.yml +1 -58
  967. data/config/locales/gl.yml +1 -255
  968. data/config/locales/hu.yml +135 -281
  969. data/config/locales/id-ID.yml +0 -237
  970. data/config/locales/is-IS.yml +0 -73
  971. data/config/locales/it.yml +1 -312
  972. data/config/locales/ja.yml +415 -277
  973. data/config/locales/kaa.yml +4 -5
  974. data/config/locales/lb.yml +1 -303
  975. data/config/locales/lt.yml +408 -264
  976. data/config/locales/lv.yml +1 -282
  977. data/config/locales/nl.yml +5 -308
  978. data/config/locales/no.yml +2 -317
  979. data/config/locales/pl.yml +4 -308
  980. data/config/locales/pt-BR.yml +32 -303
  981. data/config/locales/pt.yml +1 -303
  982. data/config/locales/ro-RO.yml +43 -309
  983. data/config/locales/ru.yml +0 -154
  984. data/config/locales/sk.yml +1 -251
  985. data/config/locales/sl.yml +1 -10
  986. data/config/locales/sq-AL.yml +1 -0
  987. data/config/locales/sr-CS.yml +0 -20
  988. data/config/locales/sv.yml +183 -318
  989. data/config/locales/th-TH.yml +1 -0
  990. data/config/locales/tr-TR.yml +38 -295
  991. data/config/locales/uk.yml +0 -124
  992. data/config/locales/zh-CN.yml +1 -281
  993. data/config/locales/zh-TW.yml +161 -216
  994. data/config/routes.rb +6 -5
  995. data/db/migrate/20180508111640_add_tos_version_to_organization.rb +2 -2
  996. data/db/migrate/20180730071851_add_core_content_blocks.rb +1 -1
  997. data/db/migrate/20180810092428_move_organization_fields_to_hero_content_block.rb +1 -1
  998. data/db/migrate/20181001124950_move_users_groups_to_users_table.rb +1 -1
  999. data/db/migrate/20181022090732_add_columns_to_pages.rb +1 -1
  1000. data/db/migrate/20190412131728_fix_user_names.rb +1 -1
  1001. data/db/migrate/20201128130723_add_allow_public_access_to_static_pages.rb +1 -1
  1002. data/db/migrate/20220629194812_create_decidim_authorization_transfers.rb +20 -0
  1003. data/db/migrate/20230322101707_rename_terms_of_use.rb +23 -0
  1004. data/db/migrate/20230409123300_add_content_policy_to_decidim_organizations.rb +7 -0
  1005. data/db/migrate/20230427105700_change_states_on_amendments.rb +34 -0
  1006. data/db/migrate/20230427105701_change_states_on_reminder_records.rb +33 -0
  1007. data/db/migrate/20231027142329_change_default_value_for_decidim_endorsements.rb +11 -0
  1008. data/db/migrate/20231123111229_remove_official_img_header.rb +11 -0
  1009. data/db/seeds/Exampledocument.pdf +0 -0
  1010. data/db/seeds/city.jpeg +0 -0
  1011. data/db/seeds/city2.jpeg +0 -0
  1012. data/db/seeds/logo.png +0 -0
  1013. data/db/seeds.rb +2 -222
  1014. data/lib/decidim/acts_as_tree.rb +1 -1
  1015. data/lib/decidim/amendable.rb +2 -2
  1016. data/lib/decidim/api/functions/component_finder_base.rb +1 -1
  1017. data/lib/decidim/api/functions/component_list.rb +1 -1
  1018. data/lib/decidim/api/functions/component_list_base.rb +1 -1
  1019. data/lib/decidim/api/functions/needs_api_default_order.rb +1 -1
  1020. data/lib/decidim/api/functions/participatory_space_list_base.rb +10 -1
  1021. data/lib/decidim/api/input_filters/category_input_filter.rb +1 -1
  1022. data/lib/decidim/api/interfaces/categories_container_interface.rb +1 -1
  1023. data/lib/decidim/api/interfaces/participatory_space_interface.rb +7 -1
  1024. data/lib/decidim/api/types/attachment_type.rb +3 -1
  1025. data/lib/decidim/api/types/participatory_space_manifest_type.rb +19 -0
  1026. data/lib/decidim/api/types/quantifiable_translated_field_type.rb +12 -0
  1027. data/lib/decidim/api/types/translated_field_type.rb +1 -1
  1028. data/lib/decidim/asset_router/pipeline.rb +1 -1
  1029. data/lib/decidim/asset_router/storage.rb +20 -1
  1030. data/lib/decidim/assets/tailwind/instance.rb +57 -0
  1031. data/lib/decidim/assets/tailwind/tailwind.config.js.erb +80 -0
  1032. data/lib/decidim/assets/tailwind.rb +16 -0
  1033. data/lib/decidim/assets.rb +7 -0
  1034. data/lib/decidim/attribute_object/nested_validator.rb +1 -1
  1035. data/lib/decidim/attribute_object/type_resolver.rb +4 -4
  1036. data/lib/decidim/authorable.rb +2 -2
  1037. data/lib/decidim/block_registry.rb +46 -0
  1038. data/lib/decidim/carrier_wave_migrator_service.rb +28 -36
  1039. data/lib/decidim/coauthorable.rb +4 -4
  1040. data/lib/decidim/command.rb +23 -4
  1041. data/lib/decidim/component_manifest.rb +7 -4
  1042. data/lib/decidim/components/namer.rb +1 -1
  1043. data/lib/decidim/content_block_manifest.rb +2 -1
  1044. data/lib/decidim/content_block_registry.rb +5 -4
  1045. data/lib/decidim/content_blocks/has_related_components.rb +51 -0
  1046. data/lib/decidim/content_blocks.rb +7 -0
  1047. data/lib/decidim/content_parsers/base_parser.rb +2 -0
  1048. data/lib/decidim/content_parsers/hashtag_parser.rb +17 -17
  1049. data/lib/decidim/content_parsers/inline_images_parser.rb +3 -3
  1050. data/lib/decidim/content_parsers/resource_parser.rb +2 -2
  1051. data/lib/decidim/content_parsers/tag_parser.rb +63 -0
  1052. data/lib/decidim/content_parsers/user_group_parser.rb +4 -29
  1053. data/lib/decidim/content_parsers/user_parser.rb +29 -20
  1054. data/lib/decidim/content_parsers.rb +1 -0
  1055. data/lib/decidim/content_processor.rb +26 -1
  1056. data/lib/decidim/content_renderers/base_renderer.rb +2 -0
  1057. data/lib/decidim/content_renderers/hashtag_renderer.rb +6 -3
  1058. data/lib/decidim/content_renderers/link_renderer.rb +15 -5
  1059. data/lib/decidim/content_renderers/user_group_renderer.rb +8 -9
  1060. data/lib/decidim/content_renderers/user_renderer.rb +33 -5
  1061. data/lib/decidim/content_security_policy.rb +132 -0
  1062. data/lib/decidim/core/api.rb +2 -0
  1063. data/lib/decidim/core/content_blocks/registry_manager.rb +188 -0
  1064. data/lib/decidim/core/engine.rb +321 -199
  1065. data/lib/decidim/core/menu.rb +68 -0
  1066. data/lib/decidim/core/seeds.rb +247 -0
  1067. data/lib/decidim/core/test/factories.rb +71 -33
  1068. data/lib/decidim/core/test/shared_examples/active_support_examples.rb +14 -0
  1069. data/lib/decidim/core/test/shared_examples/admin_log_presenter_examples.rb +3 -3
  1070. data/lib/decidim/core/test/shared_examples/amendable/amendment_event_examples.rb +20 -0
  1071. data/lib/decidim/core/test/shared_examples/amendable/amendment_form_examples.rb +4 -4
  1072. data/lib/decidim/core/test/shared_examples/amendable/amendment_rejected_event_examples.rb +6 -25
  1073. data/lib/decidim/core/test/shared_examples/amendable/create_amendment_draft_examples.rb +1 -1
  1074. data/lib/decidim/core/test/shared_examples/announcements_examples.rb +3 -3
  1075. data/lib/decidim/core/test/shared_examples/assembly_announcements_examples.rb +8 -4
  1076. data/lib/decidim/core/test/shared_examples/authorable.rb +2 -2
  1077. data/lib/decidim/core/test/shared_examples/authorable_interface_examples.rb +3 -3
  1078. data/lib/decidim/core/test/shared_examples/authorization_shared_context.rb +34 -0
  1079. data/lib/decidim/core/test/shared_examples/categorizable_interface_examples.rb +1 -1
  1080. data/lib/decidim/core/test/shared_examples/coauthorable.rb +2 -2
  1081. data/lib/decidim/core/test/shared_examples/coauthorable_interface_examples.rb +3 -3
  1082. data/lib/decidim/core/test/shared_examples/comments_examples.rb +248 -151
  1083. data/lib/decidim/core/test/shared_examples/comments_reports_examples.rb +11 -21
  1084. data/lib/decidim/core/test/shared_examples/controller_render_views.rb +2 -2
  1085. data/lib/decidim/core/test/shared_examples/conversations_examples.rb +1 -1
  1086. data/lib/decidim/core/test/shared_examples/counts_commentators_as_newsletter_participants.rb +1 -1
  1087. data/lib/decidim/core/test/shared_examples/digest_mail_examples.rb +3 -3
  1088. data/lib/decidim/core/test/shared_examples/edit_link_shared_examples.rb +8 -8
  1089. data/lib/decidim/core/test/shared_examples/editor_shared_examples.rb +13 -2
  1090. data/lib/decidim/core/test/shared_examples/endorsable.rb +5 -5
  1091. data/lib/decidim/core/test/shared_examples/endorsements_controller_shared_context.rb +1 -1
  1092. data/lib/decidim/core/test/shared_examples/errors.rb +3 -1
  1093. data/lib/decidim/core/test/shared_examples/fingerprint_examples.rb +2 -2
  1094. data/lib/decidim/core/test/shared_examples/follows_examples.rb +10 -7
  1095. data/lib/decidim/core/test/shared_examples/form_builder_examples.rb +15 -0
  1096. data/lib/decidim/core/test/shared_examples/has_attachment_collections.rb +15 -21
  1097. data/lib/decidim/core/test/shared_examples/has_attachments.rb +59 -12
  1098. data/lib/decidim/core/test/shared_examples/has_contextual_help.rb +11 -5
  1099. data/lib/decidim/core/test/shared_examples/has_private_users.rb +1 -1
  1100. data/lib/decidim/core/test/shared_examples/has_space_in_mcell_examples.rb +0 -1
  1101. data/lib/decidim/core/test/shared_examples/hideable_resource_examples.rb +43 -0
  1102. data/lib/decidim/core/test/shared_examples/localised_email.rb +2 -2
  1103. data/lib/decidim/core/test/shared_examples/map_examples.rb +21 -15
  1104. data/lib/decidim/core/test/shared_examples/paginated_resource_examples.rb +7 -7
  1105. data/lib/decidim/core/test/shared_examples/participatory_space_dropdown_metadata_cell_examples.rb +99 -0
  1106. data/lib/decidim/core/test/shared_examples/permissions.rb +8 -8
  1107. data/lib/decidim/core/test/shared_examples/preview_component_with_share_token_examples.rb +3 -3
  1108. data/lib/decidim/core/test/shared_examples/process_announcements_examples.rb +12 -6
  1109. data/lib/decidim/core/test/shared_examples/reportable.rb +4 -4
  1110. data/lib/decidim/core/test/shared_examples/reports_examples.rb +114 -31
  1111. data/lib/decidim/core/test/shared_examples/resource_endorsed_event_examples.rb +3 -3
  1112. data/lib/decidim/core/test/shared_examples/resource_search_examples.rb +17 -17
  1113. data/lib/decidim/core/test/shared_examples/scopable_interface_examples.rb +1 -1
  1114. data/lib/decidim/core/test/shared_examples/scopable_resource_examples.rb +2 -2
  1115. data/lib/decidim/core/test/shared_examples/scope_helper_examples.rb +6 -6
  1116. data/lib/decidim/core/test/shared_examples/searchable_participatory_space_examples.rb +9 -9
  1117. data/lib/decidim/core/test/shared_examples/searchable_resources_shared_context.rb +2 -2
  1118. data/lib/decidim/core/test/shared_examples/searchable_results_examples.rb +22 -21
  1119. data/lib/decidim/core/test/shared_examples/share_link_examples.rb +8 -15
  1120. data/lib/decidim/core/test/shared_examples/simple_event.rb +35 -6
  1121. data/lib/decidim/core/test/shared_examples/static_pages_examples.rb +3 -3
  1122. data/lib/decidim/core/test/shared_examples/statistics_cell_examples.rb +13 -0
  1123. data/lib/decidim/core/test/shared_examples/system_endorse_resource_examples.rb +24 -36
  1124. data/lib/decidim/core/test/shared_examples/translated_event_examples.rb +1 -1
  1125. data/lib/decidim/core/test/shared_examples/uncommentable_component_examples.rb +3 -3
  1126. data/lib/decidim/core/test/shared_examples/with_endorsable_permissions_examples.rb +1 -1
  1127. data/lib/decidim/core/test.rb +5 -4
  1128. data/lib/decidim/core/version.rb +1 -1
  1129. data/lib/decidim/core.rb +113 -29
  1130. data/lib/decidim/dependency_resolver.rb +4 -4
  1131. data/lib/decidim/download_your_data_serializers/download_your_data_conversation_serializer.rb +1 -1
  1132. data/lib/decidim/endorsable.rb +2 -2
  1133. data/lib/decidim/event_recorder.rb +1 -1
  1134. data/lib/decidim/events/email_event.rb +4 -4
  1135. data/lib/decidim/events/machine_translated_event.rb +1 -1
  1136. data/lib/decidim/events/notification_event.rb +2 -2
  1137. data/lib/decidim/events/simple_event.rb +8 -8
  1138. data/lib/decidim/exporters/csv.rb +1 -1
  1139. data/lib/decidim/exporters/pdf.rb +5 -5
  1140. data/lib/decidim/exporters.rb +10 -1
  1141. data/lib/decidim/faker/localized.rb +1 -1
  1142. data/lib/decidim/filter_form_builder.rb +43 -76
  1143. data/lib/decidim/fingerprintable.rb +1 -1
  1144. data/lib/decidim/form_builder.rb +131 -86
  1145. data/lib/decidim/gamification/badge.rb +4 -4
  1146. data/lib/decidim/gamification/badge_earned_event.rb +1 -1
  1147. data/lib/decidim/gamification/badge_registry.rb +3 -3
  1148. data/lib/decidim/gamification/badge_scorer.rb +6 -6
  1149. data/lib/decidim/gamification.rb +3 -3
  1150. data/lib/decidim/geocodable.rb +3 -3
  1151. data/lib/decidim/has_category.rb +2 -2
  1152. data/lib/decidim/has_reference.rb +1 -1
  1153. data/lib/decidim/icon_registry.rb +54 -0
  1154. data/lib/decidim/importers/import_manifest.rb +3 -3
  1155. data/lib/decidim/map/autocomplete.rb +1 -10
  1156. data/lib/decidim/map/dynamic_map.rb +6 -9
  1157. data/lib/decidim/map/frontend.rb +2 -12
  1158. data/lib/decidim/map/provider/autocomplete/here.rb +3 -3
  1159. data/lib/decidim/map/provider/autocomplete/osm.rb +3 -3
  1160. data/lib/decidim/map/provider/dynamic_map/here.rb +5 -4
  1161. data/lib/decidim/map/provider/static_map/here.rb +3 -3
  1162. data/lib/decidim/map/provider/static_map/osm.rb +3 -3
  1163. data/lib/decidim/map/static_map.rb +19 -16
  1164. data/lib/decidim/menu.rb +2 -0
  1165. data/lib/decidim/menu_registry.rb +2 -2
  1166. data/lib/decidim/metric_manifest.rb +1 -1
  1167. data/lib/decidim/metric_operation.rb +3 -3
  1168. data/lib/decidim/metric_registry.rb +3 -3
  1169. data/lib/decidim/middleware/current_organization.rb +1 -1
  1170. data/lib/decidim/middleware/static_dispatcher.rb +31 -0
  1171. data/lib/decidim/moderation_tools.rb +91 -0
  1172. data/lib/decidim/nicknamizable.rb +2 -2
  1173. data/lib/decidim/organization_settings.rb +5 -6
  1174. data/lib/decidim/paddable.rb +1 -1
  1175. data/lib/decidim/participable.rb +1 -1
  1176. data/lib/decidim/participatory_space_manifest.rb +15 -7
  1177. data/lib/decidim/participatory_space_resourceable.rb +2 -2
  1178. data/lib/decidim/participatory_space_user.rb +50 -0
  1179. data/lib/decidim/processes_file_locally.rb +1 -1
  1180. data/lib/decidim/publicable.rb +1 -3
  1181. data/lib/decidim/query.rb +2 -2
  1182. data/lib/decidim/query_extensions.rb +7 -7
  1183. data/lib/decidim/reminder_manifest.rb +3 -3
  1184. data/lib/decidim/reminder_registry.rb +2 -2
  1185. data/lib/decidim/reportable.rb +15 -1
  1186. data/lib/decidim/resource_manifest.rb +6 -3
  1187. data/lib/decidim/resourceable.rb +5 -5
  1188. data/lib/decidim/scopable.rb +1 -1
  1189. data/lib/decidim/searchable.rb +18 -5
  1190. data/lib/decidim/seeds.rb +95 -0
  1191. data/lib/decidim/settings_manifest.rb +9 -2
  1192. data/lib/decidim/social_share_service_manifest.rb +77 -0
  1193. data/lib/decidim/stats_registry.rb +2 -2
  1194. data/lib/decidim/translatable_attributes.rb +2 -2
  1195. data/lib/decidim/translatable_resource.rb +3 -3
  1196. data/lib/decidim/upgrade/wysiwyg_migrator.rb +429 -0
  1197. data/lib/decidim/upgrade.rb +7 -0
  1198. data/lib/decidim/user_reportable.rb +1 -1
  1199. data/lib/decidim/view_hooks.rb +2 -2
  1200. data/lib/decidim/view_model.rb +28 -3
  1201. data/lib/decidim/webpacker/configuration.rb +4 -3
  1202. data/lib/decidim/webpacker/postcss.config.js +4 -2
  1203. data/lib/decidim/webpacker/runner.rb +6 -1
  1204. data/lib/decidim/webpacker/{webpacker.yml → shakapacker.yml} +26 -2
  1205. data/lib/decidim/webpacker/webpack/custom.js +25 -9
  1206. data/lib/decidim/webpacker/webpack/webpack.config.js +10 -0
  1207. data/lib/decidim/webpacker.rb +1 -1
  1208. data/lib/devise/models/decidim_validatable.rb +4 -5
  1209. data/lib/gem_overrides/{webpacker → shakapacker}/runner.rb +2 -2
  1210. data/lib/tasks/decidim_active_storage_migration_tasks.rake +18 -13
  1211. data/lib/tasks/decidim_content_blocks_tasks.rake +48 -0
  1212. data/lib/tasks/decidim_mailers_tasks.rake +1 -1
  1213. data/lib/tasks/decidim_procfile.rake +36 -0
  1214. data/lib/tasks/decidim_pwa_tasks.rake +2 -2
  1215. data/lib/tasks/decidim_robots.rake +15 -0
  1216. data/lib/tasks/decidim_tasks.rake +9 -1
  1217. data/lib/tasks/decidim_webpacker_tasks.rake +49 -11
  1218. data/lib/tasks/upgrade/decidim_deduplicate_endorsements.rake +53 -0
  1219. data/lib/tasks/upgrade/decidim_fix_short_url_resolver.rake +22 -0
  1220. data/lib/tasks/upgrade/decidim_migrate_wysiwyg_content.rake +89 -0
  1221. metadata +509 -340
  1222. data/app/cells/decidim/address/details.erb +0 -7
  1223. data/app/cells/decidim/amendable/amenders_list_cell.rb +0 -33
  1224. data/app/cells/decidim/author/profile.erb +0 -9
  1225. data/app/cells/decidim/author/profile_inline.erb +0 -39
  1226. data/app/cells/decidim/card_m/badge.erb +0 -1
  1227. data/app/cells/decidim/card_m/comments_counter.erb +0 -3
  1228. data/app/cells/decidim/card_m/header.erb +0 -17
  1229. data/app/cells/decidim/card_m/image.erb +0 -5
  1230. data/app/cells/decidim/card_m/label.erb +0 -3
  1231. data/app/cells/decidim/card_m/show.erb +0 -23
  1232. data/app/cells/decidim/card_m/status.erb +0 -9
  1233. data/app/cells/decidim/card_m/tags.erb +0 -0
  1234. data/app/cells/decidim/card_m/top.erb +0 -7
  1235. data/app/cells/decidim/card_m_cell.rb +0 -156
  1236. data/app/cells/decidim/collapsible_list/show.erb +0 -28
  1237. data/app/cells/decidim/collapsible_list_cell.rb +0 -69
  1238. data/app/cells/decidim/content_blocks/highlighted_elements/elements.erb +0 -0
  1239. data/app/cells/decidim/content_blocks/highlighted_elements/heading.erb +0 -0
  1240. data/app/cells/decidim/content_blocks/highlighted_elements/show.erb +0 -4
  1241. data/app/cells/decidim/content_blocks/metrics/show.erb +0 -13
  1242. data/app/cells/decidim/content_blocks/metrics_cell.rb +0 -11
  1243. data/app/cells/decidim/fingerprint/show.erb +0 -22
  1244. data/app/cells/decidim/fingerprint_cell.rb +0 -19
  1245. data/app/cells/decidim/profile/user_group_tabs.erb +0 -10
  1246. data/app/cells/decidim/profile/user_tabs.erb +0 -16
  1247. data/app/cells/decidim/statistic/homepage.erb +0 -9
  1248. data/app/cells/decidim/tags/category.erb +0 -1
  1249. data/app/cells/decidim/tags/scope.erb +0 -1
  1250. data/app/cells/decidim/user_conversations/add_conversation_users.erb +0 -26
  1251. data/app/cells/decidim/user_conversations/conversation_item.erb +0 -38
  1252. data/app/cells/decidim/user_group_admin_membership_profile/footer.erb +0 -29
  1253. data/app/cells/decidim/user_group_admin_membership_profile_cell.rb +0 -14
  1254. data/app/cells/decidim/user_group_membership_profile/tags.erb +0 -1
  1255. data/app/cells/decidim/user_group_membership_profile_cell.rb +0 -8
  1256. data/app/cells/decidim/user_profile/footer.erb +0 -5
  1257. data/app/cells/decidim/user_profile/header.erb +0 -5
  1258. data/app/cells/decidim/user_profile/unlinked_user_data.erb +0 -16
  1259. data/app/cells/decidim/user_profile/user_data.erb +0 -16
  1260. data/app/cells/decidim/version_author/show.erb +0 -18
  1261. data/app/controllers/concerns/decidim/http_caching_disabler.rb +0 -21
  1262. data/app/controllers/decidim/group_admins_controller.rb +0 -44
  1263. data/app/controllers/decidim/user_timeline_controller.rb +0 -56
  1264. data/app/controllers/decidim/widgets_controller.rb +0 -34
  1265. data/app/helpers/decidim/layout_helper.rb.orig +0 -225
  1266. data/app/helpers/decidim/widget_urls_helper.rb +0 -13
  1267. data/app/jobs/decidim/block_user_job.rb +0 -11
  1268. data/app/packs/entrypoints/decidim_email.scss +0 -1
  1269. data/app/packs/fonts/decidim/Roboto-Regular.eot +0 -0
  1270. data/app/packs/fonts/decidim/Roboto-Regular.svg +0 -1
  1271. data/app/packs/fonts/decidim/Roboto-Regular.ttf +0 -0
  1272. data/app/packs/fonts/decidim/Roboto-Regular.woff +0 -0
  1273. data/app/packs/fonts/decidim/Roboto-Regular.woff2 +0 -0
  1274. data/app/packs/fonts/decidim/Source_Sans_Pro_400.eot +0 -0
  1275. data/app/packs/fonts/decidim/Source_Sans_Pro_400.svg +0 -1
  1276. data/app/packs/fonts/decidim/Source_Sans_Pro_400.ttf +0 -0
  1277. data/app/packs/fonts/decidim/Source_Sans_Pro_400.woff +0 -0
  1278. data/app/packs/fonts/decidim/Source_Sans_Pro_400.woff2 +0 -0
  1279. data/app/packs/fonts/decidim/Source_Sans_Pro_600.eot +0 -0
  1280. data/app/packs/fonts/decidim/Source_Sans_Pro_600.svg +0 -1
  1281. data/app/packs/fonts/decidim/Source_Sans_Pro_600.ttf +0 -0
  1282. data/app/packs/fonts/decidim/Source_Sans_Pro_600.woff +0 -0
  1283. data/app/packs/fonts/decidim/Source_Sans_Pro_600.woff2 +0 -0
  1284. data/app/packs/fonts/decidim/Source_Sans_Pro_900.eot +0 -0
  1285. data/app/packs/fonts/decidim/Source_Sans_Pro_900.svg +0 -1
  1286. data/app/packs/fonts/decidim/Source_Sans_Pro_900.ttf +0 -0
  1287. data/app/packs/fonts/decidim/Source_Sans_Pro_900.woff +0 -0
  1288. data/app/packs/fonts/decidim/Source_Sans_Pro_900.woff2 +0 -0
  1289. data/app/packs/images/decidim/vendor/social-share-button/delicious.svg +0 -13
  1290. data/app/packs/images/decidim/vendor/social-share-button/google_plus.svg +0 -10
  1291. data/app/packs/images/decidim/vendor/social-share-button/qq.svg +0 -8
  1292. data/app/packs/images/decidim/vendor/social-share-button/weibo.svg +0 -10
  1293. data/app/packs/src/decidim/ajax_modals.js +0 -20
  1294. data/app/packs/src/decidim/conferences.js +0 -15
  1295. data/app/packs/src/decidim/conversations.js +0 -17
  1296. data/app/packs/src/decidim/data_picker.js +0 -272
  1297. data/app/packs/src/decidim/dialog_mode.js +0 -55
  1298. data/app/packs/src/decidim/dialog_mode.test.js +0 -181
  1299. data/app/packs/src/decidim/diff_mode_dropdown.js +0 -49
  1300. data/app/packs/src/decidim/dropdowns_menus.js +0 -30
  1301. data/app/packs/src/decidim/editor/attribute_diff.js +0 -28
  1302. data/app/packs/src/decidim/editor/clipboard_override.js +0 -147
  1303. data/app/packs/src/decidim/editor/clipboard_utilities.js +0 -119
  1304. data/app/packs/src/decidim/editor/history_override.js +0 -110
  1305. data/app/packs/src/decidim/editor/linebreak_module.js +0 -175
  1306. data/app/packs/src/decidim/editor/modified_backspace_offset1.js +0 -96
  1307. data/app/packs/src/decidim/editor/modified_backspace_offset_any.js +0 -46
  1308. data/app/packs/src/decidim/editor/modified_enter.js +0 -116
  1309. data/app/packs/src/decidim/editor.js +0 -151
  1310. data/app/packs/src/decidim/floating_help.js +0 -47
  1311. data/app/packs/src/decidim/form_datepicker.js +0 -21
  1312. data/app/packs/src/decidim/form_filter.component.test.js +0 -299
  1313. data/app/packs/src/decidim/foundation-datepicker/js/locales/foundation-datepicker.lb.js +0 -13
  1314. data/app/packs/src/decidim/foundation_datepicker_locales.js +0 -67
  1315. data/app/packs/src/decidim/map/icon.js +0 -31
  1316. data/app/packs/src/decidim/map/svg-icon.js +0 -248
  1317. data/app/packs/src/decidim/represent_user_group.js +0 -18
  1318. data/app/packs/src/decidim/start_conversation_dialog.js +0 -13
  1319. data/app/packs/src/decidim/tooltip_keep_on_hover.js +0 -18
  1320. data/app/packs/src/decidim/vendor/foundation-datepicker.js +0 -1431
  1321. data/app/packs/src/decidim/vendor/image-resize.min.js +0 -3
  1322. data/app/packs/src/decidim/vendor/image-upload.min.js +0 -8
  1323. data/app/packs/src/decidim/vendor/social-share-button.js +0 -174
  1324. data/app/packs/src/decidim/vizzs/linechart.js +0 -268
  1325. data/app/packs/src/decidim/vizzs/rowchart.js +0 -328
  1326. data/app/packs/stylesheets/decidim/_decidim-settings.scss +0 -7
  1327. data/app/packs/stylesheets/decidim/_decidim.scss +0 -19
  1328. data/app/packs/stylesheets/decidim/_editor.scss +0 -142
  1329. data/app/packs/stylesheets/decidim/_properties.scss +0 -25
  1330. data/app/packs/stylesheets/decidim/extras/_add_comments.scss +0 -9
  1331. data/app/packs/stylesheets/decidim/extras/_announcement.scss +0 -3
  1332. data/app/packs/stylesheets/decidim/extras/_collection-sort-controls.scss +0 -5
  1333. data/app/packs/stylesheets/decidim/extras/_embed.scss +0 -33
  1334. data/app/packs/stylesheets/decidim/extras/_external-links.scss +0 -44
  1335. data/app/packs/stylesheets/decidim/extras/_extras.scss +0 -15
  1336. data/app/packs/stylesheets/decidim/extras/_impersonation-bar.scss +0 -26
  1337. data/app/packs/stylesheets/decidim/extras/_label-required.scss +0 -12
  1338. data/app/packs/stylesheets/decidim/extras/_leaflet.scss +0 -17
  1339. data/app/packs/stylesheets/decidim/extras/_meeting-registrations.scss +0 -25
  1340. data/app/packs/stylesheets/decidim/extras/_proposal_form.scss +0 -9
  1341. data/app/packs/stylesheets/decidim/extras/_quill.scss +0 -13
  1342. data/app/packs/stylesheets/decidim/extras/_reference.scss +0 -3
  1343. data/app/packs/stylesheets/decidim/extras/_results-per-page.scss +0 -74
  1344. data/app/packs/stylesheets/decidim/extras/_social_share.scss +0 -39
  1345. data/app/packs/stylesheets/decidim/extras/_status-labels.scss +0 -3
  1346. data/app/packs/stylesheets/decidim/layouts/_highlighted_banner.scss +0 -34
  1347. data/app/packs/stylesheets/decidim/layouts/_home.scss +0 -371
  1348. data/app/packs/stylesheets/decidim/layouts/_layouts.scss +0 -5
  1349. data/app/packs/stylesheets/decidim/layouts/_logo.scss +0 -26
  1350. data/app/packs/stylesheets/decidim/layouts/_user.scss +0 -64
  1351. data/app/packs/stylesheets/decidim/layouts/_view.scss +0 -21
  1352. data/app/packs/stylesheets/decidim/modules/_address.scss +0 -31
  1353. data/app/packs/stylesheets/decidim/modules/_author-avatar.scss +0 -171
  1354. data/app/packs/stylesheets/decidim/modules/_autocomplete.scss +0 -99
  1355. data/app/packs/stylesheets/decidim/modules/_badges.scss +0 -116
  1356. data/app/packs/stylesheets/decidim/modules/_block-banner.scss +0 -39
  1357. data/app/packs/stylesheets/decidim/modules/_buttons.scss +0 -531
  1358. data/app/packs/stylesheets/decidim/modules/_callout.scss +0 -33
  1359. data/app/packs/stylesheets/decidim/modules/_card-grid.scss +0 -25
  1360. data/app/packs/stylesheets/decidim/modules/_cards.scss +0 -1124
  1361. data/app/packs/stylesheets/decidim/modules/_collapsible-list.scss +0 -60
  1362. data/app/packs/stylesheets/decidim/modules/_comments.scss +0 -307
  1363. data/app/packs/stylesheets/decidim/modules/_conference-diploma.scss +0 -75
  1364. data/app/packs/stylesheets/decidim/modules/_conference-media.scss +0 -46
  1365. data/app/packs/stylesheets/decidim/modules/_conference-nav.scss +0 -31
  1366. data/app/packs/stylesheets/decidim/modules/_conference-programme.scss +0 -109
  1367. data/app/packs/stylesheets/decidim/modules/_conference-registration.scss +0 -34
  1368. data/app/packs/stylesheets/decidim/modules/_conference-speaker.scss +0 -87
  1369. data/app/packs/stylesheets/decidim/modules/_confirm.scss +0 -5
  1370. data/app/packs/stylesheets/decidim/modules/_conversation.scss +0 -113
  1371. data/app/packs/stylesheets/decidim/modules/_data-consent.scss +0 -115
  1372. data/app/packs/stylesheets/decidim/modules/_data-picker.scss +0 -190
  1373. data/app/packs/stylesheets/decidim/modules/_datepicker.scss +0 -224
  1374. data/app/packs/stylesheets/decidim/modules/_definition-data.scss +0 -95
  1375. data/app/packs/stylesheets/decidim/modules/_docs-manager.scss +0 -15
  1376. data/app/packs/stylesheets/decidim/modules/_dropdown_menu.scss +0 -9
  1377. data/app/packs/stylesheets/decidim/modules/_extra.scss +0 -50
  1378. data/app/packs/stylesheets/decidim/modules/_filter-tags.scss +0 -27
  1379. data/app/packs/stylesheets/decidim/modules/_filters.scss +0 -193
  1380. data/app/packs/stylesheets/decidim/modules/_fingerprint.scss +0 -8
  1381. data/app/packs/stylesheets/decidim/modules/_flag.scss +0 -10
  1382. data/app/packs/stylesheets/decidim/modules/_floating-helper.scss +0 -118
  1383. data/app/packs/stylesheets/decidim/modules/_footer.scss +0 -115
  1384. data/app/packs/stylesheets/decidim/modules/_forms.scss +0 -157
  1385. data/app/packs/stylesheets/decidim/modules/_help.scss +0 -58
  1386. data/app/packs/stylesheets/decidim/modules/_horizontal-tabs.scss +0 -114
  1387. data/app/packs/stylesheets/decidim/modules/_hover-section.scss +0 -29
  1388. data/app/packs/stylesheets/decidim/modules/_icons.scss +0 -56
  1389. data/app/packs/stylesheets/decidim/modules/_inline-filters.scss +0 -66
  1390. data/app/packs/stylesheets/decidim/modules/_input-gallery.scss +0 -35
  1391. data/app/packs/stylesheets/decidim/modules/_input-mentions.scss +0 -142
  1392. data/app/packs/stylesheets/decidim/modules/_input-multiple-mentions.scss +0 -32
  1393. data/app/packs/stylesheets/decidim/modules/_input-tags.scss +0 -55
  1394. data/app/packs/stylesheets/decidim/modules/_layout.scss +0 -82
  1395. data/app/packs/stylesheets/decidim/modules/_list-docs.scss +0 -33
  1396. data/app/packs/stylesheets/decidim/modules/_list-request.scss +0 -16
  1397. data/app/packs/stylesheets/decidim/modules/_loading-spinner.scss +0 -46
  1398. data/app/packs/stylesheets/decidim/modules/_main-container.scss +0 -72
  1399. data/app/packs/stylesheets/decidim/modules/_map.scss +0 -130
  1400. data/app/packs/stylesheets/decidim/modules/_margins.scss +0 -60
  1401. data/app/packs/stylesheets/decidim/modules/_messages.scss +0 -36
  1402. data/app/packs/stylesheets/decidim/modules/_modules.scss +0 -94
  1403. data/app/packs/stylesheets/decidim/modules/_navbar.scss +0 -592
  1404. data/app/packs/stylesheets/decidim/modules/_notification.scss +0 -5
  1405. data/app/packs/stylesheets/decidim/modules/_omnipresent_banner.scss +0 -26
  1406. data/app/packs/stylesheets/decidim/modules/_opinion-toggle.scss +0 -55
  1407. data/app/packs/stylesheets/decidim/modules/_order-by.scss +0 -82
  1408. data/app/packs/stylesheets/decidim/modules/_pagination.scss +0 -6
  1409. data/app/packs/stylesheets/decidim/modules/_process-header.scss +0 -95
  1410. data/app/packs/stylesheets/decidim/modules/_process-info.scss +0 -52
  1411. data/app/packs/stylesheets/decidim/modules/_process-nav.scss +0 -182
  1412. data/app/packs/stylesheets/decidim/modules/_process-phase.scss +0 -173
  1413. data/app/packs/stylesheets/decidim/modules/_progress-bar.scss +0 -73
  1414. data/app/packs/stylesheets/decidim/modules/_reference.scss +0 -5
  1415. data/app/packs/stylesheets/decidim/modules/_reveal.scss +0 -111
  1416. data/app/packs/stylesheets/decidim/modules/_share.scss +0 -34
  1417. data/app/packs/stylesheets/decidim/modules/_signup.scss +0 -119
  1418. data/app/packs/stylesheets/decidim/modules/_space-stats.scss +0 -53
  1419. data/app/packs/stylesheets/decidim/modules/_static-pages.scss +0 -51
  1420. data/app/packs/stylesheets/decidim/modules/_statistics.scss +0 -53
  1421. data/app/packs/stylesheets/decidim/modules/_status-labels.scss +0 -33
  1422. data/app/packs/stylesheets/decidim/modules/_sticky.scss +0 -5
  1423. data/app/packs/stylesheets/decidim/modules/_tags.scss +0 -41
  1424. data/app/packs/stylesheets/decidim/modules/_timeline.scss +0 -181
  1425. data/app/packs/stylesheets/decidim/modules/_title-action.scss +0 -29
  1426. data/app/packs/stylesheets/decidim/modules/_toggle.scss +0 -9
  1427. data/app/packs/stylesheets/decidim/modules/_typography.scss +0 -309
  1428. data/app/packs/stylesheets/decidim/modules/_upload_modal.scss +0 -139
  1429. data/app/packs/stylesheets/decidim/modules/_user-form.scss +0 -15
  1430. data/app/packs/stylesheets/decidim/modules/_versions.scss +0 -74
  1431. data/app/packs/stylesheets/decidim/modules/_video.scss +0 -18
  1432. data/app/packs/stylesheets/decidim/modules/_wizard-steps.scss +0 -45
  1433. data/app/packs/stylesheets/decidim/plugins/MarkerCluster.Default.scss +0 -67
  1434. data/app/packs/stylesheets/decidim/plugins/MarkerCluster.scss +0 -15
  1435. data/app/packs/stylesheets/decidim/utils/_fontface.scss +0 -32
  1436. data/app/packs/stylesheets/decidim/utils/_helpers.scss +0 -159
  1437. data/app/packs/stylesheets/decidim/utils/_keyframes.scss +0 -21
  1438. data/app/packs/stylesheets/decidim/utils/_mixins.scss +0 -252
  1439. data/app/packs/stylesheets/decidim/utils/_settings.scss +0 -890
  1440. data/app/packs/stylesheets/decidim/utils/_toggle-expand.scss +0 -23
  1441. data/app/packs/stylesheets/decidim/vendor/_social_share_button.scss +0 -135
  1442. data/app/packs/stylesheets/decidim/vizzs/_areachart.scss +0 -66
  1443. data/app/packs/stylesheets/decidim/vizzs/_chart-tooltip.scss +0 -42
  1444. data/app/packs/stylesheets/decidim/vizzs/_linechart.scss +0 -114
  1445. data/app/packs/stylesheets/decidim/vizzs/_orgchart.scss +0 -54
  1446. data/app/packs/stylesheets/decidim/vizzs/_rowchart.scss +0 -76
  1447. data/app/packs/stylesheets/decidim/vizzs/_vizzs.scss +0 -5
  1448. data/app/packs/stylesheets/decidim/vizzs.scss +0 -8
  1449. data/app/packs/stylesheets/foundation-overrides/components/_button-group.scss +0 -321
  1450. data/app/uploaders/decidim/official_image_header_uploader.rb +0 -10
  1451. data/app/views/decidim/amendments/_similar_emendation.html.erb +0 -24
  1452. data/app/views/decidim/application/_attachments.erb +0 -12
  1453. data/app/views/decidim/application/_document.erb +0 -19
  1454. data/app/views/decidim/application/_documents.erb +0 -15
  1455. data/app/views/decidim/application/_photos.erb +0 -16
  1456. data/app/views/decidim/authorization_modals/_content.html.erb +0 -45
  1457. data/app/views/decidim/devise/registrations/new.html.erb.orig +0 -231
  1458. data/app/views/decidim/devise/shared/_omniauth_buttons_mini.html.erb +0 -23
  1459. data/app/views/decidim/group_admins/index.html.erb +0 -20
  1460. data/app/views/decidim/group_members/index.html.erb +0 -21
  1461. data/app/views/decidim/links/_invalid_url_modal.html.erb +0 -17
  1462. data/app/views/decidim/links/_warning.html.erb +0 -4
  1463. data/app/views/decidim/links/invalid_url.js.erb +0 -24
  1464. data/app/views/decidim/profiles/_followers.html.erb +0 -5
  1465. data/app/views/decidim/profiles/_following.html.erb +0 -5
  1466. data/app/views/decidim/profiles/_notifications.html.erb +0 -0
  1467. data/app/views/decidim/profiles/_user_follow.erb +0 -32
  1468. data/app/views/decidim/searches/_filters_small_view.html.erb +0 -18
  1469. data/app/views/decidim/shared/_address_details.html.erb +0 -7
  1470. data/app/views/decidim/shared/_check_boxes_tree.html.erb +0 -56
  1471. data/app/views/decidim/shared/_embed_modal.html.erb +0 -22
  1472. data/app/views/decidim/shared/_filter_form_help.erb +0 -8
  1473. data/app/views/decidim/shared/_private_participatory_space.html.erb +0 -5
  1474. data/app/views/decidim/shared/participatory_space_filters/_filters.html.erb +0 -16
  1475. data/app/views/decidim/shared/participatory_space_filters/_filters_small_view.html.erb +0 -19
  1476. data/app/views/decidim/shared/participatory_space_filters/_show.html.erb +0 -9
  1477. data/app/views/decidim/user_timeline/index.html.erb +0 -8
  1478. data/app/views/decidim/user_timeline/index.js.erb +0 -14
  1479. data/app/views/decidim/widgets/show.html.erb +0 -4
  1480. data/app/views/decidim/widgets/show.js.erb +0 -32
  1481. data/app/views/kaminari/decidim/_first_page.html.erb +0 -14
  1482. data/app/views/kaminari/decidim/_last_page.html.erb +0 -14
  1483. data/app/views/layouts/decidim/_language_chooser.html.erb +0 -26
  1484. data/app/views/layouts/decidim/_main_footer.html.erb +0 -31
  1485. data/app/views/layouts/decidim/_mini_footer.html.erb +0 -21
  1486. data/app/views/layouts/decidim/_social_media_links.html.erb +0 -44
  1487. data/app/views/layouts/decidim/_topbar_search.html.erb +0 -18
  1488. data/app/views/layouts/decidim/widget.html.erb +0 -34
  1489. data/config/environment.rb +0 -0
  1490. data/lib/decidim/core/test/shared_examples/amendable/amendment_accepted_event_examples.rb +0 -42
  1491. data/lib/decidim/core/test/shared_examples/back_to_list_button_examples.rb +0 -17
  1492. data/lib/decidim/core/test/shared_examples/embed_resource_examples.rb +0 -49
  1493. data/lib/decidim/webpacker/thread_safe_compiler.rb +0 -30
  1494. data/lib/decidim/webpacker/webpack/base.js +0 -6
  1495. data/lib/decidim/webpacker/webpack/development.js +0 -7
  1496. data/lib/decidim/webpacker/webpack/production.js +0 -7
  1497. data/lib/decidim/webpacker/webpack/test.js +0 -7
  1498. /data/app/cells/decidim/{card_m/data.erb → card_l/extra_data.erb} +0 -0
  1499. /data/app/cells/decidim/{card_m/footer.erb → content_blocks/base/content.erb} +0 -0
  1500. /data/app/{forms → validators}/translatable_presence_validator.rb +0 -0
  1501. /data/app/{forms → validators}/url_validator.rb +0 -0
@@ -1,1431 +0,0 @@
1
- /* eslint-disable */
2
-
3
- /* =========================================================
4
- * foundation-datepicker.js
5
- * Copyright 2015 Peter Beno, najlepsiwebdesigner@gmail.com, @benopeter
6
- * project website http://foundation-datepicker.peterbeno.com
7
- * ========================================================= */
8
-
9
- // This file is a modified version of the original file
10
- // See
11
- // - https://github.com/decidim/decidim/pull/1207
12
- // - https://github.com/decidim/decidim/pull/2512
13
- // - https://github.com/decidim/decidim/pull/3515
14
-
15
- !(function($) {
16
-
17
- function UTCDate() {
18
- return new Date(Date.UTC(...arguments));
19
- }
20
-
21
- function UTCToday() {
22
- let today = new Date();
23
- return UTCDate(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate());
24
- }
25
-
26
- let Datepicker = function(element, options) {
27
- let that = this;
28
-
29
- this.element = $(element);
30
- this.autoShow = (options.autoShow == undefined ? true : options.autoShow);
31
- this.appendTo = options.appendTo || "body";
32
- this.closeButton = options.closeButton;
33
- this.language = options.language || this.element.data("date-language") || "en";
34
- this.language = this.language in dates ? this.language : this.language.split("-")[0]; // Check if "de-DE" style date is available, if not language should fallback to 2 letter code eg "de"
35
- this.language = this.language in dates ? this.language : "en";
36
- this.isRTL = dates[this.language].rtl || false;
37
- this.format = DPGlobal.parseFormat(options.format || this.element.data("date-format") || dates[this.language].format || "mm/dd/yyyy");
38
- this.formatText = options.format || this.element.data("date-format") || dates[this.language].format || "mm/dd/yyyy";
39
- this.isInline = false;
40
- this.isInput = this.element.is("input");
41
- this.component = this.element.is(".date") ? this.element.find(".prefix, .postfix") : false;
42
- this.hasInput = this.component && this.element.find("input").length;
43
- this.disableDblClickSelection = options.disableDblClickSelection;
44
- this.onRender = options.onRender || function() {};
45
- if (this.component && this.component.length === 0) {
46
- this.component = false;
47
- }
48
- this.linkField = options.linkField || this.element.data("link-field") || false;
49
- this.linkFormat = DPGlobal.parseFormat(options.linkFormat || this.element.data("link-format") || "yyyy-mm-dd hh:ii:ss");
50
- this.minuteStep = options.minuteStep || this.element.data("minute-step") || 5;
51
- this.pickerPosition = options.pickerPosition || this.element.data("picker-position") || "bottom-right";
52
- this.initialDate = options.initialDate || null;
53
- this.faCSSprefix = options.faCSSprefix || "fa";
54
- this.leftArrow = options.leftArrow || `<i class="${this.faCSSprefix} ${this.faCSSprefix}-chevron-left fi-arrow-left"/>`;
55
- this.rightArrow = options.rightArrow || `<i class="${this.faCSSprefix} ${this.faCSSprefix}-chevron-right fi-arrow-right"/>`;
56
- this.closeIcon = options.closeIcon || `<i class="${this.faCSSprefix} ${this.faCSSprefix}-remove ${this.faCSSprefix}-times fi-x"></i>`;
57
-
58
-
59
- this.minView = 0;
60
- if ("minView" in options) {
61
- this.minView = options.minView;
62
- } else if ("minView" in this.element.data()) {
63
- this.minView = this.element.data("min-view");
64
- }
65
- this.minView = DPGlobal.convertViewMode(this.minView);
66
-
67
- this.maxView = DPGlobal.modes.length - 1;
68
- if ("maxView" in options) {
69
- this.maxView = options.maxView;
70
- } else if ("maxView" in this.element.data()) {
71
- this.maxView = this.element.data("max-view");
72
- }
73
- this.maxView = DPGlobal.convertViewMode(this.maxView);
74
-
75
- this.startViewMode = "month";
76
- if ("startView" in options) {
77
- this.startViewMode = options.startView;
78
- } else if ("startView" in this.element.data()) {
79
- this.startViewMode = this.element.data("start-view");
80
- }
81
- this.startViewMode = DPGlobal.convertViewMode(this.startViewMode);
82
- this.viewMode = this.startViewMode;
83
-
84
- if (!("minView" in options) && !("maxView" in options) && !(this.element.data("min-view")) && !(this.element.data("max-view"))) {
85
- this.pickTime = false;
86
- if ("pickTime" in options) {
87
- this.pickTime = options.pickTime;
88
- }
89
- if (this.pickTime == true) {
90
- this.minView = 0;
91
- this.maxView = 4;
92
- } else {
93
- this.minView = 2;
94
- this.maxView = 4;
95
- }
96
- }
97
-
98
- this.forceParse = true;
99
- if ("forceParse" in options) {
100
- this.forceParse = options.forceParse;
101
- } else if ("dateForceParse" in this.element.data()) {
102
- this.forceParse = this.element.data("date-force-parse");
103
- }
104
-
105
-
106
- this.picker = $(DPGlobal.template(this.leftArrow, this.rightArrow, this.closeIcon)).
107
- appendTo(this.isInline ? this.element : this.appendTo).
108
- on({
109
- click: $.proxy(this.click, this),
110
- mousedown: $.proxy(this.mousedown, this)
111
- });
112
- if (this.closeButton) {
113
- this.picker.find("a.datepicker-close").show();
114
- } else {
115
- this.picker.find("a.datepicker-close").hide();
116
- }
117
-
118
- if (this.isInline) {
119
- this.picker.addClass("datepicker-inline");
120
- } else {
121
- this.picker.addClass("datepicker-dropdown dropdown-menu");
122
- }
123
- if (this.isRTL) {
124
- this.picker.addClass("datepicker-rtl");
125
-
126
- this.picker.find(".date-switch").each(function() {
127
- $(this).parent().prepend($(this).siblings(".next"));
128
- $(this).parent().append($(this).siblings(".prev"));
129
- })
130
- this.picker.find(".prev, .next").toggleClass("prev next");
131
-
132
- }
133
- $(document).on("mousedown", function(e) {
134
- if (that.isInput && e.target === that.element[0]) {
135
- return;
136
- }
137
-
138
- // Clicked outside the datepicker, hide it
139
- if ($(e.target).closest(".datepicker.datepicker-inline, .datepicker.datepicker-dropdown").length === 0) {
140
- that.hide();
141
- }
142
- });
143
-
144
- this.autoclose = true;
145
- if ("autoclose" in options) {
146
- this.autoclose = options.autoclose;
147
- } else if ("dateAutoclose" in this.element.data()) {
148
- this.autoclose = this.element.data("date-autoclose");
149
- }
150
-
151
- this.keyboardNavigation = true;
152
- if ("keyboardNavigation" in options) {
153
- this.keyboardNavigation = options.keyboardNavigation;
154
- } else if ("dateKeyboardNavigation" in this.element.data()) {
155
- this.keyboardNavigation = this.element.data("date-keyboard-navigation");
156
- }
157
-
158
- this.todayBtn = (options.todayBtn || this.element.data("date-today-btn") || false);
159
- this.todayHighlight = (options.todayHighlight || this.element.data("date-today-highlight") || false);
160
-
161
- this.calendarWeeks = false;
162
- if ("calendarWeeks" in options) {
163
- this.calendarWeeks = options.calendarWeeks;
164
- } else if ("dateCalendarWeeks" in this.element.data()) {
165
- this.calendarWeeks = this.element.data("date-calendar-weeks");
166
- }
167
- if (this.calendarWeeks)
168
- {this.picker.find("tfoot th.today").
169
- attr("colspan", function(i, val) {
170
- return parseInt(val) + 1;
171
- });}
172
-
173
- this.weekStart = ((options.weekStart || this.element.data("date-weekstart") || dates[this.language].weekStart || 0) % 7);
174
- this.weekEnd = ((this.weekStart + 6) % 7);
175
- this.startDate = -Infinity;
176
- this.endDate = Infinity;
177
- this.daysOfWeekDisabled = [];
178
- this.datesDisabled = [];
179
- this.setStartDate(options.startDate || this.element.data("date-startdate"));
180
- this.setEndDate(options.endDate || this.element.data("date-enddate"));
181
- this.setDaysOfWeekDisabled(options.daysOfWeekDisabled || this.element.data("date-days-of-week-disabled"));
182
- this.setDatesDisabled(options.datesDisabled || this.element.data("dates-disabled"));
183
-
184
- if (this.initialDate != null) {
185
- this.date = this.viewDate = DPGlobal.parseDate(this.initialDate, this.format, this.language);
186
- this.setValue();
187
- }
188
-
189
- this.fillDow();
190
- this.fillMonths();
191
- this.update();
192
-
193
- this.showMode();
194
-
195
- if (this.isInline) {
196
- this.show();
197
- }
198
-
199
- this._attachEvents();
200
- };
201
-
202
- Datepicker.prototype = {
203
- constructor: Datepicker,
204
-
205
- _events: [],
206
- _attachEvents: function() {
207
- this._detachEvents();
208
- if (this.isInput) { // single input
209
- if (!this.keyboardNavigation) {
210
- this._events = [
211
- [this.element, {
212
- focus: (this.autoShow) ? $.proxy(this.show, this) : function() {}
213
- }]
214
- ];
215
- } else {
216
- this._events = [
217
- [this.element, {
218
- focus: (this.autoShow) ? $.proxy(this.show, this) : function() {},
219
- keyup: $.proxy(this.update, this),
220
- keydown: $.proxy(this.keydown, this),
221
- click: (this.element.attr("readonly")) ? $.proxy(this.show, this) : function() {}
222
- }]
223
- ];
224
- }
225
- }
226
- else if (this.component && this.hasInput) { // component: input + button
227
- this._events = [
228
- // For components that are not readonly, allow keyboard nav
229
- [this.element.find("input"), {
230
- focus: (this.autoShow) ? $.proxy(this.show, this) : function() {},
231
- keyup: $.proxy(this.update, this),
232
- keydown: $.proxy(this.keydown, this)
233
- }],
234
- [this.component, {
235
- click: $.proxy(this.show, this)
236
- }]
237
- ];
238
- } else if (this.element.is("div")) { // inline datepicker
239
- this.isInline = true;
240
- } else {
241
- this._events = [
242
- [this.element, {
243
- click: $.proxy(this.show, this)
244
- }]
245
- ];
246
- }
247
-
248
- if (this.disableDblClickSelection) {
249
- this._events[this._events.length] = [
250
- this.element, {
251
- dblclick: function(e) {
252
- e.preventDefault();
253
- e.stopPropagation();
254
- $(this).blur()
255
- }
256
- }
257
- ];
258
- }
259
-
260
- for (var el, ev, i = 0; i < this._events.length; i++) {
261
- el = this._events[i][0];
262
- ev = this._events[i][1];
263
- el.on(ev);
264
- }
265
- },
266
- _detachEvents: function() {
267
- for (var el, ev, i = 0; i < this._events.length; i++) {
268
- el = this._events[i][0];
269
- ev = this._events[i][1];
270
- el.off(ev);
271
- }
272
- this._events = [];
273
- },
274
-
275
- show: function(e) {
276
- this.picker.show();
277
- this.height = this.component ? this.component.outerHeight() : this.element.outerHeight();
278
- this.update();
279
- this.place();
280
- $(window).on("resize", $.proxy(this.place, this));
281
- if (e) {
282
- e.stopPropagation();
283
- e.preventDefault();
284
- }
285
- this.element.trigger({
286
- type: "show",
287
- date: this.date
288
- });
289
- },
290
-
291
- hide: function(e) {
292
- if (this.isInline) {return;}
293
- if (!this.picker.is(":visible")) {return;}
294
- this.picker.hide();
295
- $(window).off("resize", this.place);
296
- this.viewMode = this.startViewMode;
297
- this.showMode();
298
- if (!this.isInput) {
299
- $(document).off("mousedown", this.hide);
300
- }
301
-
302
- if (
303
- this.forceParse &&
304
- (
305
- this.isInput && this.element.val() ||
306
- this.hasInput && this.element.find("input").val()
307
- )
308
- )
309
- {this.setValue();}
310
- this.element.trigger({
311
- type: "hide",
312
- date: this.date
313
- });
314
- },
315
-
316
- remove: function() {
317
- this._detachEvents();
318
- this.picker.remove();
319
- delete this.element.data().datepicker;
320
- },
321
-
322
- getDate: function() {
323
- let d = this.getUTCDate();
324
- return new Date(d.getTime() + (d.getTimezoneOffset() * 60000));
325
- },
326
-
327
- getUTCDate: function() {
328
- return this.date;
329
- },
330
-
331
- setDate: function(d) {
332
- this.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset() * 60000)));
333
- },
334
-
335
- setUTCDate: function(d) {
336
- this.date = d;
337
- this.setValue();
338
- },
339
-
340
- setValue: function() {
341
- let formatted = this.getFormattedDate();
342
- if (!this.isInput) {
343
- if (this.component) {
344
- this.element.find("input").val(formatted);
345
- }
346
- this.element.data("date", formatted);
347
- } else {
348
- this.element.val(formatted);
349
- }
350
- },
351
-
352
- getFormattedDate: function(format) {
353
- if (format === undefined)
354
- {format = this.format;}
355
- return DPGlobal.formatDate(this.date, format, this.language);
356
- },
357
-
358
- setStartDate: function(startDate) {
359
- this.startDate = startDate || -Infinity;
360
- if (this.startDate !== -Infinity) {
361
- this.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language);
362
- }
363
- this.update();
364
- this.updateNavArrows();
365
- },
366
-
367
- setEndDate: function(endDate) {
368
- this.endDate = endDate || Infinity;
369
- if (this.endDate !== Infinity) {
370
- this.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language);
371
- }
372
- this.update();
373
- this.updateNavArrows();
374
- },
375
-
376
- setDaysOfWeekDisabled: function(daysOfWeekDisabled) {
377
- this.daysOfWeekDisabled = daysOfWeekDisabled || [];
378
- if (!$.isArray(this.daysOfWeekDisabled)) {
379
- this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\s*/);
380
- }
381
- this.daysOfWeekDisabled = $.map(this.daysOfWeekDisabled, function(d) {
382
- return parseInt(d, 10);
383
- });
384
- this.update();
385
- this.updateNavArrows();
386
- },
387
-
388
- setDatesDisabled: function(datesDisabled) {
389
- this.datesDisabled = datesDisabled || [];
390
- if (!$.isArray(this.datesDisabled)) {
391
- this.datesDisabled = this.datesDisabled.split(/,\s*/);
392
- }
393
- this.datesDisabled = $.map(this.datesDisabled, function(d) {
394
- return DPGlobal.parseDate(d, this.format, this.language).valueOf();
395
- });
396
- this.update();
397
- this.updateNavArrows();
398
- },
399
-
400
- place: function() {
401
- if (this.isInline) {return;}
402
- let zIndexes = [];
403
- this.element.parents().map(function() {
404
- if ($(this).css("z-index") != "auto") {
405
- zIndexes.push(parseInt($(this).css("z-index")));
406
- }
407
- });
408
- let zIndex = zIndexes.sort(function(a, b) { return a - b; }).pop() + 10;
409
- let textbox = this.component ? this.component : this.element;
410
- let offset = textbox.offset();
411
- let height = textbox.outerHeight() + parseInt(textbox.css("margin-top"));
412
- let width = textbox.outerWidth() + parseInt(textbox.css("margin-left"));
413
- let fullOffsetTop = offset.top + height;
414
- let offsetLeft = offset.left;
415
- this.picker.removeClass("datepicker-top datepicker-bottom");
416
- // can we show it on top?
417
- let canShowTop = ($(window).scrollTop() < offset.top - this.picker.outerHeight());
418
- let canShowBottom = (fullOffsetTop + this.picker.outerHeight()) < $(window).scrollTop() + $(window).height();
419
- // If the datepicker is going to be below the window, show it on top of the input if it fits
420
- if (!canShowBottom && canShowTop) {
421
- fullOffsetTop = offset.top - this.picker.outerHeight();
422
- this.picker.addClass("datepicker-top");
423
- }
424
- else {
425
- // Scroll up if we cannot show it on bottom or top (for mobile devices)
426
- if (!canShowBottom) {$(window).scrollTop(offset.top);}
427
- this.picker.addClass("datepicker-bottom");
428
- }
429
-
430
- // if the datepicker is going to go past the right side of the window, we want
431
- // to set the right position so the datepicker lines up with the textbox
432
- if (offset.left + this.picker.width() >= $(window).width()) {
433
- offsetLeft = (offset.left + width) - this.picker.width();
434
- }
435
- this.picker.css({
436
- top: fullOffsetTop,
437
- left: offsetLeft,
438
- zIndex: zIndex
439
- });
440
- },
441
-
442
- update: function() {
443
- let date,
444
- fromArgs = false;
445
- let currentVal = this.isInput ? this.element.val() : this.element.data("date") || this.element.find("input").val();
446
- if (arguments && arguments.length && (typeof arguments[0] === "string" || arguments[0] instanceof Date)) {
447
- date = arguments[0];
448
- fromArgs = true;
449
- }
450
- else {
451
- date = this.isInput ? this.element.val() : this.element.data("date") || this.element.find("input").val();
452
- }
453
-
454
- this.date = DPGlobal.parseDate(date, this.format, this.language);
455
-
456
- if (fromArgs) {
457
- this.setValue();
458
- } else if (currentVal == "") {
459
- this.element.trigger({
460
- type: "changeDate",
461
- date: null
462
- });
463
- }
464
-
465
- if (this.date < this.startDate) {
466
- this.viewDate = new Date(this.startDate.valueOf());
467
- } else if (this.date > this.endDate) {
468
- this.viewDate = new Date(this.endDate.valueOf());
469
- } else {
470
- this.viewDate = new Date(this.date.valueOf());
471
- }
472
- this.fill();
473
- },
474
-
475
- fillDow: function() {
476
- let dowCnt = this.weekStart,
477
- html = "<tr>";
478
- if (this.calendarWeeks) {
479
- let cell = '<th class="cw">&nbsp;</th>';
480
- html += cell;
481
- this.picker.find(".datepicker-days thead tr:first-child").prepend(cell);
482
- }
483
- while (dowCnt < this.weekStart + 7) {
484
- html += `<th class="dow">${dates[this.language].daysMin[(dowCnt++) % 7]}</th>`;
485
- }
486
- html += "</tr>";
487
- this.picker.find(".datepicker-days thead").append(html);
488
- },
489
-
490
- fillMonths: function() {
491
- let html = "",
492
- i = 0;
493
- while (i < 12) {
494
- html += `<span class="month">${dates[this.language].monthsShort[i++]}</span>`;
495
- }
496
- this.picker.find(".datepicker-months td").html(html);
497
- },
498
-
499
- fill: function() {
500
- if (this.date == null || this.viewDate == null) {
501
- return;
502
- }
503
-
504
- let d = new Date(this.viewDate.valueOf()),
505
- year = d.getUTCFullYear(),
506
- month = d.getUTCMonth(),
507
- dayMonth = d.getUTCDate(),
508
- hours = d.getUTCHours(),
509
- minutes = d.getUTCMinutes(),
510
- startYear = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity,
511
- startMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() : -Infinity,
512
- endYear = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity,
513
- endMonth = this.endDate !== Infinity ? this.endDate.getUTCMonth() : Infinity,
514
- currentDate = this.date && UTCDate(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate()).valueOf(),
515
- today = new Date(),
516
- titleFormat = dates[this.language].titleFormat || dates.en.titleFormat;
517
- // this.picker.find('.datepicker-days thead th.date-switch')
518
- // .text(DPGlobal.formatDate(new UTCDate(year, month), titleFormat, this.language));
519
-
520
- this.picker.find(".datepicker-days thead th:eq(1)").
521
- text(`${dates[this.language].months[month]} ${year}`);
522
- this.picker.find(".datepicker-hours thead th:eq(1)").
523
- text(`${dayMonth} ${dates[this.language].months[month]} ${year}`);
524
- this.picker.find(".datepicker-minutes thead th:eq(1)").
525
- text(`${dayMonth} ${dates[this.language].months[month]} ${year}`);
526
-
527
-
528
- this.picker.find("tfoot th.today").
529
- text(dates[this.language].today).
530
- toggle(this.todayBtn !== false);
531
- this.updateNavArrows();
532
- this.fillMonths();
533
- let prevMonth = UTCDate(year, month - 1, 28, 0, 0, 0, 0),
534
- day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
535
- prevMonth.setUTCDate(day);
536
- prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7) % 7);
537
- let nextMonth = new Date(prevMonth.valueOf());
538
- nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
539
- nextMonth = nextMonth.valueOf();
540
- let html = [];
541
- let clsName;
542
- while (prevMonth.valueOf() < nextMonth) {
543
- if (prevMonth.getUTCDay() == this.weekStart) {
544
- html.push("<tr>");
545
- if (this.calendarWeeks) {
546
- // adapted from https://github.com/timrwood/moment/blob/master/moment.js#L128
547
- let a = new Date(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth(), prevMonth.getUTCDate() - prevMonth.getDay() + 10 - (this.weekStart && this.weekStart % 7 < 5 && 7)),
548
- b = new Date(a.getFullYear(), 0, 4),
549
- calWeek = ~~((a - b) / 864e5 / 7 + 1.5);
550
- html.push(`<td class="cw">${calWeek}</td>`);
551
- }
552
- }
553
- clsName = ` ${this.onRender(prevMonth)} `;
554
- if (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() < month)) {
555
- clsName += " old";
556
- } else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() > month)) {
557
- clsName += " new";
558
- }
559
- // Compare internal UTC date with local today, not UTC today
560
- if (this.todayHighlight &&
561
- prevMonth.getUTCFullYear() == today.getFullYear() &&
562
- prevMonth.getUTCMonth() == today.getMonth() &&
563
- prevMonth.getUTCDate() == today.getDate()) {
564
- clsName += " today";
565
- }
566
- if (currentDate && prevMonth.valueOf() == currentDate) {
567
- clsName += " active";
568
- }
569
- if (prevMonth.valueOf() < this.startDate || prevMonth.valueOf() > this.endDate ||
570
- $.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1 ||
571
- $.inArray(prevMonth.valueOf(), this.datesDisabled) !== -1) {
572
- clsName += " disabled";
573
- }
574
- html.push(`<td class="day${clsName}">${prevMonth.getUTCDate()}</td>`);
575
- if (prevMonth.getUTCDay() == this.weekEnd) {
576
- html.push("</tr>");
577
- }
578
- prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);
579
- }
580
- this.picker.find(".datepicker-days tbody").empty().append(html.join(""));
581
-
582
- html = [];
583
- for (var i = 0; i < 24; i++) {
584
- var actual = UTCDate(year, month, dayMonth, i);
585
- clsName = "";
586
- // We want the previous hour for the startDate
587
- if ((actual.valueOf() + 3600000) < this.startDate || actual.valueOf() > this.endDate) {
588
- clsName += " disabled";
589
- } else if (hours == i) {
590
- clsName += " active";
591
- }
592
- html.push(`<span class="hour${clsName}">${i}:00</span>`);
593
- }
594
- this.picker.find(".datepicker-hours td").html(html.join(""));
595
-
596
- html = [];
597
- for (var i = 0; i < 60; i += this.minuteStep) {
598
- var actual = UTCDate(year, month, dayMonth, hours, i);
599
- clsName = "";
600
- if (actual.valueOf() < this.startDate || actual.valueOf() > this.endDate) {
601
- clsName += " disabled";
602
- } else if (Math.floor(minutes / this.minuteStep) == Math.floor(i / this.minuteStep)) {
603
- clsName += " active";
604
- }
605
- html.push(`<span class="minute${clsName}">${hours}:${i < 10 ? `0${i}` : i}</span>`);
606
- }
607
- this.picker.find(".datepicker-minutes td").html(html.join(""));
608
-
609
-
610
- let currentYear = this.date && this.date.getUTCFullYear();
611
- let months = this.picker.find(".datepicker-months").
612
- find("th:eq(1)").
613
- text(year).
614
- end().
615
- find("span").removeClass("active");
616
- if (currentYear && currentYear == year) {
617
- months.eq(this.date.getUTCMonth()).addClass("active");
618
- }
619
- if (year < startYear || year > endYear) {
620
- months.addClass("disabled");
621
- }
622
- if (year == startYear) {
623
- months.slice(0, startMonth).addClass("disabled");
624
- }
625
- if (year == endYear) {
626
- months.slice(endMonth + 1).addClass("disabled");
627
- }
628
-
629
- html = "";
630
- year = parseInt(year / 10, 10) * 10;
631
- let yearCont = this.picker.find(".datepicker-years").
632
- find("th:eq(1)").
633
- text(`${year}-${year + 9}`).
634
- end().
635
- find("td");
636
- year -= 1;
637
- for (var i = -1; i < 11; i++) {
638
- html += `<span class="year${i == -1 || i == 10 ? " old" : ""}${currentYear == year ? " active" : ""}${year < startYear || year > endYear ? " disabled" : ""}">${year}</span>`;
639
- year += 1;
640
- }
641
- yearCont.html(html);
642
- },
643
-
644
- updateNavArrows: function() {
645
- let d = new Date(this.viewDate),
646
- year = d.getUTCFullYear(),
647
- month = d.getUTCMonth(),
648
- day = d.getUTCDate(),
649
- hour = d.getUTCHours();
650
- switch (this.viewMode) {
651
- case 0:
652
- if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth() && day <= this.startDate.getUTCDate() && hour <= this.startDate.getUTCHours()) {
653
- this.picker.find(".prev").css({
654
- visibility: "hidden"
655
- });
656
- } else {
657
- this.picker.find(".prev").css({
658
- visibility: "visible"
659
- });
660
- }
661
- if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth() && day >= this.endDate.getUTCDate() && hour >= this.endDate.getUTCHours()) {
662
- this.picker.find(".next").css({
663
- visibility: "hidden"
664
- });
665
- } else {
666
- this.picker.find(".next").css({
667
- visibility: "visible"
668
- });
669
- }
670
- break;
671
- case 1:
672
- if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth() && day <= this.startDate.getUTCDate()) {
673
- this.picker.find(".prev").css({
674
- visibility: "hidden"
675
- });
676
- } else {
677
- this.picker.find(".prev").css({
678
- visibility: "visible"
679
- });
680
- }
681
- if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth() && day >= this.endDate.getUTCDate()) {
682
- this.picker.find(".next").css({
683
- visibility: "hidden"
684
- });
685
- } else {
686
- this.picker.find(".next").css({
687
- visibility: "visible"
688
- });
689
- }
690
- break;
691
- case 2:
692
- if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth()) {
693
- this.picker.find(".prev").css({
694
- visibility: "hidden"
695
- });
696
- } else {
697
- this.picker.find(".prev").css({
698
- visibility: "visible"
699
- });
700
- }
701
- if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth()) {
702
- this.picker.find(".next").css({
703
- visibility: "hidden"
704
- });
705
- } else {
706
- this.picker.find(".next").css({
707
- visibility: "visible"
708
- });
709
- }
710
- break;
711
- case 3:
712
- case 4:
713
- if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear()) {
714
- this.picker.find(".prev").css({
715
- visibility: "hidden"
716
- });
717
- } else {
718
- this.picker.find(".prev").css({
719
- visibility: "visible"
720
- });
721
- }
722
- if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear()) {
723
- this.picker.find(".next").css({
724
- visibility: "hidden"
725
- });
726
- } else {
727
- this.picker.find(".next").css({
728
- visibility: "visible"
729
- });
730
- }
731
- break;
732
- }
733
- },
734
-
735
- click: function(e) {
736
- e.stopPropagation();
737
- e.preventDefault();
738
-
739
- if ($(e.target).hasClass("datepicker-close") || $(e.target).parent().hasClass("datepicker-close")) {
740
- this.hide();
741
- }
742
-
743
- let target = $(e.target).closest("span, td, th");
744
- if (target.length == 1) {
745
- if (target.is(".disabled")) {
746
- this.element.trigger({
747
- type: "outOfRange",
748
- date: this.viewDate,
749
- startDate: this.startDate,
750
- endDate: this.endDate
751
- });
752
- return;
753
- }
754
-
755
- switch (target[0].nodeName.toLowerCase()) {
756
- case "th":
757
- switch (target[0].className) {
758
- case "date-switch":
759
- this.showMode(1);
760
- break;
761
- case "prev":
762
- case "next":
763
- var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className == "prev" ? -1 : 1);
764
- switch (this.viewMode) {
765
- case 0:
766
- this.viewDate = this.moveHour(this.viewDate, dir);
767
- break;
768
- case 1:
769
- this.viewDate = this.moveDate(this.viewDate, dir);
770
- break;
771
- case 2:
772
- this.viewDate = this.moveMonth(this.viewDate, dir);
773
- break;
774
- case 3:
775
- case 4:
776
- this.viewDate = this.moveYear(this.viewDate, dir);
777
- break;
778
- }
779
- this.fill();
780
- break;
781
- case "today":
782
- var date = new Date();
783
- date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
784
-
785
- this.viewMode = this.startViewMode;
786
- this.showMode(0);
787
- this._setDate(date);
788
- break;
789
- }
790
- break;
791
- case "span":
792
- if (!target.is(".disabled")) {
793
- if (target.is(".month")) {
794
- if (this.minView === 3) {
795
- var month = target.parent().find("span").index(target) || 0;
796
- var year = this.viewDate.getUTCFullYear(),
797
- day = 1,
798
- hours = this.viewDate.getUTCHours(),
799
- minutes = this.viewDate.getUTCMinutes(),
800
- seconds = this.viewDate.getUTCSeconds();
801
- this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));
802
- } else {
803
- this.viewDate.setUTCDate(1);
804
- var month = target.parent().find("span").index(target);
805
- this.viewDate.setUTCMonth(month);
806
- this.element.trigger({
807
- type: "changeMonth",
808
- date: this.viewDate
809
- });
810
- }
811
- } else if (target.is(".year")) {
812
- if (this.minView === 4) {
813
- var year = parseInt(target.text(), 10) || 0;
814
- var month = 0,
815
- day = 1,
816
- hours = this.viewDate.getUTCHours(),
817
- minutes = this.viewDate.getUTCMinutes(),
818
- seconds = this.viewDate.getUTCSeconds();
819
- this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));
820
- } else {
821
- this.viewDate.setUTCDate(1);
822
- var year = parseInt(target.text(), 10) || 0;
823
- this.viewDate.setUTCFullYear(year);
824
- this.element.trigger({
825
- type: "changeYear",
826
- date: this.viewDate
827
- });
828
- }
829
- } else if (target.is(".hour")) {
830
- var hours = parseInt(target.text(), 10) || 0;
831
- var year = this.viewDate.getUTCFullYear(),
832
- month = this.viewDate.getUTCMonth(),
833
- day = this.viewDate.getUTCDate(),
834
- minutes = this.viewDate.getUTCMinutes(),
835
- seconds = this.viewDate.getUTCSeconds();
836
- this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));
837
- } else if (target.is(".minute")) {
838
- var minutes = parseInt(target.text().substr(target.text().indexOf(":") + 1), 10) || 0;
839
- var year = this.viewDate.getUTCFullYear(),
840
- month = this.viewDate.getUTCMonth(),
841
- day = this.viewDate.getUTCDate(),
842
- hours = this.viewDate.getUTCHours(),
843
- seconds = this.viewDate.getUTCSeconds();
844
- this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));
845
- }
846
-
847
-
848
- if (this.viewMode != 0) {
849
-
850
-
851
- var oldViewMode = this.viewMode;
852
- this.showMode(-1);
853
- this.fill();
854
- if (oldViewMode == this.viewMode && this.autoclose) {
855
- this.hide();
856
- }
857
- } else {
858
- this.fill();
859
- if (this.autoclose) {
860
- this.hide();
861
- }
862
- }
863
- }
864
- break;
865
- case "td":
866
-
867
-
868
- if (target.is(".day") && !target.is(".disabled")) {
869
- var day = parseInt(target.text(), 10) || 1;
870
- var year = this.viewDate.getUTCFullYear(),
871
- month = this.viewDate.getUTCMonth(),
872
- hours = this.viewDate.getUTCHours(),
873
- minutes = this.viewDate.getUTCMinutes(),
874
- seconds = this.viewDate.getUTCSeconds();
875
- if (target.is(".old")) {
876
- if (month === 0) {
877
- month = 11;
878
- year -= 1;
879
- } else {
880
- month -= 1;
881
- }
882
- } else if (target.is(".new")) {
883
- if (month == 11) {
884
- month = 0;
885
- year += 1;
886
- } else {
887
- month += 1;
888
- }
889
- }
890
- this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));
891
- }
892
-
893
-
894
- var oldViewMode = this.viewMode;
895
-
896
-
897
- this.showMode(-1);
898
-
899
-
900
- this.fill();
901
- if (oldViewMode == this.viewMode && this.autoclose) {
902
- this.hide();
903
- }
904
- break;
905
- }
906
- }
907
- },
908
-
909
- _setDate: function(date, which) {
910
-
911
- if (!which || which == "date")
912
- {this.date = date;}
913
- if (!which || which == "view")
914
- {this.viewDate = date;}
915
- this.fill();
916
- this.setValue();
917
- this.element.trigger({
918
- type: "changeDate",
919
- date: this.date
920
- });
921
- let element;
922
- if (this.isInput) {
923
- element = this.element;
924
- } else if (this.component) {
925
- element = this.element.find("input");
926
- }
927
- if (element) {
928
- element.change();
929
- if (this.autoclose && (!which || which == "date")) {
930
- // this.hide();
931
- }
932
- }
933
- },
934
-
935
- moveHour: function(date, dir) {
936
- if (!dir) {return date;}
937
- let new_date = new Date(date.valueOf());
938
- dir = dir > 0 ? 1 : -1;
939
- new_date.setUTCHours(new_date.getUTCHours() + dir);
940
- return new_date;
941
- },
942
-
943
- moveDate: function(date, dir) {
944
- if (!dir) {return date;}
945
- let new_date = new Date(date.valueOf());
946
- dir = dir > 0 ? 1 : -1;
947
- new_date.setUTCDate(new_date.getUTCDate() + dir);
948
- return new_date;
949
- },
950
-
951
- moveMonth: function(date, dir) {
952
- if (!dir) {return date;}
953
- let new_date = new Date(date.valueOf()),
954
- day = new_date.getUTCDate(),
955
- month = new_date.getUTCMonth(),
956
- mag = Math.abs(dir),
957
- new_month, test;
958
- dir = dir > 0 ? 1 : -1;
959
- if (mag == 1) {
960
- test = dir == -1
961
- // If going back one month, make sure month is not current month
962
- // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
963
- ? function() {
964
- return new_date.getUTCMonth() == month;
965
- }
966
- // If going forward one month, make sure month is as expected
967
- // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
968
- : function() {
969
- return new_date.getUTCMonth() != new_month;
970
- };
971
- new_month = month + dir;
972
- new_date.setUTCMonth(new_month);
973
- // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
974
- if (new_month < 0 || new_month > 11)
975
- {new_month = (new_month + 12) % 12;}
976
- } else {
977
- // For magnitudes >1, move one month at a time...
978
- for (let i = 0; i < mag; i++)
979
- // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
980
- {new_date = this.moveMonth(new_date, dir);}
981
- // ...then reset the day, keeping it in the new month
982
- new_month = new_date.getUTCMonth();
983
- new_date.setUTCDate(day);
984
- test = function() {
985
- return new_month != new_date.getUTCMonth();
986
- };
987
- }
988
- // Common date-resetting loop -- if date is beyond end of month, make it
989
- // end of month
990
- while (test()) {
991
- new_date.setUTCDate(--day);
992
- new_date.setUTCMonth(new_month);
993
- }
994
- return new_date;
995
- },
996
-
997
- moveYear: function(date, dir) {
998
- return this.moveMonth(date, dir * 12);
999
- },
1000
-
1001
- dateWithinRange: function(date) {
1002
- return date >= this.startDate && date <= this.endDate;
1003
- },
1004
-
1005
- keydown: function(e) {
1006
- if (!this.keyboardNavigation) {
1007
- return true;
1008
- }
1009
- if (this.picker.is(":not(:visible)")) {
1010
- if (e.keyCode == 27) // allow escape to hide and re-show picker
1011
- {this.show();}
1012
- return;
1013
- }
1014
- let dateChanged = false,
1015
- day, dir, month,
1016
- newDate, newViewDate;
1017
- switch (e.keyCode) {
1018
- case 27: // escape
1019
- this.hide();
1020
- e.preventDefault();
1021
- break;
1022
- case 37: // left
1023
- case 39: // right
1024
- if (!this.keyboardNavigation) {break;}
1025
- dir = e.keyCode == 37 ? -1 : 1;
1026
- if (e.ctrlKey) {
1027
- newDate = this.moveYear(this.date, dir);
1028
- newViewDate = this.moveYear(this.viewDate, dir);
1029
- } else if (e.shiftKey) {
1030
- newDate = this.moveMonth(this.date, dir);
1031
- newViewDate = this.moveMonth(this.viewDate, dir);
1032
- } else {
1033
- newDate = new Date(this.date.valueOf());
1034
- newDate.setUTCDate(this.date.getUTCDate() + dir);
1035
- newViewDate = new Date(this.viewDate.valueOf());
1036
- newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir);
1037
- }
1038
- if (this.dateWithinRange(newDate)) {
1039
- this.date = newDate;
1040
- this.viewDate = newViewDate;
1041
- this.setValue();
1042
- this.update();
1043
- e.preventDefault();
1044
- dateChanged = true;
1045
- }
1046
- break;
1047
- case 38: // up
1048
- case 40: // down
1049
- if (!this.keyboardNavigation) {break;}
1050
- dir = e.keyCode == 38 ? -1 : 1;
1051
- if (e.ctrlKey) {
1052
- newDate = this.moveYear(this.date, dir);
1053
- newViewDate = this.moveYear(this.viewDate, dir);
1054
- } else if (e.shiftKey) {
1055
- newDate = this.moveMonth(this.date, dir);
1056
- newViewDate = this.moveMonth(this.viewDate, dir);
1057
- } else {
1058
- newDate = new Date(this.date.valueOf());
1059
- newDate.setUTCDate(this.date.getUTCDate() + dir * 7);
1060
- newViewDate = new Date(this.viewDate.valueOf());
1061
- newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir * 7);
1062
- }
1063
- if (this.dateWithinRange(newDate)) {
1064
- this.date = newDate;
1065
- this.viewDate = newViewDate;
1066
- this.setValue();
1067
- this.update();
1068
- e.preventDefault();
1069
- dateChanged = true;
1070
- }
1071
- break;
1072
- case 13: // enter
1073
- this.hide();
1074
- e.preventDefault();
1075
- break;
1076
- case 9: // tab
1077
- this.hide();
1078
- break;
1079
- }
1080
- if (dateChanged) {
1081
- this.element.trigger({
1082
- type: "changeDate",
1083
- date: this.date
1084
- });
1085
- let element;
1086
- if (this.isInput) {
1087
- element = this.element;
1088
- } else if (this.component) {
1089
- element = this.element.find("input");
1090
- }
1091
- if (element) {
1092
- element.change();
1093
- }
1094
- }
1095
- },
1096
-
1097
- showMode: function(dir) {
1098
-
1099
- if (dir) {
1100
- let newViewMode = Math.max(0, Math.min(DPGlobal.modes.length - 1, this.viewMode + dir));
1101
- if (newViewMode >= this.minView && newViewMode <= this.maxView) {
1102
- this.viewMode = newViewMode;
1103
- }
1104
- }
1105
-
1106
- /*
1107
- vitalets: fixing bug of very special conditions:
1108
- jquery 1.7.1 + webkit + show inline datepicker in bootstrap popover.
1109
- Method show() does not set display css correctly and datepicker is not shown.
1110
- Changed to .css('display', 'block') solve the problem.
1111
- See https://github.com/vitalets/x-editable/issues/37
1112
-
1113
- In jquery 1.7.2+ everything works fine.
1114
- */
1115
- // this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();
1116
- this.picker.find(">div").hide().filter(`.datepicker-${DPGlobal.modes[this.viewMode].clsName}`).css("display", "block");
1117
- this.updateNavArrows();
1118
- },
1119
-
1120
- changeViewDate: function(date) {
1121
- this.date = date;
1122
- this.viewDate = date;
1123
- this.fill();
1124
- },
1125
-
1126
- reset: function(e) {
1127
- this._setDate(null, "date");
1128
- }
1129
- };
1130
-
1131
- $.fn.fdatepicker = function(option) {
1132
- let args = Array(...arguments);
1133
- args.shift();
1134
- return this.each(function() {
1135
- let $this = $(this),
1136
- data = $this.data("datepicker"),
1137
- options = typeof option === "object" && option;
1138
- if (!data) {
1139
- $this.data("datepicker", (data = new Datepicker(this, $.extend({}, $.fn.fdatepicker.defaults, options))));
1140
- }
1141
- if (typeof option === "string" && typeof data[option] === "function") {
1142
- data[option](...args);
1143
- }
1144
- });
1145
- };
1146
-
1147
- $.fn.fdatepicker.defaults = {
1148
- onRender: function(date) {
1149
- return "";
1150
- }
1151
- };
1152
- $.fn.fdatepicker.Constructor = Datepicker;
1153
- var dates = $.fn.fdatepicker.dates = {
1154
- "en": {
1155
- days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
1156
- daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
1157
- daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
1158
- months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
1159
- monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
1160
- today: "Today",
1161
- titleFormat: "MM yyyy"
1162
- }
1163
- };
1164
-
1165
- var DPGlobal = {
1166
- modes: [{
1167
- clsName: "minutes",
1168
- navFnc: "Hours",
1169
- navStep: 1
1170
- }, {
1171
- clsName: "hours",
1172
- navFnc: "Date",
1173
- navStep: 1
1174
- }, {
1175
- clsName: "days",
1176
- navFnc: "Month",
1177
- navStep: 1
1178
- }, {
1179
- clsName: "months",
1180
- navFnc: "FullYear",
1181
- navStep: 1
1182
- }, {
1183
- clsName: "years",
1184
- navFnc: "FullYear",
1185
- navStep: 10
1186
- }],
1187
- isLeapYear: function(year) {
1188
- return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
1189
- },
1190
- getDaysInMonth: function(year, month) {
1191
- return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
1192
- },
1193
- validParts: /hh?|ii?|ss?|dd?|mm?|MM?|yy(?:yy)?/g,
1194
- nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,
1195
- parseFormat: function(format) {
1196
- // IE treats \0 as a string end in inputs (truncating the value),
1197
- // so it's a bad format delimiter, anyway
1198
- let separators = format.replace(this.validParts, "\0").split("\0"),
1199
- parts = format.match(this.validParts);
1200
- if (!separators || !separators.length || !parts || parts.length === 0) {
1201
- throw new Error("Invalid date format.");
1202
- }
1203
- this.formatText = format;
1204
- return {
1205
- separators: separators,
1206
- parts: parts
1207
- };
1208
- },
1209
- parseDate: function(date, format, language) {
1210
- if (date instanceof Date) {return new Date(date.valueOf() - date.getTimezoneOffset() * 60000);}
1211
- if (/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(date)) {
1212
- format = this.parseFormat("yyyy-mm-dd");
1213
- }
1214
- if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(date)) {
1215
- format = this.parseFormat("yyyy-mm-dd hh:ii");
1216
- }
1217
- if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(date)) {
1218
- format = this.parseFormat("yyyy-mm-dd hh:ii:ss");
1219
- }
1220
- if (/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(date)) {
1221
- var part_re = /([-+]\d+)([dmwy])/,
1222
- parts = date.match(/([-+]\d+)([dmwy])/g),
1223
- part, dir;
1224
- date = new Date();
1225
- for (var i = 0; i < parts.length; i++) {
1226
- part = part_re.exec(parts[i]);
1227
- dir = parseInt(part[1]);
1228
- switch (part[2]) {
1229
- case "d":
1230
- date.setUTCDate(date.getUTCDate() + dir);
1231
- break;
1232
- case "m":
1233
- date = Datetimepicker.prototype.moveMonth.call(Datetimepicker.prototype, date, dir);
1234
- break;
1235
- case "w":
1236
- date.setUTCDate(date.getUTCDate() + dir * 7);
1237
- break;
1238
- case "y":
1239
- date = Datetimepicker.prototype.moveYear.call(Datetimepicker.prototype, date, dir);
1240
- break;
1241
- }
1242
- }
1243
- return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
1244
- }
1245
- var parts = date && date.match(this.nonpunctuation) || [],
1246
- date = new Date(),
1247
- parsed = {},
1248
- setters_order = ["hh", "h", "ii", "i", "ss", "s", "yyyy", "yy", "M", "MM", "m", "mm", "d", "dd"],
1249
- setters_map = {
1250
- hh: function(d, v) {
1251
- return d.setUTCHours(v);
1252
- },
1253
- h: function(d, v) {
1254
- return d.setUTCHours(v);
1255
- },
1256
- ii: function(d, v) {
1257
- return d.setUTCMinutes(v);
1258
- },
1259
- i: function(d, v) {
1260
- return d.setUTCMinutes(v);
1261
- },
1262
- ss: function(d, v) {
1263
- return d.setUTCSeconds(v);
1264
- },
1265
- s: function(d, v) {
1266
- return d.setUTCSeconds(v);
1267
- },
1268
- yyyy: function(d, v) {
1269
- return d.setUTCFullYear(v);
1270
- },
1271
- yy: function(d, v) {
1272
- return d.setUTCFullYear(2000 + v);
1273
- },
1274
- m: function(d, v) {
1275
- v -= 1;
1276
- while (v < 0) {v += 12;}
1277
- v %= 12;
1278
- d.setUTCMonth(v);
1279
- while (d.getUTCMonth() != v)
1280
- {d.setUTCDate(d.getUTCDate() - 1);}
1281
- return d;
1282
- },
1283
- d: function(d, v) {
1284
- return d.setUTCDate(v);
1285
- }
1286
- },
1287
- val, filtered, part;
1288
- setters_map.M = setters_map.MM = setters_map.mm = setters_map.m;
1289
- setters_map.dd = setters_map.d;
1290
- date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); // date.getHours(), date.getMinutes(), date.getSeconds());
1291
- if (parts.length == format.parts.length) {
1292
- for (var i = 0, cnt = format.parts.length; i < cnt; i++) {
1293
- val = parseInt(parts[i], 10);
1294
- part = format.parts[i];
1295
- if (isNaN(val)) {
1296
- switch (part) {
1297
- case "MM":
1298
- filtered = $(dates[language].months).filter(function() {
1299
- let m = this.slice(0, parts[i].length),
1300
- p = parts[i].slice(0, m.length);
1301
- return m == p;
1302
- });
1303
- val = $.inArray(filtered[0], dates[language].months) + 1;
1304
- break;
1305
- case "M":
1306
- filtered = $(dates[language].monthsShort).filter(function() {
1307
- let m = this.slice(0, parts[i].length),
1308
- p = parts[i].slice(0, m.length);
1309
- return m == p;
1310
- });
1311
- val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
1312
- break;
1313
- }
1314
- }
1315
- parsed[part] = val;
1316
- }
1317
- for (var i = 0, s; i < setters_order.length; i++) {
1318
- s = setters_order[i];
1319
- if (s in parsed && !isNaN(parsed[s]))
1320
- {setters_map[s](date, parsed[s])}
1321
- }
1322
- }
1323
- return date;
1324
- },
1325
- formatDate: function(date, format, language) {
1326
- if (date == null) {
1327
- return "";
1328
- }
1329
- let val = {
1330
- h: date.getUTCHours(),
1331
- i: date.getUTCMinutes(),
1332
- s: date.getUTCSeconds(),
1333
- d: date.getUTCDate(),
1334
- m: date.getUTCMonth() + 1,
1335
- M: dates[language].monthsShort[date.getUTCMonth()],
1336
- MM: dates[language].months[date.getUTCMonth()],
1337
- yy: date.getUTCFullYear().toString().substring(2),
1338
- yyyy: date.getUTCFullYear()
1339
- };
1340
- val.hh = (val.h < 10 ? "0" : "") + val.h;
1341
- val.ii = (val.i < 10 ? "0" : "") + val.i;
1342
- val.ss = (val.s < 10 ? "0" : "") + val.s;
1343
- val.dd = (val.d < 10 ? "0" : "") + val.d;
1344
- val.mm = (val.m < 10 ? "0" : "") + val.m;
1345
- var date = [],
1346
- seps = $.extend([], format.separators);
1347
- for (let i = 0, cnt = format.parts.length; i < cnt; i++) {
1348
- if (seps.length)
1349
- {date.push(seps.shift())}
1350
- date.push(val[format.parts[i]]);
1351
- }
1352
- return date.join("");
1353
- },
1354
- convertViewMode: function(viewMode) {
1355
- switch (viewMode) {
1356
- case 4:
1357
- case "decade":
1358
- viewMode = 4;
1359
- break;
1360
- case 3:
1361
- case "year":
1362
- viewMode = 3;
1363
- break;
1364
- case 2:
1365
- case "month":
1366
- viewMode = 2;
1367
- break;
1368
- case 1:
1369
- case "day":
1370
- viewMode = 1;
1371
- break;
1372
- case 0:
1373
- case "hour":
1374
- viewMode = 0;
1375
- break;
1376
- }
1377
-
1378
- return viewMode;
1379
- },
1380
- headTemplate: function(leftArrow, rightArrow) {return (`${"<thead>" +
1381
- "<tr>" +
1382
- '<th class="prev">'}${leftArrow}</th>` +
1383
- "<th colspan=\"5\" class=\"date-switch\"></th>" +
1384
- `<th class="next">${rightArrow}</th>` +
1385
- "</tr>" +
1386
- "</thead>")},
1387
- contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
1388
- footTemplate: '<tfoot><tr><th colspan="7" class="today"></th></tr></tfoot>'
1389
- };
1390
- DPGlobal.template = function(leftArrow, rightArrow, closeIcon) {return (`${'<div class="datepicker">' +
1391
- '<div class="datepicker-minutes">' +
1392
- '<table class=" table-condensed">'}${
1393
- DPGlobal.headTemplate(leftArrow, rightArrow)
1394
- }${DPGlobal.contTemplate
1395
- }${DPGlobal.footTemplate
1396
- }</table>` +
1397
- "</div>" +
1398
- "<div class=\"datepicker-hours\">" +
1399
- `<table class=" table-condensed">${
1400
- DPGlobal.headTemplate(leftArrow, rightArrow)
1401
- }${DPGlobal.contTemplate
1402
- }${DPGlobal.footTemplate
1403
- }</table>` +
1404
- "</div>" +
1405
- "<div class=\"datepicker-days\">" +
1406
- `<table class=" table-condensed">${
1407
- DPGlobal.headTemplate(leftArrow, rightArrow)
1408
- }<tbody></tbody>${
1409
- DPGlobal.footTemplate
1410
- }</table>` +
1411
- "</div>" +
1412
- "<div class=\"datepicker-months\">" +
1413
- `<table class="table-condensed">${
1414
- DPGlobal.headTemplate(leftArrow, rightArrow)
1415
- }${DPGlobal.contTemplate
1416
- }${DPGlobal.footTemplate
1417
- }</table>` +
1418
- "</div>" +
1419
- "<div class=\"datepicker-years\">" +
1420
- `<table class="table-condensed">${
1421
- DPGlobal.headTemplate(leftArrow, rightArrow)
1422
- }${DPGlobal.contTemplate
1423
- }${DPGlobal.footTemplate
1424
- }</table>` +
1425
- "</div>" +
1426
- `<a class="button datepicker-close tiny alert right" style="width:auto;">${closeIcon}</a>` +
1427
- "</div>")};
1428
-
1429
- $.fn.fdatepicker.DPGlobal = DPGlobal;
1430
-
1431
- }(window.jQuery));