@gitlab/ui 132.0.1 → 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.
- package/dist/charts.js +13 -0
- package/dist/components/base/accordion/accordion.js +69 -0
- package/dist/components/base/accordion/accordion_item.js +160 -0
- package/dist/components/base/accordion/constants.js +3 -0
- package/dist/components/base/alert/alert.js +263 -0
- package/dist/components/base/animated_icon/animated_chevron_down_up_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_chevron_lg_down_up_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_chevron_lg_right_down_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_chevron_right_down_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_duo_chat_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_loader_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_notifications_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_sidebar_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_smile_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_sort_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_star_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_todo_icon.js +45 -0
- package/dist/components/base/animated_icon/animated_upload_icon.js +45 -0
- package/dist/components/base/animated_icon/base_animated_icon.js +77 -0
- package/dist/components/base/attribute_list/attribute_list.js +100 -0
- package/dist/components/base/avatar/avatar.js +175 -0
- package/dist/components/base/avatar/utils.js +17 -0
- package/dist/components/base/avatar_labeled/avatar_labeled.js +198 -0
- package/dist/components/base/avatar_link/avatar_link.js +47 -0
- package/dist/components/base/avatars_inline/avatars_inline.js +139 -0
- package/dist/components/base/badge/badge.js +197 -0
- package/dist/components/base/banner/banner.js +149 -0
- package/dist/components/base/breadcrumb/breadcrumb.js +282 -0
- package/dist/components/base/breadcrumb/breadcrumb_item.js +96 -0
- package/dist/components/base/broadcast_message/broadcast_message.js +113 -0
- package/dist/components/base/broadcast_message/constants.js +5 -0
- package/dist/components/base/button/button.js +419 -0
- package/dist/components/base/button_group/button_group.js +53 -0
- package/dist/components/base/card/card.js +69 -0
- package/dist/components/base/collapse/collapse.js +163 -0
- package/dist/components/base/color_mode_toggle/color_mode_toggle.js +92 -0
- package/dist/components/base/datepicker/datepicker.js +475 -0
- package/dist/components/base/daterange_picker/daterange_picker.js +394 -0
- package/dist/components/base/drawer/drawer.js +156 -0
- package/dist/components/base/dropdown/dropdown.js +330 -0
- package/dist/components/base/dropdown/dropdown_divider.js +48 -0
- package/dist/components/base/dropdown/dropdown_form.js +48 -0
- package/dist/components/base/dropdown/dropdown_item.js +175 -0
- package/dist/components/base/dropdown/dropdown_section_header.js +48 -0
- package/dist/components/base/dropdown/dropdown_text.js +48 -0
- package/dist/components/base/filtered_search/common_story_options.js +14 -0
- package/dist/components/base/filtered_search/filtered_search.js +428 -0
- package/dist/components/base/filtered_search/filtered_search_suggestion.js +95 -0
- package/dist/components/base/filtered_search/filtered_search_suggestion_list.js +139 -0
- package/dist/components/base/filtered_search/filtered_search_term.js +217 -0
- package/dist/components/base/filtered_search/filtered_search_token.js +383 -0
- package/dist/components/base/filtered_search/filtered_search_token_segment.js +444 -0
- package/dist/components/base/filtered_search/filtered_search_utils.js +241 -0
- package/dist/components/base/form/form.js +43 -0
- package/dist/components/base/form/form_character_count/form_character_count.js +107 -0
- package/dist/components/base/form/form_checkbox/form_checkbox.js +342 -0
- package/dist/components/base/form/form_checkbox/form_checkbox_group.js +188 -0
- package/dist/components/base/form/form_combobox/constants.js +55 -0
- package/dist/components/base/form/form_combobox/form_combobox.js +239 -0
- package/dist/components/base/form/form_date/form_date.js +143 -0
- package/dist/components/base/form/form_fields/form_field_validator.js +93 -0
- package/dist/components/base/form/form_fields/form_fields.js +289 -0
- package/dist/components/base/form/form_fields/form_fields_loop.js +75 -0
- package/dist/components/base/form/form_fields/mappers.js +13 -0
- package/dist/components/base/form/form_fields/validators.js +48 -0
- package/dist/components/base/form/form_group/form_group.js +119 -0
- package/dist/components/base/form/form_input/form_input.js +695 -0
- package/dist/components/base/form/form_input_group/form_input_group.js +120 -0
- package/dist/components/base/form/form_input_group/form_input_group_mixin.js +41 -0
- package/dist/components/base/form/form_radio/form_radio.js +259 -0
- package/dist/components/base/form/form_radio_group/form_radio_group.js +189 -0
- package/dist/components/base/form/form_select/constants.js +12 -0
- package/dist/components/base/form/form_select/form_select.js +96 -0
- package/dist/components/base/form/form_textarea/form_textarea.js +166 -0
- package/dist/components/base/form/input_group_text/input_group_text.js +43 -0
- package/dist/components/base/icon/icon.js +113 -0
- package/dist/components/base/illustration/illustration.js +80 -0
- package/dist/components/base/infinite_scroll/infinite_scroll.js +196 -0
- package/dist/components/base/keyset_pagination/keyset_pagination.js +152 -0
- package/dist/components/base/label/label.js +174 -0
- package/dist/components/base/link/link.js +330 -0
- package/dist/components/base/loading_icon/loading_icon.js +120 -0
- package/dist/components/base/markdown/markdown.js +50 -0
- package/dist/components/base/modal/modal.js +259 -0
- package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +716 -0
- package/dist/components/base/new_dropdowns/base_dropdown/constants.js +5 -0
- package/dist/components/base/new_dropdowns/base_dropdown/dropdown_container.js +32 -0
- package/dist/components/base/new_dropdowns/constants.js +24 -0
- package/dist/components/base/new_dropdowns/disclosure/constants.js +8 -0
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +400 -0
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +112 -0
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +196 -0
- package/dist/components/base/new_dropdowns/disclosure/mock_data.js +168 -0
- package/dist/components/base/new_dropdowns/disclosure/utils.js +84 -0
- package/dist/components/base/new_dropdowns/listbox/listbox.js +997 -0
- package/dist/components/base/new_dropdowns/listbox/listbox_group.js +58 -0
- package/dist/components/base/new_dropdowns/listbox/listbox_item.js +112 -0
- package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +94 -0
- package/dist/components/base/new_dropdowns/listbox/mock_data.js +131 -0
- package/dist/components/base/new_dropdowns/listbox/utils.js +33 -0
- package/dist/components/base/pagination/pagination.js +397 -0
- package/dist/components/base/path/data.js +34 -0
- package/dist/components/base/path/path.js +177 -0
- package/dist/components/base/popover/popover.js +142 -0
- package/dist/components/base/progress_bar/progress_bar.js +117 -0
- package/dist/components/base/search_box_by_click/search_box_by_click.js +245 -0
- package/dist/components/base/search_box_by_type/search_box_by_type.js +187 -0
- package/dist/components/base/segmented_control/segmented_control.js +73 -0
- package/dist/components/base/skeleton_loader/skeleton_loader.js +232 -0
- package/dist/components/base/sorting/sorting.js +180 -0
- package/dist/components/base/table/constants.js +5 -0
- package/dist/components/base/table/table.js +187 -0
- package/dist/components/base/table_lite/table_lite.js +80 -0
- package/dist/components/base/tabs/constants.js +3 -0
- package/dist/components/base/tabs/tab/tab.js +113 -0
- package/dist/components/base/tabs/tabs/scrollable_tabs.js +162 -0
- package/dist/components/base/tabs/tabs/tabs.js +223 -0
- package/dist/components/base/toast/index.js +66 -0
- package/dist/components/base/toast/toast.js +125 -0
- package/dist/components/base/toast/toaster.js +87 -0
- package/dist/components/base/toggle/toggle.js +178 -0
- package/dist/components/base/token/token.js +97 -0
- package/dist/components/base/token_selector/helpers.js +5 -0
- package/dist/components/base/token_selector/token_container.js +160 -0
- package/dist/components/base/token_selector/token_selector.js +454 -0
- package/dist/components/base/token_selector/token_selector_dropdown.js +223 -0
- package/dist/components/base/tooltip/tooltip.js +54 -0
- package/dist/components/charts/area/area.js +329 -0
- package/dist/components/charts/bar/bar.js +207 -0
- package/dist/components/charts/chart/chart.js +215 -0
- package/dist/components/charts/column/column.js +221 -0
- package/dist/components/charts/discrete_scatter/discrete_scatter.js +199 -0
- package/dist/components/charts/gauge/gauge.js +205 -0
- package/dist/components/charts/heatmap/heatmap.js +299 -0
- package/dist/components/charts/heatmap/index.js +2 -0
- package/dist/components/charts/legend/legend.js +245 -0
- package/dist/components/charts/line/line.js +340 -0
- package/dist/components/charts/series_label/series_label.js +101 -0
- package/dist/components/charts/shared/tooltip/tooltip.js +369 -0
- package/dist/components/charts/shared/tooltip/tooltip_default_format/tooltip_default_format.js +53 -0
- package/dist/components/charts/single_stat/single_stat.js +164 -0
- package/dist/components/charts/sparkline/sparkline.js +299 -0
- package/dist/components/charts/stacked_column/stacked_column.js +380 -0
- package/dist/components/dashboards/dashboard_layout/dashboard_layout.js +125 -0
- package/dist/components/dashboards/dashboard_layout/grid_layout/grid_layout.js +326 -0
- package/dist/components/dashboards/dashboard_layout/validators.js +14 -0
- package/dist/components/dashboards/dashboard_panel/dashboard_panel.js +236 -0
- package/dist/components/dashboards/mock_data.js +49 -0
- package/dist/components/experimental/experiment_badge/constants.js +4 -0
- package/dist/components/experimental/experiment_badge/experiment_badge.js +102 -0
- package/dist/components/extended/multi_step_form_template/multi_step_form_template.js +87 -0
- package/dist/components/index.js +107 -0
- package/dist/components/mixins/button_mixin.js +11 -0
- package/dist/components/mixins/safe_link_mixin.js +30 -0
- package/dist/components/mixins/tooltip_mixin.js +21 -0
- package/dist/components/regions/dashboard_skeleton/dashboard_skeleton.js +53 -0
- package/dist/components/regions/empty_state/empty_state.js +181 -0
- package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +64 -0
- package/dist/components/shared_components/clipboard_button/clipboard_button.js +100 -0
- package/dist/components/shared_components/close_button/close_button.js +55 -0
- package/dist/components/utilities/animated_number/animated_number.js +131 -0
- package/dist/components/utilities/friendly_wrap/friendly_wrap.js +75 -0
- package/dist/components/utilities/intersection_observer/intersection_observer.js +88 -0
- package/dist/components/utilities/intersperse/intersperse.js +104 -0
- package/dist/components/utilities/sprintf/sprintf.js +171 -0
- package/dist/components/utilities/truncate/constants.js +8 -0
- package/dist/components/utilities/truncate/truncate.js +154 -0
- package/dist/components/utilities/truncate_text/constants.js +7 -0
- package/dist/components/utilities/truncate_text/truncate_text.js +146 -0
- package/dist/config.js +53 -0
- package/dist/directives/hover_load/hover_load.js +45 -0
- package/dist/directives/index.js +8 -0
- package/dist/directives/modal.js +1 -0
- package/dist/directives/outside/outside.js +149 -0
- package/dist/directives/resize_observer/resize_observer.js +58 -0
- package/dist/directives/safe_html/constants.js +6 -0
- package/dist/directives/safe_html/safe_html.js +39 -0
- package/dist/directives/safe_link/mock_data.js +10 -0
- package/dist/directives/safe_link/safe_link.js +67 -0
- package/dist/directives/tooltip/container.js +7 -0
- package/dist/directives/tooltip/tooltip.js +18 -0
- package/dist/index.css +7 -0
- package/dist/index.css.map +1 -0
- package/dist/index.js +2 -0
- package/dist/tailwind.css +2 -0
- package/dist/tailwind.css.map +1 -0
- package/dist/tokens/build/js/tokens.dark.js +1410 -0
- package/dist/tokens/build/js/tokens.js +1410 -0
- package/dist/tokens/common_story_options.js +29 -0
- package/dist/tokens/tokens_story.js +76 -0
- package/dist/utils/breakpoints.js +20 -0
- package/dist/utils/charts/config.js +616 -0
- package/dist/utils/charts/constants.js +69 -0
- package/dist/utils/charts/mock_data.js +191 -0
- package/dist/utils/charts/story_config.js +24 -0
- package/dist/utils/charts/theme.js +200 -0
- package/dist/utils/charts/utils.js +54 -0
- package/dist/utils/constants.js +331 -0
- package/dist/utils/data_utils.js +19 -0
- package/dist/utils/datetime_utility.js +61 -0
- package/dist/utils/equality_utils.js +84 -0
- package/dist/utils/form_options_utils.js +46 -0
- package/dist/utils/i18n.js +65 -0
- package/dist/utils/is_slot_empty.js +34 -0
- package/dist/utils/number_utils.js +132 -0
- package/dist/utils/play_utils.js +11 -0
- package/dist/utils/set_utils.js +25 -0
- package/dist/utils/stories_constants.js +29 -0
- package/dist/utils/stories_utils.js +62 -0
- package/dist/utils/story_decorators/container.js +19 -0
- package/dist/utils/string_utils.js +69 -0
- package/dist/utils/svgs/svg_paths.js +7 -0
- package/dist/utils/test_utils.js +33 -0
- package/dist/utils/use_fake_date.js +29 -0
- package/dist/utils/use_mock_intersection_observer.js +105 -0
- package/dist/utils/utils.js +205 -0
- package/dist/utils/vue_utils.js +57 -0
- package/dist/utils.js +5 -0
- package/dist/vendor/bootstrap-vue/src/bv-config.js +8 -0
- package/dist/vendor/bootstrap-vue/src/components/button/button-close.js +81 -0
- package/dist/vendor/bootstrap-vue/src/components/button/button.js +204 -0
- package/dist/vendor/bootstrap-vue/src/components/button/index.js +2 -0
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +41 -0
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +52 -0
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +75 -0
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +52 -0
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +85 -0
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +97 -0
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +60 -0
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +270 -0
- package/dist/vendor/bootstrap-vue/src/components/dropdown/index.js +8 -0
- package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +53 -0
- package/dist/vendor/bootstrap-vue/src/components/form/form-text.js +55 -0
- package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +53 -0
- package/dist/vendor/bootstrap-vue/src/components/form/form.js +56 -0
- package/dist/vendor/bootstrap-vue/src/components/form/index.js +4 -0
- package/dist/vendor/bootstrap-vue/src/components/form-group/form-group.js +347 -0
- package/dist/vendor/bootstrap-vue/src/components/form-group/index.js +1 -0
- package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +54 -0
- package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +41 -0
- package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +143 -0
- package/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +56 -0
- package/dist/vendor/bootstrap-vue/src/components/form-select/index.js +3 -0
- package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +217 -0
- package/dist/vendor/bootstrap-vue/src/components/form-textarea/index.js +1 -0
- package/dist/vendor/bootstrap-vue/src/components/layout/col.js +155 -0
- package/dist/vendor/bootstrap-vue/src/components/layout/form-row.js +34 -0
- package/dist/vendor/bootstrap-vue/src/components/layout/index.js +2 -0
- package/dist/vendor/bootstrap-vue/src/components/link/index.js +1 -0
- package/dist/vendor/bootstrap-vue/src/components/link/link.js +283 -0
- package/dist/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.js +21 -0
- package/dist/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +212 -0
- package/dist/vendor/bootstrap-vue/src/components/modal/index.js +1 -0
- package/dist/vendor/bootstrap-vue/src/components/modal/modal.js +1059 -0
- package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +55 -0
- package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js +31 -0
- package/dist/vendor/bootstrap-vue/src/components/popover/index.js +1 -0
- package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +49 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js +22 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +64 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js +40 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +43 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +83 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +50 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +32 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +82 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +292 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +154 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +44 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +191 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +213 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +274 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +39 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +186 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +338 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +243 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +50 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +218 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +42 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js +86 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +31 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/stringify-record-values.js +11 -0
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js +14 -0
- package/dist/vendor/bootstrap-vue/src/components/table/index.js +9 -0
- package/dist/vendor/bootstrap-vue/src/components/table/table-lite.js +51 -0
- package/dist/vendor/bootstrap-vue/src/components/table/table-simple.js +44 -0
- package/dist/vendor/bootstrap-vue/src/components/table/table.js +67 -0
- package/dist/vendor/bootstrap-vue/src/components/table/tbody.js +116 -0
- package/dist/vendor/bootstrap-vue/src/components/table/td.js +204 -0
- package/dist/vendor/bootstrap-vue/src/components/table/tfoot.js +96 -0
- package/dist/vendor/bootstrap-vue/src/components/table/th.js +26 -0
- package/dist/vendor/bootstrap-vue/src/components/table/thead.js +99 -0
- package/dist/vendor/bootstrap-vue/src/components/table/tr.js +121 -0
- package/dist/vendor/bootstrap-vue/src/components/tabs/index.js +2 -0
- package/dist/vendor/bootstrap-vue/src/components/tabs/tab.js +238 -0
- package/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js +690 -0
- package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +251 -0
- package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +118 -0
- package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +932 -0
- package/dist/vendor/bootstrap-vue/src/components/tooltip/index.js +1 -0
- package/dist/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +337 -0
- package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +103 -0
- package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +205 -0
- package/dist/vendor/bootstrap-vue/src/constants/components.js +55 -0
- package/dist/vendor/bootstrap-vue/src/constants/config.js +11 -0
- package/dist/vendor/bootstrap-vue/src/constants/env.js +36 -0
- package/dist/vendor/bootstrap-vue/src/constants/events.js +56 -0
- package/dist/vendor/bootstrap-vue/src/constants/key-codes.js +11 -0
- package/dist/vendor/bootstrap-vue/src/constants/popper.js +10 -0
- package/dist/vendor/bootstrap-vue/src/constants/props.js +24 -0
- package/dist/vendor/bootstrap-vue/src/constants/regex.js +35 -0
- package/dist/vendor/bootstrap-vue/src/constants/safe-types.js +15 -0
- package/dist/vendor/bootstrap-vue/src/constants/slots.js +36 -0
- package/dist/vendor/bootstrap-vue/src/directives/modal/index.js +1 -0
- package/dist/vendor/bootstrap-vue/src/directives/modal/modal.js +112 -0
- package/dist/vendor/bootstrap-vue/src/directives/tooltip/index.js +1 -0
- package/dist/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +267 -0
- package/dist/vendor/bootstrap-vue/src/directives/visible/index.js +1 -0
- package/dist/vendor/bootstrap-vue/src/directives/visible/visible.js +187 -0
- package/dist/vendor/bootstrap-vue/src/mixins/attrs.js +5 -0
- package/dist/vendor/bootstrap-vue/src/mixins/click-out.js +54 -0
- package/dist/vendor/bootstrap-vue/src/mixins/dropdown.js +470 -0
- package/dist/vendor/bootstrap-vue/src/mixins/focus-in.js +46 -0
- package/dist/vendor/bootstrap-vue/src/mixins/form-control.js +73 -0
- package/dist/vendor/bootstrap-vue/src/mixins/form-custom.js +26 -0
- package/dist/vendor/bootstrap-vue/src/mixins/form-options.js +91 -0
- package/dist/vendor/bootstrap-vue/src/mixins/form-selection.js +62 -0
- package/dist/vendor/bootstrap-vue/src/mixins/form-size.js +26 -0
- package/dist/vendor/bootstrap-vue/src/mixins/form-state.js +50 -0
- package/dist/vendor/bootstrap-vue/src/mixins/form-text.js +293 -0
- package/dist/vendor/bootstrap-vue/src/mixins/form-validity.js +50 -0
- package/dist/vendor/bootstrap-vue/src/mixins/has-listener.js +29 -0
- package/dist/vendor/bootstrap-vue/src/mixins/id.js +57 -0
- package/dist/vendor/bootstrap-vue/src/mixins/listen-on-document.js +62 -0
- package/dist/vendor/bootstrap-vue/src/mixins/listen-on-root.js +120 -0
- package/dist/vendor/bootstrap-vue/src/mixins/listen-on-window.js +62 -0
- package/dist/vendor/bootstrap-vue/src/mixins/listeners.js +25 -0
- package/dist/vendor/bootstrap-vue/src/mixins/model.js +10 -0
- package/dist/vendor/bootstrap-vue/src/mixins/normalize-slot.js +30 -0
- package/dist/vendor/bootstrap-vue/src/mixins/scoped-style.js +18 -0
- package/dist/vendor/bootstrap-vue/src/mixins/use-parent.js +14 -0
- package/dist/vendor/bootstrap-vue/src/utils/array.js +27 -0
- package/dist/vendor/bootstrap-vue/src/utils/bv-event.class.js +60 -0
- package/dist/vendor/bootstrap-vue/src/utils/cache.js +60 -0
- package/dist/vendor/bootstrap-vue/src/utils/clone-deep.js +18 -0
- package/dist/vendor/bootstrap-vue/src/utils/config-set.js +86 -0
- package/dist/vendor/bootstrap-vue/src/utils/config.js +71 -0
- package/dist/vendor/bootstrap-vue/src/utils/create-new-child-component.js +133 -0
- package/dist/vendor/bootstrap-vue/src/utils/css-escape.js +70 -0
- package/dist/vendor/bootstrap-vue/src/utils/dom.js +298 -0
- package/dist/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +28 -0
- package/dist/vendor/bootstrap-vue/src/utils/env.js +16 -0
- package/dist/vendor/bootstrap-vue/src/utils/events.js +78 -0
- package/dist/vendor/bootstrap-vue/src/utils/get-event-root.js +5 -0
- package/dist/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +3 -0
- package/dist/vendor/bootstrap-vue/src/utils/get-scope-id.js +9 -0
- package/dist/vendor/bootstrap-vue/src/utils/get.js +63 -0
- package/dist/vendor/bootstrap-vue/src/utils/html.js +16 -0
- package/dist/vendor/bootstrap-vue/src/utils/identity.js +3 -0
- package/dist/vendor/bootstrap-vue/src/utils/inspect.js +35 -0
- package/dist/vendor/bootstrap-vue/src/utils/locale.js +18 -0
- package/dist/vendor/bootstrap-vue/src/utils/loose-equal.js +59 -0
- package/dist/vendor/bootstrap-vue/src/utils/loose-index-of.js +13 -0
- package/dist/vendor/bootstrap-vue/src/utils/math.js +9 -0
- package/dist/vendor/bootstrap-vue/src/utils/memoize.js +14 -0
- package/dist/vendor/bootstrap-vue/src/utils/model.js +33 -0
- package/dist/vendor/bootstrap-vue/src/utils/noop.js +3 -0
- package/dist/vendor/bootstrap-vue/src/utils/normalize-slot.js +51 -0
- package/dist/vendor/bootstrap-vue/src/utils/number.js +23 -0
- package/dist/vendor/bootstrap-vue/src/utils/object.js +72 -0
- package/dist/vendor/bootstrap-vue/src/utils/observe-dom.js +76 -0
- package/dist/vendor/bootstrap-vue/src/utils/on-instance-destroy.js +22 -0
- package/dist/vendor/bootstrap-vue/src/utils/plugins.js +124 -0
- package/dist/vendor/bootstrap-vue/src/utils/props.js +67 -0
- package/dist/vendor/bootstrap-vue/src/utils/router.js +150 -0
- package/dist/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +14 -0
- package/dist/vendor/bootstrap-vue/src/utils/stable-sort.js +28 -0
- package/dist/vendor/bootstrap-vue/src/utils/string.js +47 -0
- package/dist/vendor/bootstrap-vue/src/utils/stringify-object-values.js +31 -0
- package/dist/vendor/bootstrap-vue/src/utils/warn.js +45 -0
- package/dist/vendor/bootstrap-vue/src/vue.js +55 -0
- package/package.json +4 -3
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +2 -2
- package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +2 -2
- package/src/vendor/bootstrap-vue/src/components/layout/col.js +2 -2
- package/src/vendor/bootstrap-vue/src/components/modal/modal.js +2 -2
- package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +2 -2
- package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +8 -9
- package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.js +1 -2
- package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.js +1 -2
- package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.js +1 -2
- package/src/vendor/bootstrap-vue/src/utils/array.js +0 -1
- package/src/vendor/bootstrap-vue/src/utils/locale.js +1 -2
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import { isFunction, debounce, range } from 'lodash-es';
|
|
2
|
+
import { breakpoints, GlBreakpointInstance } from '../../../utils/breakpoints';
|
|
3
|
+
import { alignOptions, resizeDebounceTime } from '../../../utils/constants';
|
|
4
|
+
import { translate, sprintf } from '../../../utils/i18n';
|
|
5
|
+
import GlIcon from '../icon/icon';
|
|
6
|
+
import GlLink from '../link/link';
|
|
7
|
+
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
8
|
+
|
|
9
|
+
const pageRange = (from, to) => range(from, to + 1, 1);
|
|
10
|
+
var script = {
|
|
11
|
+
name: 'GlPagination',
|
|
12
|
+
components: {
|
|
13
|
+
GlLink,
|
|
14
|
+
GlIcon
|
|
15
|
+
},
|
|
16
|
+
model: {
|
|
17
|
+
prop: 'value',
|
|
18
|
+
event: 'input'
|
|
19
|
+
},
|
|
20
|
+
props: {
|
|
21
|
+
/**
|
|
22
|
+
* The current page number. Must be greater than 0.
|
|
23
|
+
*/
|
|
24
|
+
value: {
|
|
25
|
+
type: Number,
|
|
26
|
+
required: false,
|
|
27
|
+
default: 1,
|
|
28
|
+
validator: x => x > 0
|
|
29
|
+
},
|
|
30
|
+
/**
|
|
31
|
+
* Number of items per page
|
|
32
|
+
*/
|
|
33
|
+
perPage: {
|
|
34
|
+
type: Number,
|
|
35
|
+
required: false,
|
|
36
|
+
default: 20,
|
|
37
|
+
validator: x => x > 0
|
|
38
|
+
},
|
|
39
|
+
/**
|
|
40
|
+
* Total number of items
|
|
41
|
+
*/
|
|
42
|
+
totalItems: {
|
|
43
|
+
type: Number,
|
|
44
|
+
required: false,
|
|
45
|
+
default: 0
|
|
46
|
+
},
|
|
47
|
+
/**
|
|
48
|
+
* The object must contain the xs, sm, md and default keys
|
|
49
|
+
*/
|
|
50
|
+
limits: {
|
|
51
|
+
type: Object,
|
|
52
|
+
required: false,
|
|
53
|
+
default: () => ({
|
|
54
|
+
xs: 0,
|
|
55
|
+
sm: 3,
|
|
56
|
+
md: 9,
|
|
57
|
+
default: 9
|
|
58
|
+
}),
|
|
59
|
+
validator: value => {
|
|
60
|
+
const missingSizes = Object.keys(breakpoints).filter(size => !value[size]).length;
|
|
61
|
+
return missingSizes === 0 ? true : value.default;
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* A function that receives the page number and that returns a string representing the page URL
|
|
66
|
+
*/
|
|
67
|
+
linkGen: {
|
|
68
|
+
type: Function,
|
|
69
|
+
required: false,
|
|
70
|
+
default: null
|
|
71
|
+
},
|
|
72
|
+
/**
|
|
73
|
+
* When using the compact pagination, use this prop to pass the previous page number
|
|
74
|
+
*/
|
|
75
|
+
prevPage: {
|
|
76
|
+
type: Number,
|
|
77
|
+
required: false,
|
|
78
|
+
default: null
|
|
79
|
+
},
|
|
80
|
+
/**
|
|
81
|
+
* When using the compact pagination, use this prop to pass the next page number
|
|
82
|
+
*/
|
|
83
|
+
nextPage: {
|
|
84
|
+
type: Number,
|
|
85
|
+
required: false,
|
|
86
|
+
default: null
|
|
87
|
+
},
|
|
88
|
+
/**
|
|
89
|
+
* Text for the ellipsis (overridden by "ellipsis-left" and "ellipsis-right" slots)
|
|
90
|
+
*/
|
|
91
|
+
ellipsisText: {
|
|
92
|
+
type: String,
|
|
93
|
+
required: false,
|
|
94
|
+
default: '…'
|
|
95
|
+
},
|
|
96
|
+
/**
|
|
97
|
+
* aria-label for the nav
|
|
98
|
+
*/
|
|
99
|
+
labelNav: {
|
|
100
|
+
type: String,
|
|
101
|
+
required: false,
|
|
102
|
+
default: translate('GlPagination.nav', 'Pagination')
|
|
103
|
+
},
|
|
104
|
+
/**
|
|
105
|
+
* aria-label for the first page item
|
|
106
|
+
*/
|
|
107
|
+
labelFirstPage: {
|
|
108
|
+
type: String,
|
|
109
|
+
required: false,
|
|
110
|
+
default: translate('GlPagination.labelFirstPage', 'Go to first page')
|
|
111
|
+
},
|
|
112
|
+
/**
|
|
113
|
+
* aria-label for the previous page item
|
|
114
|
+
*/
|
|
115
|
+
labelPrevPage: {
|
|
116
|
+
type: String,
|
|
117
|
+
required: false,
|
|
118
|
+
default: translate('GlPagination.labelPrevPage', 'Go to previous page')
|
|
119
|
+
},
|
|
120
|
+
/**
|
|
121
|
+
* aria-label for the next page item
|
|
122
|
+
*/
|
|
123
|
+
labelNextPage: {
|
|
124
|
+
type: String,
|
|
125
|
+
required: false,
|
|
126
|
+
default: translate('GlPagination.labelNextPage', 'Go to next page')
|
|
127
|
+
},
|
|
128
|
+
/**
|
|
129
|
+
* aria-label for the last page item
|
|
130
|
+
*/
|
|
131
|
+
labelLastPage: {
|
|
132
|
+
type: String,
|
|
133
|
+
required: false,
|
|
134
|
+
default: translate('GlPagination.labelLastPage', 'Go to last page')
|
|
135
|
+
},
|
|
136
|
+
/**
|
|
137
|
+
* aria-label getter for numbered page items, defaults to "Go to page <page_number>"
|
|
138
|
+
*/
|
|
139
|
+
labelPage: {
|
|
140
|
+
// note: `Function` support is for legacy reasons
|
|
141
|
+
type: [Function, String],
|
|
142
|
+
required: false,
|
|
143
|
+
default: translate('GlPagination.labelPage', 'Go to page %{page}')
|
|
144
|
+
},
|
|
145
|
+
/**
|
|
146
|
+
* Controls the component\'s horizontal alignment, value should be one of "left", "center", "right" or "fill"
|
|
147
|
+
*/
|
|
148
|
+
align: {
|
|
149
|
+
type: String,
|
|
150
|
+
required: false,
|
|
151
|
+
default: alignOptions.left,
|
|
152
|
+
validator: value => Object.keys(alignOptions).includes(value)
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
data() {
|
|
156
|
+
return {
|
|
157
|
+
breakpoint: GlBreakpointInstance.getBreakpointSize(),
|
|
158
|
+
// If total pages count is below or equal to minTotalPagesToCollapse, collapsing is disabled
|
|
159
|
+
minTotalPagesToCollapse: 4
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
computed: {
|
|
163
|
+
isVisible() {
|
|
164
|
+
return this.totalPages > 1 || this.isCompactPagination;
|
|
165
|
+
},
|
|
166
|
+
isLinkBased() {
|
|
167
|
+
return isFunction(this.linkGen);
|
|
168
|
+
},
|
|
169
|
+
paginationLimit() {
|
|
170
|
+
return typeof this.limits[this.breakpoint] !== 'undefined' ? this.limits[this.breakpoint] : this.limits.default;
|
|
171
|
+
},
|
|
172
|
+
maxAdjacentPages() {
|
|
173
|
+
return Math.max(Math.ceil((this.paginationLimit - 1) / 2), 0);
|
|
174
|
+
},
|
|
175
|
+
totalPages() {
|
|
176
|
+
return Math.ceil(this.totalItems / this.perPage);
|
|
177
|
+
},
|
|
178
|
+
isFillAlign() {
|
|
179
|
+
return this.align === alignOptions.fill;
|
|
180
|
+
},
|
|
181
|
+
wrapperClasses() {
|
|
182
|
+
const classes = [];
|
|
183
|
+
if (this.align === alignOptions.center) {
|
|
184
|
+
classes.push('gl-justify-center');
|
|
185
|
+
}
|
|
186
|
+
if (this.align === alignOptions.right) {
|
|
187
|
+
classes.push('gl-justify-end');
|
|
188
|
+
}
|
|
189
|
+
if (this.isFillAlign) {
|
|
190
|
+
classes.push('gl-text-center');
|
|
191
|
+
}
|
|
192
|
+
return classes;
|
|
193
|
+
},
|
|
194
|
+
shouldCollapseLeftSide() {
|
|
195
|
+
const diff = this.value - this.maxAdjacentPages;
|
|
196
|
+
|
|
197
|
+
// Magic 3: prevents collapsing a single page on the left side
|
|
198
|
+
return diff >= this.maxAdjacentPages && diff > 3 && this.totalPages > this.minTotalPagesToCollapse;
|
|
199
|
+
},
|
|
200
|
+
shouldCollapseRightSide() {
|
|
201
|
+
// Magic 2: prevents collapsing a single page on the right side
|
|
202
|
+
const diff = this.totalPages - 2 - this.value;
|
|
203
|
+
return diff > this.maxAdjacentPages && this.totalPages > this.minTotalPagesToCollapse;
|
|
204
|
+
},
|
|
205
|
+
visibleItems() {
|
|
206
|
+
let items = [];
|
|
207
|
+
if (!this.isCompactPagination) {
|
|
208
|
+
let firstPage = this.shouldCollapseLeftSide ? this.value - this.maxAdjacentPages : 1;
|
|
209
|
+
// If we're on last page, show at least one page to the left
|
|
210
|
+
firstPage = Math.min(firstPage, this.totalPages - 1);
|
|
211
|
+
let lastPage = this.shouldCollapseRightSide ? this.value + this.maxAdjacentPages : this.totalPages;
|
|
212
|
+
// If we're on first page, show at least one page to the right
|
|
213
|
+
lastPage = Math.max(lastPage, 2);
|
|
214
|
+
|
|
215
|
+
// Default numbered items
|
|
216
|
+
items = pageRange(firstPage, lastPage).map(page => this.getPageItem(page));
|
|
217
|
+
if (this.shouldCollapseLeftSide) {
|
|
218
|
+
items.splice(0, 0, this.getPageItem(1, this.labelFirstPage), this.getEllipsisItem('left'));
|
|
219
|
+
}
|
|
220
|
+
if (this.shouldCollapseRightSide) {
|
|
221
|
+
items.push(this.getEllipsisItem('right'), this.getPageItem(this.totalPages, this.labelLastPage));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return items;
|
|
225
|
+
},
|
|
226
|
+
isCompactPagination() {
|
|
227
|
+
return Boolean(!this.totalItems && (this.prevPage || this.nextPage));
|
|
228
|
+
},
|
|
229
|
+
prevPageIsDisabled() {
|
|
230
|
+
return this.pageIsDisabled(this.value - 1);
|
|
231
|
+
},
|
|
232
|
+
nextPageIsDisabled() {
|
|
233
|
+
return this.pageIsDisabled(this.value + 1);
|
|
234
|
+
},
|
|
235
|
+
prevPageAriaLabel() {
|
|
236
|
+
return this.prevPageIsDisabled ? false : this.labelPrevPage || this.labelForPage(this.value - 1);
|
|
237
|
+
},
|
|
238
|
+
nextPageAriaLabel() {
|
|
239
|
+
return this.nextPageIsDisabled ? false : this.labelNextPage || this.labelForPage(this.value + 1);
|
|
240
|
+
},
|
|
241
|
+
prevPageHref() {
|
|
242
|
+
if (this.prevPageIsDisabled) return false;
|
|
243
|
+
if (this.isLinkBased) return this.linkGen(this.value - 1);
|
|
244
|
+
return '#';
|
|
245
|
+
},
|
|
246
|
+
nextPageHref() {
|
|
247
|
+
if (this.nextPageIsDisabled) return false;
|
|
248
|
+
if (this.isLinkBased) return this.linkGen(this.value + 1);
|
|
249
|
+
return '#';
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
created() {
|
|
253
|
+
this.resizeDebounced = debounce(this.setBreakpoint, resizeDebounceTime);
|
|
254
|
+
window.addEventListener('resize', this.resizeDebounced);
|
|
255
|
+
},
|
|
256
|
+
beforeDestroy() {
|
|
257
|
+
window.removeEventListener('resize', this.resizeDebounced);
|
|
258
|
+
},
|
|
259
|
+
methods: {
|
|
260
|
+
labelForPage(page) {
|
|
261
|
+
if (isFunction(this.labelPage)) {
|
|
262
|
+
return this.labelPage(page);
|
|
263
|
+
}
|
|
264
|
+
return sprintf(this.labelPage, {
|
|
265
|
+
page
|
|
266
|
+
});
|
|
267
|
+
},
|
|
268
|
+
setBreakpoint() {
|
|
269
|
+
this.breakpoint = GlBreakpointInstance.getBreakpointSize();
|
|
270
|
+
},
|
|
271
|
+
pageIsDisabled(page) {
|
|
272
|
+
return page < 1 || this.isCompactPagination && page > this.value && !this.nextPage || !this.isCompactPagination && page > this.totalPages;
|
|
273
|
+
},
|
|
274
|
+
getPageItem(page) {
|
|
275
|
+
let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
276
|
+
const commonAttrs = {
|
|
277
|
+
'aria-label': label || this.labelForPage(page),
|
|
278
|
+
href: '#',
|
|
279
|
+
class: []
|
|
280
|
+
};
|
|
281
|
+
const isActivePage = page === this.value;
|
|
282
|
+
const isDisabled = this.pageIsDisabled(page);
|
|
283
|
+
const attrs = {
|
|
284
|
+
...commonAttrs
|
|
285
|
+
};
|
|
286
|
+
const listeners = {};
|
|
287
|
+
if (isActivePage) {
|
|
288
|
+
attrs.class.push('active');
|
|
289
|
+
attrs['aria-current'] = 'page';
|
|
290
|
+
}
|
|
291
|
+
// Disable previous and/or next buttons if needed
|
|
292
|
+
if (this.isLinkBased) {
|
|
293
|
+
attrs.href = this.linkGen(page);
|
|
294
|
+
}
|
|
295
|
+
listeners.click = e => this.handleClick(e, page);
|
|
296
|
+
return {
|
|
297
|
+
content: page,
|
|
298
|
+
component: isDisabled ? 'span' : GlLink,
|
|
299
|
+
disabled: isDisabled,
|
|
300
|
+
key: `page_${page}`,
|
|
301
|
+
slot: 'page-number',
|
|
302
|
+
slotData: {
|
|
303
|
+
page,
|
|
304
|
+
active: isActivePage,
|
|
305
|
+
disabled: isDisabled
|
|
306
|
+
},
|
|
307
|
+
attrs,
|
|
308
|
+
listeners
|
|
309
|
+
};
|
|
310
|
+
},
|
|
311
|
+
getEllipsisItem(side) {
|
|
312
|
+
return {
|
|
313
|
+
content: this.ellipsisText,
|
|
314
|
+
key: `ellipsis_${side}`,
|
|
315
|
+
slot: `ellipsis-${side}`,
|
|
316
|
+
component: 'span',
|
|
317
|
+
disabled: true,
|
|
318
|
+
slotData: {},
|
|
319
|
+
listeners: {}
|
|
320
|
+
};
|
|
321
|
+
},
|
|
322
|
+
handleClick(event, value) {
|
|
323
|
+
if (!this.isLinkBased) {
|
|
324
|
+
event.preventDefault();
|
|
325
|
+
/**
|
|
326
|
+
* Emitted when the page changes
|
|
327
|
+
* @event input
|
|
328
|
+
* @arg {number} value The page that just got loaded
|
|
329
|
+
*/
|
|
330
|
+
this.$emit('input', value);
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
handlePrevious(event, value) {
|
|
334
|
+
this.handleClick(event, value);
|
|
335
|
+
/**
|
|
336
|
+
* Emitted when the "previous" button is clicked
|
|
337
|
+
* @event previous
|
|
338
|
+
*/
|
|
339
|
+
this.$emit('previous');
|
|
340
|
+
},
|
|
341
|
+
handleNext(event, value) {
|
|
342
|
+
this.handleClick(event, value);
|
|
343
|
+
/**
|
|
344
|
+
* Emitted when the "next" button is clicked
|
|
345
|
+
* @event next
|
|
346
|
+
*/
|
|
347
|
+
this.$emit('next');
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
/* script */
|
|
353
|
+
const __vue_script__ = script;
|
|
354
|
+
|
|
355
|
+
/* template */
|
|
356
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isVisible)?_c('nav',{staticClass:"gl-pagination",attrs:{"aria-label":_vm.labelNav}},[_c('ul',{class:_vm.wrapperClasses},[_c('li',{class:{
|
|
357
|
+
disabled: _vm.prevPageIsDisabled,
|
|
358
|
+
'gl-flex-auto': _vm.isFillAlign,
|
|
359
|
+
},attrs:{"aria-hidden":_vm.prevPageIsDisabled,"data-testid":"gl-pagination-li"}},[_c(_vm.prevPageIsDisabled ? 'span' : 'a',{tag:"component",staticClass:"gl-pagination-item",attrs:{"data-testid":"gl-pagination-prev","aria-label":_vm.prevPageAriaLabel,"href":_vm.prevPageHref},on:{"click":function($event){!_vm.prevPageIsDisabled ? _vm.handlePrevious($event, _vm.value - 1) : null;}}},[_vm._t("previous",function(){return [_c('gl-icon',{attrs:{"name":"chevron-lg-left"}})]},null,{ page: _vm.value - 1, disabled: _vm.prevPageIsDisabled })],2)],1),_vm._v(" "),_vm._l((_vm.visibleItems),function(item){return _c('li',{key:item.key,class:{
|
|
360
|
+
disabled: item.disabled,
|
|
361
|
+
'gl-flex-auto': _vm.isFillAlign,
|
|
362
|
+
},attrs:{"data-testid":"gl-pagination-li"}},[_c(item.component,_vm._g(_vm._b({tag:"component",staticClass:"gl-pagination-item",attrs:{"data-testid":"gl-pagination-item","size":"md","aria-disabled":item.disabled}},'component',item.attrs,false),item.listeners),[_vm._t(item.slot,function(){return [_vm._v(_vm._s(item.content))]},null,item.slotData)],2)],1)}),_vm._v(" "),_c('li',{class:{
|
|
363
|
+
disabled: _vm.nextPageIsDisabled,
|
|
364
|
+
'gl-flex-auto': _vm.isFillAlign,
|
|
365
|
+
},attrs:{"aria-hidden":_vm.nextPageIsDisabled,"data-testid":"gl-pagination-li"}},[_c(_vm.nextPageIsDisabled ? 'span' : 'a',{tag:"component",staticClass:"gl-pagination-item",attrs:{"data-testid":"gl-pagination-next","aria-label":_vm.nextPageAriaLabel,"href":_vm.nextPageHref},on:{"click":function($event){!_vm.nextPageIsDisabled ? _vm.handleNext($event, _vm.value + 1) : null;}}},[_vm._t("next",function(){return [_c('gl-icon',{attrs:{"name":"chevron-lg-right"}})]},null,{ page: _vm.value + 1, disabled: _vm.nextPageIsDisabled })],2)],1)],2)]):_vm._e()};
|
|
366
|
+
var __vue_staticRenderFns__ = [];
|
|
367
|
+
|
|
368
|
+
/* style */
|
|
369
|
+
const __vue_inject_styles__ = undefined;
|
|
370
|
+
/* scoped */
|
|
371
|
+
const __vue_scope_id__ = undefined;
|
|
372
|
+
/* module identifier */
|
|
373
|
+
const __vue_module_identifier__ = undefined;
|
|
374
|
+
/* functional template */
|
|
375
|
+
const __vue_is_functional_template__ = false;
|
|
376
|
+
/* style inject */
|
|
377
|
+
|
|
378
|
+
/* style inject SSR */
|
|
379
|
+
|
|
380
|
+
/* style inject shadow dom */
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
const __vue_component__ = /*#__PURE__*/__vue_normalize__(
|
|
385
|
+
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
|
|
386
|
+
__vue_inject_styles__,
|
|
387
|
+
__vue_script__,
|
|
388
|
+
__vue_scope_id__,
|
|
389
|
+
__vue_is_functional_template__,
|
|
390
|
+
__vue_module_identifier__,
|
|
391
|
+
false,
|
|
392
|
+
undefined,
|
|
393
|
+
undefined,
|
|
394
|
+
undefined
|
|
395
|
+
);
|
|
396
|
+
|
|
397
|
+
export { __vue_component__ as default };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const mockPathItems = () => [{
|
|
2
|
+
title: 'First',
|
|
3
|
+
metric: '1d'
|
|
4
|
+
}, {
|
|
5
|
+
title: 'Second',
|
|
6
|
+
metric: '2d'
|
|
7
|
+
}, {
|
|
8
|
+
title: 'Third',
|
|
9
|
+
metric: '3d'
|
|
10
|
+
}, {
|
|
11
|
+
title: 'Fourth',
|
|
12
|
+
metric: '4d'
|
|
13
|
+
}, {
|
|
14
|
+
title: 'Fifth',
|
|
15
|
+
metric: '5d'
|
|
16
|
+
}, {
|
|
17
|
+
title: 'Sixth',
|
|
18
|
+
metric: '6d'
|
|
19
|
+
}, {
|
|
20
|
+
title: 'Seventh',
|
|
21
|
+
metric: '7d'
|
|
22
|
+
}, {
|
|
23
|
+
title: 'Eighth',
|
|
24
|
+
metric: '8d',
|
|
25
|
+
disabled: true
|
|
26
|
+
}, {
|
|
27
|
+
title: 'Ninth',
|
|
28
|
+
metric: '9d'
|
|
29
|
+
}, {
|
|
30
|
+
title: 'Tenth',
|
|
31
|
+
metric: '10d'
|
|
32
|
+
}];
|
|
33
|
+
|
|
34
|
+
export { mockPathItems };
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import iconSpriteInfo from '@gitlab/svgs/dist/icons.json';
|
|
2
|
+
import { uniqueId, findLast } from 'lodash-es';
|
|
3
|
+
import { GlResizeObserverDirective } from '../../../directives/resize_observer/resize_observer';
|
|
4
|
+
import GlIcon from '../icon/icon';
|
|
5
|
+
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
6
|
+
|
|
7
|
+
const BOUNDARY_WIDTH = 40;
|
|
8
|
+
const PATH_ITEM_CLASS = 'gl-path-button';
|
|
9
|
+
const PATH_ACTIVE_ITEM_CLASS = 'gl-path-active-item';
|
|
10
|
+
var script = {
|
|
11
|
+
name: 'GlPath',
|
|
12
|
+
components: {
|
|
13
|
+
GlIcon
|
|
14
|
+
},
|
|
15
|
+
directives: {
|
|
16
|
+
GlResizeObserverDirective
|
|
17
|
+
},
|
|
18
|
+
props: {
|
|
19
|
+
/**
|
|
20
|
+
* A list of path items in the form:
|
|
21
|
+
* ```
|
|
22
|
+
* {
|
|
23
|
+
* title: String, required
|
|
24
|
+
* metric: Any, optional
|
|
25
|
+
* icon: String, optional
|
|
26
|
+
* disabled: Boolean, optional
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
items: {
|
|
31
|
+
type: Array,
|
|
32
|
+
required: false,
|
|
33
|
+
default: () => []
|
|
34
|
+
},
|
|
35
|
+
/**
|
|
36
|
+
* The items' background color.
|
|
37
|
+
*/
|
|
38
|
+
backgroundColor: {
|
|
39
|
+
type: String,
|
|
40
|
+
required: false,
|
|
41
|
+
default: 'rgba(0,0,0,0)'
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
data() {
|
|
45
|
+
return {
|
|
46
|
+
selectedIndex: 0,
|
|
47
|
+
width: 0,
|
|
48
|
+
scrollLeft: 0
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
computed: {
|
|
52
|
+
entireListVisible() {
|
|
53
|
+
return this.width >= this.getScrollWidth();
|
|
54
|
+
},
|
|
55
|
+
displayScrollLeft() {
|
|
56
|
+
return !this.entireListVisible && this.scrollLeft;
|
|
57
|
+
},
|
|
58
|
+
displayScrollRight() {
|
|
59
|
+
const scrollOffset = this.getScrollWidth() - this.width;
|
|
60
|
+
return !this.entireListVisible && scrollOffset !== this.scrollLeft;
|
|
61
|
+
},
|
|
62
|
+
rightHandBoundary() {
|
|
63
|
+
return this.width - BOUNDARY_WIDTH + this.scrollLeft;
|
|
64
|
+
},
|
|
65
|
+
leftHandBoundary() {
|
|
66
|
+
return this.scrollLeft + BOUNDARY_WIDTH;
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
watch: {
|
|
70
|
+
items: {
|
|
71
|
+
immediate: true,
|
|
72
|
+
handler(items) {
|
|
73
|
+
const selectedIndex = items.findIndex(item => item.selected);
|
|
74
|
+
this.selectedIndex = selectedIndex > 0 ? selectedIndex : 0;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
beforeCreate() {
|
|
79
|
+
this.pathUuid = uniqueId('path-');
|
|
80
|
+
},
|
|
81
|
+
methods: {
|
|
82
|
+
pathItemClass(index) {
|
|
83
|
+
return index === this.selectedIndex ? `${PATH_ITEM_CLASS} ${PATH_ACTIVE_ITEM_CLASS}` : PATH_ITEM_CLASS;
|
|
84
|
+
},
|
|
85
|
+
onItemClicked(selectedIndex) {
|
|
86
|
+
this.selectedIndex = selectedIndex;
|
|
87
|
+
/**
|
|
88
|
+
* Emitted when an item is selected.
|
|
89
|
+
*/
|
|
90
|
+
this.$emit('selected', this.items[this.selectedIndex]);
|
|
91
|
+
},
|
|
92
|
+
handleResize(_ref) {
|
|
93
|
+
let {
|
|
94
|
+
contentRect: {
|
|
95
|
+
width
|
|
96
|
+
}
|
|
97
|
+
} = _ref;
|
|
98
|
+
this.width = width;
|
|
99
|
+
},
|
|
100
|
+
scrollPathLeft() {
|
|
101
|
+
const previousItemToScollTo = findLast(this.$refs.pathListItems, listItem => {
|
|
102
|
+
return listItem.offsetLeft < this.leftHandBoundary;
|
|
103
|
+
});
|
|
104
|
+
const availableWidth = this.width - previousItemToScollTo.offsetWidth - BOUNDARY_WIDTH - BOUNDARY_WIDTH;
|
|
105
|
+
let scrollTo = previousItemToScollTo.offsetLeft - BOUNDARY_WIDTH - availableWidth;
|
|
106
|
+
if (scrollTo < 0) {
|
|
107
|
+
scrollTo = 0;
|
|
108
|
+
}
|
|
109
|
+
this.scrollPath(scrollTo);
|
|
110
|
+
},
|
|
111
|
+
scrollPathRight() {
|
|
112
|
+
const nextItemToScollTo = this.$refs.pathListItems.find(listItem => listItem.offsetLeft + listItem.offsetWidth > this.rightHandBoundary);
|
|
113
|
+
let scrollTo = nextItemToScollTo.offsetLeft - BOUNDARY_WIDTH;
|
|
114
|
+
if (scrollTo > this.getScrollWidth() - this.width) {
|
|
115
|
+
scrollTo = this.getScrollWidth() - this.width;
|
|
116
|
+
}
|
|
117
|
+
this.scrollPath(scrollTo);
|
|
118
|
+
},
|
|
119
|
+
scrollPath(scrollTo) {
|
|
120
|
+
this.$refs.pathNavList.scrollTo({
|
|
121
|
+
left: scrollTo,
|
|
122
|
+
behavior: 'smooth'
|
|
123
|
+
});
|
|
124
|
+
this.scrollLeft = scrollTo;
|
|
125
|
+
},
|
|
126
|
+
getScrollWidth() {
|
|
127
|
+
return this.$refs.pathNavList ? this.$refs.pathNavList.scrollWidth : 0;
|
|
128
|
+
},
|
|
129
|
+
shouldDisplayIcon(icon) {
|
|
130
|
+
return icon && iconSpriteInfo.icons.includes(icon);
|
|
131
|
+
},
|
|
132
|
+
pathId(index) {
|
|
133
|
+
return `${this.pathUuid}-item-${index}`;
|
|
134
|
+
},
|
|
135
|
+
getAriaCurrentAttr(index) {
|
|
136
|
+
return index === this.selectedIndex;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
/* script */
|
|
142
|
+
const __vue_script__ = script;
|
|
143
|
+
|
|
144
|
+
/* template */
|
|
145
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"gl-resize-observer-directive",rawName:"v-gl-resize-observer-directive",value:(_vm.handleResize),expression:"handleResize"}],staticClass:"gl-path-nav",style:({ '--path-bg-color': _vm.backgroundColor }),attrs:{"data-testid":"gl-path-nav"}},[_c('span',{directives:[{name:"show",rawName:"v-show",value:(_vm.displayScrollLeft),expression:"displayScrollLeft"}],staticClass:"gl-path-fade gl-path-fade-left"},[_c('button',{staticClass:"gl-clear-icon-button",attrs:{"aria-label":"Scroll left"},on:{"click":_vm.scrollPathLeft}},[_c('gl-icon',{attrs:{"size":32,"name":"chevron-left"}})],1)]),_vm._v(" "),_c('ul',{ref:"pathNavList",staticClass:"gl-path-nav-list"},_vm._l((_vm.items),function(item,index){return _c('li',{key:index,ref:"pathListItems",refInFor:true,staticClass:"gl-path-nav-list-item"},[_c('button',{class:_vm.pathItemClass(index),attrs:{"id":_vm.pathId(index),"aria-current":_vm.getAriaCurrentAttr(index),"category":item.disabled ? 'tertiary' : undefined,"disabled":item.disabled},on:{"click":function($event){return _vm.onItemClicked(index)}}},[(_vm.shouldDisplayIcon(item.icon))?_c('gl-icon',{staticClass:"gl-mr-2",attrs:{"name":item.icon,"data-testid":"gl-path-item-icon"}}):_vm._e(),_vm._v(_vm._s(item.title)),(item.metric)?_c('span',{staticClass:"gl-pl-2 gl-font-normal"},[_vm._v(_vm._s(item.metric))]):_vm._e()],1),_vm._v(" "),_vm._t("default",null,{"pathItem":item,"pathId":_vm.pathId(index)})],2)}),0),_vm._v(" "),_c('span',{directives:[{name:"show",rawName:"v-show",value:(_vm.displayScrollRight),expression:"displayScrollRight"}],staticClass:"gl-path-fade gl-path-fade-right"},[_c('button',{staticClass:"gl-clear-icon-button",attrs:{"aria-label":"Scroll right"},on:{"click":_vm.scrollPathRight}},[_c('gl-icon',{attrs:{"size":32,"name":"chevron-right"}})],1)])])};
|
|
146
|
+
var __vue_staticRenderFns__ = [];
|
|
147
|
+
|
|
148
|
+
/* style */
|
|
149
|
+
const __vue_inject_styles__ = undefined;
|
|
150
|
+
/* scoped */
|
|
151
|
+
const __vue_scope_id__ = undefined;
|
|
152
|
+
/* module identifier */
|
|
153
|
+
const __vue_module_identifier__ = undefined;
|
|
154
|
+
/* functional template */
|
|
155
|
+
const __vue_is_functional_template__ = false;
|
|
156
|
+
/* style inject */
|
|
157
|
+
|
|
158
|
+
/* style inject SSR */
|
|
159
|
+
|
|
160
|
+
/* style inject shadow dom */
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
const __vue_component__ = /*#__PURE__*/__vue_normalize__(
|
|
165
|
+
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
|
|
166
|
+
__vue_inject_styles__,
|
|
167
|
+
__vue_script__,
|
|
168
|
+
__vue_scope_id__,
|
|
169
|
+
__vue_is_functional_template__,
|
|
170
|
+
__vue_module_identifier__,
|
|
171
|
+
false,
|
|
172
|
+
undefined,
|
|
173
|
+
undefined,
|
|
174
|
+
undefined
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
export { __vue_component__ as default };
|