@gitlab/ui 132.0.0 → 132.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/dist/charts.js +13 -0
  2. package/dist/components/base/accordion/accordion.js +69 -0
  3. package/dist/components/base/accordion/accordion_item.js +160 -0
  4. package/dist/components/base/accordion/constants.js +3 -0
  5. package/dist/components/base/alert/alert.js +263 -0
  6. package/dist/components/base/animated_icon/animated_chevron_down_up_icon.js +45 -0
  7. package/dist/components/base/animated_icon/animated_chevron_lg_down_up_icon.js +45 -0
  8. package/dist/components/base/animated_icon/animated_chevron_lg_right_down_icon.js +45 -0
  9. package/dist/components/base/animated_icon/animated_chevron_right_down_icon.js +45 -0
  10. package/dist/components/base/animated_icon/animated_duo_chat_icon.js +45 -0
  11. package/dist/components/base/animated_icon/animated_loader_icon.js +45 -0
  12. package/dist/components/base/animated_icon/animated_notifications_icon.js +45 -0
  13. package/dist/components/base/animated_icon/animated_sidebar_icon.js +45 -0
  14. package/dist/components/base/animated_icon/animated_smile_icon.js +45 -0
  15. package/dist/components/base/animated_icon/animated_sort_icon.js +45 -0
  16. package/dist/components/base/animated_icon/animated_star_icon.js +45 -0
  17. package/dist/components/base/animated_icon/animated_todo_icon.js +45 -0
  18. package/dist/components/base/animated_icon/animated_upload_icon.js +45 -0
  19. package/dist/components/base/animated_icon/base_animated_icon.js +77 -0
  20. package/dist/components/base/attribute_list/attribute_list.js +100 -0
  21. package/dist/components/base/avatar/avatar.js +175 -0
  22. package/dist/components/base/avatar/utils.js +17 -0
  23. package/dist/components/base/avatar_labeled/avatar_labeled.js +198 -0
  24. package/dist/components/base/avatar_link/avatar_link.js +47 -0
  25. package/dist/components/base/avatars_inline/avatars_inline.js +139 -0
  26. package/dist/components/base/badge/badge.js +197 -0
  27. package/dist/components/base/banner/banner.js +149 -0
  28. package/dist/components/base/breadcrumb/breadcrumb.js +282 -0
  29. package/dist/components/base/breadcrumb/breadcrumb_item.js +96 -0
  30. package/dist/components/base/broadcast_message/broadcast_message.js +113 -0
  31. package/dist/components/base/broadcast_message/constants.js +5 -0
  32. package/dist/components/base/button/button.js +419 -0
  33. package/dist/components/base/button_group/button_group.js +53 -0
  34. package/dist/components/base/card/card.js +69 -0
  35. package/dist/components/base/collapse/collapse.js +163 -0
  36. package/dist/components/base/color_mode_toggle/color_mode_toggle.js +92 -0
  37. package/dist/components/base/datepicker/datepicker.js +475 -0
  38. package/dist/components/base/daterange_picker/daterange_picker.js +394 -0
  39. package/dist/components/base/drawer/drawer.js +156 -0
  40. package/dist/components/base/dropdown/dropdown.js +330 -0
  41. package/dist/components/base/dropdown/dropdown_divider.js +48 -0
  42. package/dist/components/base/dropdown/dropdown_form.js +48 -0
  43. package/dist/components/base/dropdown/dropdown_item.js +175 -0
  44. package/dist/components/base/dropdown/dropdown_section_header.js +48 -0
  45. package/dist/components/base/dropdown/dropdown_text.js +48 -0
  46. package/dist/components/base/filtered_search/common_story_options.js +14 -0
  47. package/dist/components/base/filtered_search/filtered_search.js +428 -0
  48. package/dist/components/base/filtered_search/filtered_search_suggestion.js +95 -0
  49. package/dist/components/base/filtered_search/filtered_search_suggestion_list.js +139 -0
  50. package/dist/components/base/filtered_search/filtered_search_term.js +217 -0
  51. package/dist/components/base/filtered_search/filtered_search_token.js +383 -0
  52. package/dist/components/base/filtered_search/filtered_search_token_segment.js +444 -0
  53. package/dist/components/base/filtered_search/filtered_search_utils.js +241 -0
  54. package/dist/components/base/form/form.js +43 -0
  55. package/dist/components/base/form/form_character_count/form_character_count.js +107 -0
  56. package/dist/components/base/form/form_checkbox/form_checkbox.js +342 -0
  57. package/dist/components/base/form/form_checkbox/form_checkbox_group.js +188 -0
  58. package/dist/components/base/form/form_combobox/constants.js +55 -0
  59. package/dist/components/base/form/form_combobox/form_combobox.js +239 -0
  60. package/dist/components/base/form/form_date/form_date.js +143 -0
  61. package/dist/components/base/form/form_fields/form_field_validator.js +93 -0
  62. package/dist/components/base/form/form_fields/form_fields.js +289 -0
  63. package/dist/components/base/form/form_fields/form_fields_loop.js +75 -0
  64. package/dist/components/base/form/form_fields/mappers.js +13 -0
  65. package/dist/components/base/form/form_fields/validators.js +48 -0
  66. package/dist/components/base/form/form_group/form_group.js +119 -0
  67. package/dist/components/base/form/form_input/form_input.js +695 -0
  68. package/dist/components/base/form/form_input_group/form_input_group.js +120 -0
  69. package/dist/components/base/form/form_input_group/form_input_group_mixin.js +41 -0
  70. package/dist/components/base/form/form_radio/form_radio.js +259 -0
  71. package/dist/components/base/form/form_radio_group/form_radio_group.js +189 -0
  72. package/dist/components/base/form/form_select/constants.js +12 -0
  73. package/dist/components/base/form/form_select/form_select.js +96 -0
  74. package/dist/components/base/form/form_textarea/form_textarea.js +166 -0
  75. package/dist/components/base/form/input_group_text/input_group_text.js +43 -0
  76. package/dist/components/base/icon/icon.js +113 -0
  77. package/dist/components/base/illustration/illustration.js +80 -0
  78. package/dist/components/base/infinite_scroll/infinite_scroll.js +196 -0
  79. package/dist/components/base/keyset_pagination/keyset_pagination.js +152 -0
  80. package/dist/components/base/label/label.js +174 -0
  81. package/dist/components/base/link/link.js +330 -0
  82. package/dist/components/base/loading_icon/loading_icon.js +120 -0
  83. package/dist/components/base/markdown/markdown.js +50 -0
  84. package/dist/components/base/modal/modal.js +259 -0
  85. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +716 -0
  86. package/dist/components/base/new_dropdowns/base_dropdown/constants.js +5 -0
  87. package/dist/components/base/new_dropdowns/base_dropdown/dropdown_container.js +32 -0
  88. package/dist/components/base/new_dropdowns/constants.js +24 -0
  89. package/dist/components/base/new_dropdowns/disclosure/constants.js +8 -0
  90. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +400 -0
  91. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +112 -0
  92. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +196 -0
  93. package/dist/components/base/new_dropdowns/disclosure/mock_data.js +168 -0
  94. package/dist/components/base/new_dropdowns/disclosure/utils.js +84 -0
  95. package/dist/components/base/new_dropdowns/listbox/listbox.js +997 -0
  96. package/dist/components/base/new_dropdowns/listbox/listbox_group.js +58 -0
  97. package/dist/components/base/new_dropdowns/listbox/listbox_item.js +112 -0
  98. package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +94 -0
  99. package/dist/components/base/new_dropdowns/listbox/mock_data.js +131 -0
  100. package/dist/components/base/new_dropdowns/listbox/utils.js +33 -0
  101. package/dist/components/base/pagination/pagination.js +397 -0
  102. package/dist/components/base/path/data.js +34 -0
  103. package/dist/components/base/path/path.js +177 -0
  104. package/dist/components/base/popover/popover.js +142 -0
  105. package/dist/components/base/progress_bar/progress_bar.js +117 -0
  106. package/dist/components/base/search_box_by_click/search_box_by_click.js +245 -0
  107. package/dist/components/base/search_box_by_type/search_box_by_type.js +187 -0
  108. package/dist/components/base/segmented_control/segmented_control.js +73 -0
  109. package/dist/components/base/skeleton_loader/skeleton_loader.js +232 -0
  110. package/dist/components/base/sorting/sorting.js +180 -0
  111. package/dist/components/base/table/constants.js +5 -0
  112. package/dist/components/base/table/table.js +187 -0
  113. package/dist/components/base/table_lite/table_lite.js +80 -0
  114. package/dist/components/base/tabs/constants.js +3 -0
  115. package/dist/components/base/tabs/tab/tab.js +113 -0
  116. package/dist/components/base/tabs/tabs/scrollable_tabs.js +162 -0
  117. package/dist/components/base/tabs/tabs/tabs.js +223 -0
  118. package/dist/components/base/toast/index.js +66 -0
  119. package/dist/components/base/toast/toast.js +125 -0
  120. package/dist/components/base/toast/toaster.js +87 -0
  121. package/dist/components/base/toggle/toggle.js +178 -0
  122. package/dist/components/base/token/token.js +97 -0
  123. package/dist/components/base/token_selector/helpers.js +5 -0
  124. package/dist/components/base/token_selector/token_container.js +160 -0
  125. package/dist/components/base/token_selector/token_selector.js +454 -0
  126. package/dist/components/base/token_selector/token_selector_dropdown.js +223 -0
  127. package/dist/components/base/tooltip/tooltip.js +54 -0
  128. package/dist/components/charts/area/area.js +329 -0
  129. package/dist/components/charts/bar/bar.js +207 -0
  130. package/dist/components/charts/chart/chart.js +215 -0
  131. package/dist/components/charts/column/column.js +221 -0
  132. package/dist/components/charts/discrete_scatter/discrete_scatter.js +199 -0
  133. package/dist/components/charts/gauge/gauge.js +205 -0
  134. package/dist/components/charts/heatmap/heatmap.js +299 -0
  135. package/dist/components/charts/heatmap/index.js +2 -0
  136. package/dist/components/charts/legend/legend.js +245 -0
  137. package/dist/components/charts/line/line.js +340 -0
  138. package/dist/components/charts/series_label/series_label.js +101 -0
  139. package/dist/components/charts/shared/tooltip/tooltip.js +369 -0
  140. package/dist/components/charts/shared/tooltip/tooltip_default_format/tooltip_default_format.js +53 -0
  141. package/dist/components/charts/single_stat/single_stat.js +164 -0
  142. package/dist/components/charts/sparkline/sparkline.js +299 -0
  143. package/dist/components/charts/stacked_column/stacked_column.js +380 -0
  144. package/dist/components/dashboards/dashboard_layout/dashboard_layout.js +125 -0
  145. package/dist/components/dashboards/dashboard_layout/grid_layout/grid_layout.js +326 -0
  146. package/dist/components/dashboards/dashboard_layout/validators.js +14 -0
  147. package/dist/components/dashboards/dashboard_panel/dashboard_panel.js +236 -0
  148. package/dist/components/dashboards/mock_data.js +49 -0
  149. package/dist/components/experimental/experiment_badge/constants.js +4 -0
  150. package/dist/components/experimental/experiment_badge/experiment_badge.js +102 -0
  151. package/dist/components/extended/multi_step_form_template/multi_step_form_template.js +87 -0
  152. package/dist/components/index.js +107 -0
  153. package/dist/components/mixins/button_mixin.js +11 -0
  154. package/dist/components/mixins/safe_link_mixin.js +30 -0
  155. package/dist/components/mixins/tooltip_mixin.js +21 -0
  156. package/dist/components/regions/dashboard_skeleton/dashboard_skeleton.js +53 -0
  157. package/dist/components/regions/empty_state/empty_state.js +181 -0
  158. package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +64 -0
  159. package/dist/components/shared_components/clipboard_button/clipboard_button.js +100 -0
  160. package/dist/components/shared_components/close_button/close_button.js +55 -0
  161. package/dist/components/utilities/animated_number/animated_number.js +131 -0
  162. package/dist/components/utilities/friendly_wrap/friendly_wrap.js +75 -0
  163. package/dist/components/utilities/intersection_observer/intersection_observer.js +88 -0
  164. package/dist/components/utilities/intersperse/intersperse.js +104 -0
  165. package/dist/components/utilities/sprintf/sprintf.js +171 -0
  166. package/dist/components/utilities/truncate/constants.js +8 -0
  167. package/dist/components/utilities/truncate/truncate.js +154 -0
  168. package/dist/components/utilities/truncate_text/constants.js +7 -0
  169. package/dist/components/utilities/truncate_text/truncate_text.js +146 -0
  170. package/dist/config.js +53 -0
  171. package/dist/directives/hover_load/hover_load.js +45 -0
  172. package/dist/directives/index.js +8 -0
  173. package/dist/directives/modal.js +1 -0
  174. package/dist/directives/outside/outside.js +149 -0
  175. package/dist/directives/resize_observer/resize_observer.js +58 -0
  176. package/dist/directives/safe_html/constants.js +6 -0
  177. package/dist/directives/safe_html/safe_html.js +39 -0
  178. package/dist/directives/safe_link/mock_data.js +10 -0
  179. package/dist/directives/safe_link/safe_link.js +67 -0
  180. package/dist/directives/tooltip/container.js +7 -0
  181. package/dist/directives/tooltip/tooltip.js +18 -0
  182. package/dist/index.css +7 -0
  183. package/dist/index.css.map +1 -0
  184. package/dist/index.js +2 -0
  185. package/dist/tailwind.css +2 -0
  186. package/dist/tailwind.css.map +1 -0
  187. package/dist/tokens/build/js/tokens.dark.js +1410 -0
  188. package/dist/tokens/build/js/tokens.js +1410 -0
  189. package/dist/tokens/common_story_options.js +29 -0
  190. package/dist/tokens/tokens_story.js +76 -0
  191. package/dist/utils/breakpoints.js +20 -0
  192. package/dist/utils/charts/config.js +616 -0
  193. package/dist/utils/charts/constants.js +69 -0
  194. package/dist/utils/charts/mock_data.js +191 -0
  195. package/dist/utils/charts/story_config.js +24 -0
  196. package/dist/utils/charts/theme.js +200 -0
  197. package/dist/utils/charts/utils.js +54 -0
  198. package/dist/utils/constants.js +331 -0
  199. package/dist/utils/data_utils.js +19 -0
  200. package/dist/utils/datetime_utility.js +61 -0
  201. package/dist/utils/equality_utils.js +84 -0
  202. package/dist/utils/form_options_utils.js +46 -0
  203. package/dist/utils/i18n.js +65 -0
  204. package/dist/utils/is_slot_empty.js +34 -0
  205. package/dist/utils/number_utils.js +132 -0
  206. package/dist/utils/play_utils.js +11 -0
  207. package/dist/utils/set_utils.js +25 -0
  208. package/dist/utils/stories_constants.js +29 -0
  209. package/dist/utils/stories_utils.js +62 -0
  210. package/dist/utils/story_decorators/container.js +19 -0
  211. package/dist/utils/string_utils.js +69 -0
  212. package/dist/utils/svgs/svg_paths.js +7 -0
  213. package/dist/utils/test_utils.js +33 -0
  214. package/dist/utils/use_fake_date.js +29 -0
  215. package/dist/utils/use_mock_intersection_observer.js +105 -0
  216. package/dist/utils/utils.js +205 -0
  217. package/dist/utils/vue_utils.js +57 -0
  218. package/dist/utils.js +5 -0
  219. package/dist/vendor/bootstrap-vue/src/bv-config.js +8 -0
  220. package/dist/vendor/bootstrap-vue/src/components/button/button-close.js +81 -0
  221. package/dist/vendor/bootstrap-vue/src/components/button/button.js +204 -0
  222. package/dist/vendor/bootstrap-vue/src/components/button/index.js +2 -0
  223. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +41 -0
  224. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +52 -0
  225. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +75 -0
  226. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +52 -0
  227. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +85 -0
  228. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +97 -0
  229. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +60 -0
  230. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +270 -0
  231. package/dist/vendor/bootstrap-vue/src/components/dropdown/index.js +8 -0
  232. package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +53 -0
  233. package/dist/vendor/bootstrap-vue/src/components/form/form-text.js +55 -0
  234. package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +53 -0
  235. package/dist/vendor/bootstrap-vue/src/components/form/form.js +56 -0
  236. package/dist/vendor/bootstrap-vue/src/components/form/index.js +4 -0
  237. package/dist/vendor/bootstrap-vue/src/components/form-group/form-group.js +347 -0
  238. package/dist/vendor/bootstrap-vue/src/components/form-group/index.js +1 -0
  239. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +54 -0
  240. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +41 -0
  241. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +143 -0
  242. package/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +56 -0
  243. package/dist/vendor/bootstrap-vue/src/components/form-select/index.js +3 -0
  244. package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +217 -0
  245. package/dist/vendor/bootstrap-vue/src/components/form-textarea/index.js +1 -0
  246. package/dist/vendor/bootstrap-vue/src/components/layout/col.js +155 -0
  247. package/dist/vendor/bootstrap-vue/src/components/layout/form-row.js +34 -0
  248. package/dist/vendor/bootstrap-vue/src/components/layout/index.js +2 -0
  249. package/dist/vendor/bootstrap-vue/src/components/link/index.js +1 -0
  250. package/dist/vendor/bootstrap-vue/src/components/link/link.js +283 -0
  251. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.js +21 -0
  252. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +212 -0
  253. package/dist/vendor/bootstrap-vue/src/components/modal/index.js +1 -0
  254. package/dist/vendor/bootstrap-vue/src/components/modal/modal.js +1059 -0
  255. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +55 -0
  256. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js +31 -0
  257. package/dist/vendor/bootstrap-vue/src/components/popover/index.js +1 -0
  258. package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +49 -0
  259. package/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js +22 -0
  260. package/dist/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +64 -0
  261. package/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js +40 -0
  262. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +43 -0
  263. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +83 -0
  264. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +50 -0
  265. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +32 -0
  266. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +82 -0
  267. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +292 -0
  268. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +154 -0
  269. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +44 -0
  270. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +191 -0
  271. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +213 -0
  272. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +274 -0
  273. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +39 -0
  274. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +186 -0
  275. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +338 -0
  276. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +243 -0
  277. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +50 -0
  278. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +218 -0
  279. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +42 -0
  280. package/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js +86 -0
  281. package/dist/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +31 -0
  282. package/dist/vendor/bootstrap-vue/src/components/table/helpers/stringify-record-values.js +11 -0
  283. package/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js +14 -0
  284. package/dist/vendor/bootstrap-vue/src/components/table/index.js +9 -0
  285. package/dist/vendor/bootstrap-vue/src/components/table/table-lite.js +51 -0
  286. package/dist/vendor/bootstrap-vue/src/components/table/table-simple.js +44 -0
  287. package/dist/vendor/bootstrap-vue/src/components/table/table.js +67 -0
  288. package/dist/vendor/bootstrap-vue/src/components/table/tbody.js +116 -0
  289. package/dist/vendor/bootstrap-vue/src/components/table/td.js +204 -0
  290. package/dist/vendor/bootstrap-vue/src/components/table/tfoot.js +96 -0
  291. package/dist/vendor/bootstrap-vue/src/components/table/th.js +26 -0
  292. package/dist/vendor/bootstrap-vue/src/components/table/thead.js +99 -0
  293. package/dist/vendor/bootstrap-vue/src/components/table/tr.js +121 -0
  294. package/dist/vendor/bootstrap-vue/src/components/tabs/index.js +2 -0
  295. package/dist/vendor/bootstrap-vue/src/components/tabs/tab.js +238 -0
  296. package/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js +690 -0
  297. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +251 -0
  298. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +118 -0
  299. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +932 -0
  300. package/dist/vendor/bootstrap-vue/src/components/tooltip/index.js +1 -0
  301. package/dist/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +337 -0
  302. package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +103 -0
  303. package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +205 -0
  304. package/dist/vendor/bootstrap-vue/src/constants/components.js +55 -0
  305. package/dist/vendor/bootstrap-vue/src/constants/config.js +11 -0
  306. package/dist/vendor/bootstrap-vue/src/constants/env.js +36 -0
  307. package/dist/vendor/bootstrap-vue/src/constants/events.js +56 -0
  308. package/dist/vendor/bootstrap-vue/src/constants/key-codes.js +11 -0
  309. package/dist/vendor/bootstrap-vue/src/constants/popper.js +10 -0
  310. package/dist/vendor/bootstrap-vue/src/constants/props.js +24 -0
  311. package/dist/vendor/bootstrap-vue/src/constants/regex.js +35 -0
  312. package/dist/vendor/bootstrap-vue/src/constants/safe-types.js +15 -0
  313. package/dist/vendor/bootstrap-vue/src/constants/slots.js +36 -0
  314. package/dist/vendor/bootstrap-vue/src/directives/modal/index.js +1 -0
  315. package/dist/vendor/bootstrap-vue/src/directives/modal/modal.js +112 -0
  316. package/dist/vendor/bootstrap-vue/src/directives/tooltip/index.js +1 -0
  317. package/dist/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +267 -0
  318. package/dist/vendor/bootstrap-vue/src/directives/visible/index.js +1 -0
  319. package/dist/vendor/bootstrap-vue/src/directives/visible/visible.js +187 -0
  320. package/dist/vendor/bootstrap-vue/src/mixins/attrs.js +5 -0
  321. package/dist/vendor/bootstrap-vue/src/mixins/click-out.js +54 -0
  322. package/dist/vendor/bootstrap-vue/src/mixins/dropdown.js +470 -0
  323. package/dist/vendor/bootstrap-vue/src/mixins/focus-in.js +46 -0
  324. package/dist/vendor/bootstrap-vue/src/mixins/form-control.js +73 -0
  325. package/dist/vendor/bootstrap-vue/src/mixins/form-custom.js +26 -0
  326. package/dist/vendor/bootstrap-vue/src/mixins/form-options.js +91 -0
  327. package/dist/vendor/bootstrap-vue/src/mixins/form-selection.js +62 -0
  328. package/dist/vendor/bootstrap-vue/src/mixins/form-size.js +26 -0
  329. package/dist/vendor/bootstrap-vue/src/mixins/form-state.js +50 -0
  330. package/dist/vendor/bootstrap-vue/src/mixins/form-text.js +293 -0
  331. package/dist/vendor/bootstrap-vue/src/mixins/form-validity.js +50 -0
  332. package/dist/vendor/bootstrap-vue/src/mixins/has-listener.js +29 -0
  333. package/dist/vendor/bootstrap-vue/src/mixins/id.js +57 -0
  334. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-document.js +62 -0
  335. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-root.js +120 -0
  336. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-window.js +62 -0
  337. package/dist/vendor/bootstrap-vue/src/mixins/listeners.js +25 -0
  338. package/dist/vendor/bootstrap-vue/src/mixins/model.js +10 -0
  339. package/dist/vendor/bootstrap-vue/src/mixins/normalize-slot.js +30 -0
  340. package/dist/vendor/bootstrap-vue/src/mixins/scoped-style.js +18 -0
  341. package/dist/vendor/bootstrap-vue/src/mixins/use-parent.js +14 -0
  342. package/dist/vendor/bootstrap-vue/src/utils/array.js +27 -0
  343. package/dist/vendor/bootstrap-vue/src/utils/bv-event.class.js +60 -0
  344. package/dist/vendor/bootstrap-vue/src/utils/cache.js +60 -0
  345. package/dist/vendor/bootstrap-vue/src/utils/clone-deep.js +18 -0
  346. package/dist/vendor/bootstrap-vue/src/utils/config-set.js +86 -0
  347. package/dist/vendor/bootstrap-vue/src/utils/config.js +71 -0
  348. package/dist/vendor/bootstrap-vue/src/utils/create-new-child-component.js +133 -0
  349. package/dist/vendor/bootstrap-vue/src/utils/css-escape.js +70 -0
  350. package/dist/vendor/bootstrap-vue/src/utils/dom.js +298 -0
  351. package/dist/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +28 -0
  352. package/dist/vendor/bootstrap-vue/src/utils/env.js +16 -0
  353. package/dist/vendor/bootstrap-vue/src/utils/events.js +78 -0
  354. package/dist/vendor/bootstrap-vue/src/utils/get-event-root.js +5 -0
  355. package/dist/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +3 -0
  356. package/dist/vendor/bootstrap-vue/src/utils/get-scope-id.js +9 -0
  357. package/dist/vendor/bootstrap-vue/src/utils/get.js +63 -0
  358. package/dist/vendor/bootstrap-vue/src/utils/html.js +16 -0
  359. package/dist/vendor/bootstrap-vue/src/utils/identity.js +3 -0
  360. package/dist/vendor/bootstrap-vue/src/utils/inspect.js +35 -0
  361. package/dist/vendor/bootstrap-vue/src/utils/locale.js +18 -0
  362. package/dist/vendor/bootstrap-vue/src/utils/loose-equal.js +59 -0
  363. package/dist/vendor/bootstrap-vue/src/utils/loose-index-of.js +13 -0
  364. package/dist/vendor/bootstrap-vue/src/utils/math.js +9 -0
  365. package/dist/vendor/bootstrap-vue/src/utils/memoize.js +14 -0
  366. package/dist/vendor/bootstrap-vue/src/utils/model.js +33 -0
  367. package/dist/vendor/bootstrap-vue/src/utils/noop.js +3 -0
  368. package/dist/vendor/bootstrap-vue/src/utils/normalize-slot.js +51 -0
  369. package/dist/vendor/bootstrap-vue/src/utils/number.js +23 -0
  370. package/dist/vendor/bootstrap-vue/src/utils/object.js +72 -0
  371. package/dist/vendor/bootstrap-vue/src/utils/observe-dom.js +76 -0
  372. package/dist/vendor/bootstrap-vue/src/utils/on-instance-destroy.js +22 -0
  373. package/dist/vendor/bootstrap-vue/src/utils/plugins.js +124 -0
  374. package/dist/vendor/bootstrap-vue/src/utils/props.js +67 -0
  375. package/dist/vendor/bootstrap-vue/src/utils/router.js +150 -0
  376. package/dist/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +14 -0
  377. package/dist/vendor/bootstrap-vue/src/utils/stable-sort.js +28 -0
  378. package/dist/vendor/bootstrap-vue/src/utils/string.js +47 -0
  379. package/dist/vendor/bootstrap-vue/src/utils/stringify-object-values.js +31 -0
  380. package/dist/vendor/bootstrap-vue/src/utils/warn.js +45 -0
  381. package/dist/vendor/bootstrap-vue/src/vue.js +55 -0
  382. package/package.json +6 -5
  383. package/src/components/base/link/link.vue +5 -8
  384. package/src/utils/constants.js +0 -3
  385. package/src/utils/vue_utils.js +56 -0
  386. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +2 -2
  387. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +2 -2
  388. package/src/vendor/bootstrap-vue/src/components/layout/col.js +2 -2
  389. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +219 -52
  390. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +30 -11
  391. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +3 -3
  392. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +1 -2
  393. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +4 -4
  394. package/src/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +2 -3
  395. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +2 -2
  396. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +8 -9
  397. package/src/vendor/bootstrap-vue/src/constants/config.js +2 -2
  398. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +1 -1
  399. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.js +1 -2
  400. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.js +1 -2
  401. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.js +1 -2
  402. package/src/vendor/bootstrap-vue/src/utils/array.js +0 -1
  403. package/src/vendor/bootstrap-vue/src/utils/locale.js +1 -2
@@ -0,0 +1,63 @@
1
+ import { RX_ARRAY_NOTATION } from '../constants/regex';
2
+ import { identity } from './identity';
3
+ import { isArray, isObject, isUndefinedOrNull, isNull } from './inspect';
4
+
5
+ /**
6
+ * Get property defined by dot/array notation in string, returns undefined if not found
7
+ *
8
+ * @link https://gist.github.com/jeneg/9767afdcca45601ea44930ea03e0febf#gistcomment-1935901
9
+ *
10
+ * @param {Object} obj
11
+ * @param {string|Array} path
12
+ * @return {*}
13
+ */
14
+ const getRaw = function (obj, path) {
15
+ let defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
16
+ // Handle array of path values
17
+ path = isArray(path) ? path.join('.') : path;
18
+
19
+ // If no path or no object passed
20
+ if (!path || !isObject(obj)) {
21
+ return defaultValue;
22
+ }
23
+
24
+ // Handle edge case where user has dot(s) in top-level item field key
25
+ // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2762
26
+ // Switched to `in` operator vs `hasOwnProperty` to handle obj.prototype getters
27
+ // https://github.com/bootstrap-vue/bootstrap-vue/issues/3463
28
+ if (path in obj) {
29
+ return obj[path];
30
+ }
31
+
32
+ // Handle string array notation (numeric indices only)
33
+ path = String(path).replace(RX_ARRAY_NOTATION, '.$1');
34
+ const steps = path.split('.').filter(identity);
35
+
36
+ // Handle case where someone passes a string of only dots
37
+ if (steps.length === 0) {
38
+ return defaultValue;
39
+ }
40
+
41
+ // Traverse path in object to find result
42
+ // Switched to `in` operator vs `hasOwnProperty` to handle obj.prototype getters
43
+ // https://github.com/bootstrap-vue/bootstrap-vue/issues/3463
44
+ return steps.every(step => isObject(obj) && step in obj && !isUndefinedOrNull(obj = obj[step])) ? obj : isNull(obj) ? null : defaultValue;
45
+ };
46
+
47
+ /**
48
+ * Get property defined by dot/array notation in string.
49
+ *
50
+ * @link https://gist.github.com/jeneg/9767afdcca45601ea44930ea03e0febf#gistcomment-1935901
51
+ *
52
+ * @param {Object} obj
53
+ * @param {string|Array} path
54
+ * @param {*} defaultValue (optional)
55
+ * @return {*}
56
+ */
57
+ const get = function (obj, path) {
58
+ let defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
59
+ const value = getRaw(obj, path);
60
+ return isUndefinedOrNull(value) ? defaultValue : value;
61
+ };
62
+
63
+ export { get, getRaw };
@@ -0,0 +1,16 @@
1
+ import { RX_HTML_TAGS } from '../constants/regex';
2
+
3
+ // Removes anything that looks like an HTML tag from the supplied string
4
+ const stripTags = function () {
5
+ let text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
6
+ return String(text).replace(RX_HTML_TAGS, '');
7
+ };
8
+
9
+ // Generate a `domProps` object for either `innerHTML`, `textContent` or an empty object
10
+ const htmlOrText = (innerHTML, textContent) => innerHTML ? {
11
+ innerHTML
12
+ } : textContent ? {
13
+ textContent
14
+ } : {};
15
+
16
+ export { htmlOrText, stripTags };
@@ -0,0 +1,3 @@
1
+ const identity = x => x;
2
+
3
+ export { identity };
@@ -0,0 +1,35 @@
1
+ import { RX_NUMBER } from '../constants/regex';
2
+ import { File } from '../constants/safe-types';
3
+
4
+ // --- Convenience inspection utilities ---
5
+
6
+ const toType = value => typeof value;
7
+ const toRawType = value => Object.prototype.toString.call(value).slice(8, -1);
8
+ const toRawTypeLC = value => toRawType(value).toLowerCase();
9
+ const isUndefined = value => value === undefined;
10
+ const isNull = value => value === null;
11
+ const isUndefinedOrNull = value => isUndefined(value) || isNull(value);
12
+ const isFunction = value => toType(value) === 'function';
13
+ const isBoolean = value => toType(value) === 'boolean';
14
+ const isString = value => toType(value) === 'string';
15
+ const isNumber = value => toType(value) === 'number';
16
+ const isNumeric = value => RX_NUMBER.test(String(value));
17
+ const isPrimitive = value => isBoolean(value) || isString(value) || isNumber(value);
18
+ const isArray = value => Array.isArray(value);
19
+
20
+ // Quick object check
21
+ // This is primarily used to tell Objects from primitive values
22
+ // when we know the value is a JSON-compliant type
23
+ // Note object could be a complex type like array, Date, etc.
24
+ const isObject = obj => obj !== null && typeof obj === 'object';
25
+
26
+ // Strict object type check
27
+ // Only returns true for plain JavaScript objects
28
+ const isPlainObject = obj => Object.prototype.toString.call(obj) === '[object Object]';
29
+ const isDate = value => value instanceof Date;
30
+ const isEvent = value => value instanceof Event;
31
+ const isFile = value => value instanceof File;
32
+ const isRegExp = value => toRawType(value) === 'RegExp';
33
+ const isPromise = value => !isUndefinedOrNull(value) && isFunction(value.then) && isFunction(value.catch);
34
+
35
+ export { isArray, isBoolean, isDate, isEvent, isFile, isFunction, isNull, isNumber, isNumeric, isObject, isPlainObject, isPrimitive, isPromise, isRegExp, isString, isUndefined, isUndefinedOrNull, toRawType, toRawTypeLC, toType };
@@ -0,0 +1,18 @@
1
+ import { RX_STRIP_LOCALE_MODS } from '../constants/regex';
2
+ import { toString } from './string';
3
+
4
+ // Localization utilities
5
+
6
+ // Languages that are RTL
7
+ const RTL_LANGS = ['ar', 'az', 'ckb', 'fa', 'he', 'ks', 'lrc', 'mzn', 'ps', 'sd', 'te', 'ug', 'ur', 'yi'].map(locale => locale.toLowerCase());
8
+
9
+ // Returns true if the locale is RTL
10
+ const isLocaleRTL = locale => {
11
+ // Determines if the locale is RTL (only single locale supported)
12
+ const parts = toString(locale).toLowerCase().replace(RX_STRIP_LOCALE_MODS, '').split('-');
13
+ const locale1 = parts.slice(0, 2).join('-');
14
+ const locale2 = parts[0];
15
+ return RTL_LANGS.includes(locale1) || RTL_LANGS.includes(locale2);
16
+ };
17
+
18
+ export { isLocaleRTL };
@@ -0,0 +1,59 @@
1
+ import { keys, hasOwnProperty } from './object';
2
+ import { isDate, isArray, isObject } from './inspect';
3
+
4
+ // Assumes both a and b are arrays!
5
+ // Handles when arrays are "sparse" (array.every(...) doesn't handle sparse)
6
+ const compareArrays = (a, b) => {
7
+ if (a.length !== b.length) {
8
+ return false;
9
+ }
10
+ let equal = true;
11
+ for (let i = 0; equal && i < a.length; i++) {
12
+ equal = looseEqual(a[i], b[i]);
13
+ }
14
+ return equal;
15
+ };
16
+
17
+ /**
18
+ * Check if two values are loosely equal - that is,
19
+ * if they are plain objects, do they have the same shape?
20
+ * Returns boolean true or false
21
+ */
22
+ const looseEqual = (a, b) => {
23
+ if (a === b) {
24
+ return true;
25
+ }
26
+ let aValidType = isDate(a);
27
+ let bValidType = isDate(b);
28
+ if (aValidType || bValidType) {
29
+ return aValidType && bValidType ? a.getTime() === b.getTime() : false;
30
+ }
31
+ aValidType = isArray(a);
32
+ bValidType = isArray(b);
33
+ if (aValidType || bValidType) {
34
+ return aValidType && bValidType ? compareArrays(a, b) : false;
35
+ }
36
+ aValidType = isObject(a);
37
+ bValidType = isObject(b);
38
+ if (aValidType || bValidType) {
39
+ /* istanbul ignore if: this if will probably never be called */
40
+ if (!aValidType || !bValidType) {
41
+ return false;
42
+ }
43
+ const aKeysCount = keys(a).length;
44
+ const bKeysCount = keys(b).length;
45
+ if (aKeysCount !== bKeysCount) {
46
+ return false;
47
+ }
48
+ for (const key in a) {
49
+ const aHasKey = hasOwnProperty(a, key);
50
+ const bHasKey = hasOwnProperty(b, key);
51
+ if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
52
+ return false;
53
+ }
54
+ }
55
+ }
56
+ return String(a) === String(b);
57
+ };
58
+
59
+ export { looseEqual };
@@ -0,0 +1,13 @@
1
+ import { looseEqual } from './loose-equal';
2
+
3
+ // Assumes that the first argument is an array
4
+ const looseIndexOf = (array, value) => {
5
+ for (let i = 0; i < array.length; i++) {
6
+ if (looseEqual(array[i], value)) {
7
+ return i;
8
+ }
9
+ }
10
+ return -1;
11
+ };
12
+
13
+ export { looseIndexOf };
@@ -0,0 +1,9 @@
1
+ // Math utilty functions
2
+
3
+ const mathMin = Math.min;
4
+ const mathMax = Math.max;
5
+ const mathCeil = Math.ceil;
6
+ const mathPow = Math.pow;
7
+ const mathRound = Math.round;
8
+
9
+ export { mathCeil, mathMax, mathMin, mathPow, mathRound };
@@ -0,0 +1,14 @@
1
+ import { create } from './object';
2
+
3
+ const memoize = fn => {
4
+ const cache = create(null);
5
+ return function () {
6
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
7
+ args[_key] = arguments[_key];
8
+ }
9
+ const argsKey = JSON.stringify(args);
10
+ return cache[argsKey] = cache[argsKey] || fn.apply(null, args);
11
+ };
12
+ };
13
+
14
+ export { memoize };
@@ -0,0 +1,33 @@
1
+ import { extend } from '../vue';
2
+ import { EVENT_NAME_INPUT } from '../constants/events';
3
+ import { PROP_TYPE_ANY } from '../constants/props';
4
+ import { makeProp } from './props';
5
+
6
+ const makeModelMixin = function (prop) {
7
+ let {
8
+ type = PROP_TYPE_ANY,
9
+ defaultValue = undefined,
10
+ validator = undefined,
11
+ event = EVENT_NAME_INPUT
12
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13
+ const props = {
14
+ [prop]: makeProp(type, defaultValue, validator)
15
+ };
16
+
17
+ // @vue/component
18
+ const mixin = extend({
19
+ model: {
20
+ prop,
21
+ event
22
+ },
23
+ props
24
+ });
25
+ return {
26
+ mixin,
27
+ props,
28
+ prop,
29
+ event
30
+ };
31
+ };
32
+
33
+ export { makeModelMixin };
@@ -0,0 +1,3 @@
1
+ const noop = () => {};
2
+
3
+ export { noop };
@@ -0,0 +1,51 @@
1
+ import { concat } from './array';
2
+ import { identity } from './identity';
3
+ import { isFunction } from './inspect';
4
+
5
+ // Note for functional components:
6
+ // In functional components, `slots` is a function so it must be called
7
+ // first before passing to the below methods. `scopedSlots` is always an
8
+ // object and may be undefined (for Vue < 2.6.x)
9
+
10
+ /**
11
+ * Returns true if either scoped or unscoped named slot exists
12
+ *
13
+ * @param {String, Array} name or name[]
14
+ * @param {Object} scopedSlots
15
+ * @param {Object} slots
16
+ * @returns {Array|undefined} VNodes
17
+ */
18
+ const hasNormalizedSlot = function (names) {
19
+ let $scopedSlots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
20
+ let $slots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
21
+ // Ensure names is an array
22
+ names = concat(names).filter(identity);
23
+ // Returns true if the either a $scopedSlot or $slot exists with the specified name
24
+ return names.some(name => $scopedSlots[name] || $slots[name]);
25
+ };
26
+
27
+ /**
28
+ * Returns VNodes for named slot either scoped or unscoped
29
+ *
30
+ * @param {String, Array} name or name[]
31
+ * @param {String} scope
32
+ * @param {Object} scopedSlots
33
+ * @param {Object} slots
34
+ * @returns {Array|undefined} VNodes
35
+ */
36
+ const normalizeSlot = function (names) {
37
+ let scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
38
+ let $scopedSlots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
39
+ let $slots = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
40
+ // Ensure names is an array
41
+ names = concat(names).filter(identity);
42
+ let slot;
43
+ for (let i = 0; i < names.length && !slot; i++) {
44
+ const name = names[i];
45
+ slot = $scopedSlots[name] || $slots[name];
46
+ }
47
+ // Note: in Vue 2.6.x, all named slots are also scoped slots
48
+ return isFunction(slot) ? slot(scope) : slot;
49
+ };
50
+
51
+ export { hasNormalizedSlot, normalizeSlot };
@@ -0,0 +1,23 @@
1
+ // Number utilities
2
+
3
+ // Converts a value (string, number, etc.) to an integer number
4
+ // Assumes radix base 10
5
+ const toInteger = function (value) {
6
+ let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;
7
+ const integer = parseInt(value, 10);
8
+ return isNaN(integer) ? defaultValue : integer;
9
+ };
10
+
11
+ // Converts a value (string, number, etc.) to a number
12
+ const toFloat = function (value) {
13
+ let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;
14
+ const float = parseFloat(value);
15
+ return isNaN(float) ? defaultValue : float;
16
+ };
17
+
18
+ // Converts a value (string, number, etc.) to a string
19
+ // representation with `precision` digits after the decimal
20
+ // Returns the string 'NaN' if the value cannot be converted
21
+ const toFixed = (val, precision) => toFloat(val).toFixed(toInteger(precision, 0));
22
+
23
+ export { toFixed, toFloat, toInteger };
@@ -0,0 +1,72 @@
1
+ import { isObject } from './inspect';
2
+
3
+ // --- Static ---
4
+
5
+ const assign = function () {
6
+ return Object.assign(...arguments);
7
+ };
8
+ const create = (proto, optionalProps) => Object.create(proto, optionalProps);
9
+ const defineProperties = (obj, props) => Object.defineProperties(obj, props);
10
+ const defineProperty = (obj, prop, descriptor) => Object.defineProperty(obj, prop, descriptor);
11
+ const getOwnPropertyNames = obj => Object.getOwnPropertyNames(obj);
12
+ const keys = obj => Object.keys(obj);
13
+
14
+ // --- "Instance" ---
15
+
16
+ const hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
17
+
18
+ // --- Utilities ---
19
+
20
+ // Shallow copy an object
21
+ const clone = obj => ({
22
+ ...obj
23
+ });
24
+
25
+ // Return a shallow copy of object with the specified properties only
26
+ // See: https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc
27
+ const pick = (obj, props) => keys(obj).filter(key => props.indexOf(key) !== -1).reduce((result, key) => ({
28
+ ...result,
29
+ [key]: obj[key]
30
+ }), {});
31
+
32
+ // Return a shallow copy of object with the specified properties omitted
33
+ // See: https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc
34
+ const omit = (obj, props) => keys(obj).filter(key => props.indexOf(key) === -1).reduce((result, key) => ({
35
+ ...result,
36
+ [key]: obj[key]
37
+ }), {});
38
+
39
+ // Merges two object deeply together
40
+ // See: https://gist.github.com/Salakar/1d7137de9cb8b704e48a
41
+ const mergeDeep = (target, source) => {
42
+ if (isObject(target) && isObject(source)) {
43
+ keys(source).forEach(key => {
44
+ if (isObject(source[key])) {
45
+ if (!target[key] || !isObject(target[key])) {
46
+ target[key] = source[key];
47
+ }
48
+ mergeDeep(target[key], source[key]);
49
+ } else {
50
+ assign(target, {
51
+ [key]: source[key]
52
+ });
53
+ }
54
+ });
55
+ }
56
+ return target;
57
+ };
58
+
59
+ // Returns a shallow copy of the object with keys in sorted order
60
+ const sortKeys = obj => keys(obj).sort().reduce((result, key) => ({
61
+ ...result,
62
+ [key]: obj[key]
63
+ }), {});
64
+
65
+ // Convenience method to create a read-only descriptor
66
+ const readonlyDescriptor = () => ({
67
+ enumerable: true,
68
+ configurable: false,
69
+ writable: false
70
+ });
71
+
72
+ export { assign, clone, create, defineProperties, defineProperty, getOwnPropertyNames, hasOwnProperty, keys, mergeDeep, omit, pick, readonlyDescriptor, sortKeys };
@@ -0,0 +1,76 @@
1
+ import { isElement, MutationObs } from './dom';
2
+ import { warnNoMutationObserverSupport } from './warn';
3
+
4
+ /**
5
+ * Observe a DOM element changes, falls back to eventListener mode
6
+ * @param {Element} el The DOM element to observe
7
+ * @param {Function} callback callback to be called on change
8
+ * @param {object} [options={childList: true, subtree: true}] observe options
9
+ * @see https://stackoverflow.com/questions/3219758
10
+ */
11
+ const observeDom = (el, callback, options) => /* istanbul ignore next: difficult to test in JSDOM */{
12
+ // Handle cases where we might be passed a Vue instance
13
+ el = el ? el.$el || el : null;
14
+
15
+ // Early exit when we have no element
16
+ /* istanbul ignore next: difficult to test in JSDOM */
17
+ if (!isElement(el)) {
18
+ return null;
19
+ }
20
+
21
+ // Exit and throw a warning when `MutationObserver` isn't available
22
+ if (warnNoMutationObserverSupport('observeDom')) {
23
+ return null;
24
+ }
25
+
26
+ // Define a new observer
27
+ const obs = new MutationObs(mutations => {
28
+ let changed = false;
29
+
30
+ // A mutation can contain several change records, so we loop
31
+ // through them to see what has changed
32
+ // We break out of the loop early if any "significant" change
33
+ // has been detected
34
+ for (let i = 0; i < mutations.length && !changed; i++) {
35
+ // The mutation record
36
+ const mutation = mutations[i];
37
+ // Mutation type
38
+ const type = mutation.type;
39
+ // DOM node (could be any DOM node type - HTMLElement, Text, comment, etc.)
40
+ const target = mutation.target;
41
+
42
+ // Detect whether a change happened based on type and target
43
+ if (type === 'characterData' && target.nodeType === Node.TEXT_NODE) {
44
+ // We ignore nodes that are not TEXT (i.e. comments, etc.)
45
+ // as they don't change layout
46
+ changed = true;
47
+ } else if (type === 'attributes') {
48
+ changed = true;
49
+ } else if (type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0)) {
50
+ // This includes HTMLElement and text nodes being
51
+ // added/removed/re-arranged
52
+ changed = true;
53
+ }
54
+ }
55
+
56
+ // We only call the callback if a change that could affect
57
+ // layout/size truly happened
58
+ if (changed) {
59
+ callback();
60
+ }
61
+ });
62
+
63
+ // Have the observer observe foo for changes in children, etc
64
+ obs.observe(el, {
65
+ childList: true,
66
+ subtree: true,
67
+ ...options
68
+ });
69
+
70
+ // We return a reference to the observer so that `obs.disconnect()`
71
+ // can be called if necessary
72
+ // To reduce overhead when the root element is hidden
73
+ return obs;
74
+ };
75
+
76
+ export { observeDom };
@@ -0,0 +1,22 @@
1
+ import { isVue3 } from '../vue';
2
+
3
+ /**
4
+ * Register a callback to be called when a Vue instance is destroyed/unmounted.
5
+ *
6
+ * For Vue 2: Uses $once with 'hook:destroyed' event
7
+ * For Vue 3: Uses scope.cleanups for proper effect scope cleanup
8
+ *
9
+ * @param {Object} instance - The Vue instance to watch for destruction
10
+ * @param {Function} callback - The callback to run when the instance is destroyed
11
+ */
12
+ const onInstanceDestroy = (instance, callback) => {
13
+ if (isVue3(instance)) {
14
+ // onScopeDispose is not available on instance and we do
15
+ // not want to import 'vue' in this file
16
+ instance.$.scope.cleanups.push(callback);
17
+ return;
18
+ }
19
+ instance.$once('hook:destroyed', callback);
20
+ };
21
+
22
+ export { onInstanceDestroy };
@@ -0,0 +1,124 @@
1
+ import { HAS_WINDOW_SUPPORT } from '../constants/env';
2
+ import { setConfig } from './config-set';
3
+
4
+ /**
5
+ * Plugin install factory function.
6
+ * @param {object} { components, directives }
7
+ * @returns {function} plugin install function
8
+ */
9
+ const installFactory = function () {
10
+ let {
11
+ components,
12
+ directives,
13
+ plugins
14
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15
+ const install = function (Vue) {
16
+ let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
17
+ if (install.installed) {
18
+ /* istanbul ignore next */
19
+ return;
20
+ }
21
+ install.installed = true;
22
+ setConfig(config, Vue);
23
+ registerComponents(Vue, components);
24
+ registerDirectives(Vue, directives);
25
+ registerPlugins(Vue, plugins);
26
+ };
27
+ install.installed = false;
28
+ return install;
29
+ };
30
+
31
+ /**
32
+ * Plugin object factory function.
33
+ * @param {object} { components, directives, plugins }
34
+ * @returns {object} plugin install object
35
+ */
36
+ const pluginFactory = function () {
37
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
38
+ let extend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
39
+ return {
40
+ ...extend,
41
+ install: installFactory(options)
42
+ };
43
+ };
44
+
45
+ /**
46
+ * Load a group of plugins.
47
+ * @param {object} Vue
48
+ * @param {object} Plugin definitions
49
+ */
50
+ const registerPlugins = function (Vue) {
51
+ let plugins = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
52
+ for (const plugin in plugins) {
53
+ if (plugin && plugins[plugin]) {
54
+ Vue.use(plugins[plugin]);
55
+ }
56
+ }
57
+ };
58
+
59
+ /**
60
+ * Load a component.
61
+ * @param {object} Vue
62
+ * @param {string} Component name
63
+ * @param {object} Component definition
64
+ */
65
+ const registerComponent = (Vue, name, def) => {
66
+ if (Vue && name && def) {
67
+ Vue.component(name, def);
68
+ }
69
+ };
70
+
71
+ /**
72
+ * Load a group of components.
73
+ * @param {object} Vue
74
+ * @param {object} Object of component definitions
75
+ */
76
+ const registerComponents = function (Vue) {
77
+ let components = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
78
+ for (const component in components) {
79
+ registerComponent(Vue, component, components[component]);
80
+ }
81
+ };
82
+
83
+ /**
84
+ * Load a directive.
85
+ * @param {object} Vue
86
+ * @param {string} Directive name
87
+ * @param {object} Directive definition
88
+ */
89
+ const registerDirective = (Vue, name, def) => {
90
+ if (Vue && name && def) {
91
+ // Ensure that any leading V is removed from the
92
+ // name, as Vue adds it automatically
93
+ Vue.directive(name.replace(/^VB/, 'B'), def);
94
+ }
95
+ };
96
+
97
+ /**
98
+ * Load a group of directives.
99
+ * @param {object} Vue
100
+ * @param {object} Object of directive definitions
101
+ */
102
+ const registerDirectives = function (Vue) {
103
+ let directives = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
104
+ for (const directive in directives) {
105
+ registerDirective(Vue, directive, directives[directive]);
106
+ }
107
+ };
108
+
109
+ /**
110
+ * Install plugin if window.Vue available
111
+ * @param {object} Plugin definition
112
+ */
113
+ const vueUse = VuePlugin => {
114
+ /* istanbul ignore next */
115
+ if (HAS_WINDOW_SUPPORT && window.Vue) {
116
+ window.Vue.use(VuePlugin);
117
+ }
118
+ /* istanbul ignore next */
119
+ if (HAS_WINDOW_SUPPORT && VuePlugin.NAME) {
120
+ window[VuePlugin.NAME] = VuePlugin;
121
+ }
122
+ };
123
+
124
+ export { installFactory, pluginFactory, registerComponent, registerComponents, registerDirective, registerDirectives, registerPlugins, vueUse };