@gitlab/ui 131.3.0 → 131.3.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/package.json +4 -4
- package/src/components/utilities/truncate/truncate.scss +3 -1
- package/src/scss/mixins.scss +3 -1
- package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +86 -25
- package/tailwind.defaults.js +10 -1
- package/dist/charts.js +0 -13
- package/dist/components/base/accordion/accordion.js +0 -69
- package/dist/components/base/accordion/accordion_item.js +0 -160
- package/dist/components/base/accordion/constants.js +0 -3
- package/dist/components/base/alert/alert.js +0 -263
- package/dist/components/base/animated_icon/animated_chevron_down_up_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_chevron_lg_down_up_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_chevron_lg_right_down_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_chevron_right_down_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_duo_chat_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_loader_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_notifications_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_sidebar_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_smile_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_sort_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_star_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_todo_icon.js +0 -45
- package/dist/components/base/animated_icon/animated_upload_icon.js +0 -45
- package/dist/components/base/animated_icon/base_animated_icon.js +0 -77
- package/dist/components/base/attribute_list/attribute_list.js +0 -100
- package/dist/components/base/avatar/avatar.js +0 -175
- package/dist/components/base/avatar/utils.js +0 -17
- package/dist/components/base/avatar_labeled/avatar_labeled.js +0 -198
- package/dist/components/base/avatar_link/avatar_link.js +0 -47
- package/dist/components/base/avatars_inline/avatars_inline.js +0 -139
- package/dist/components/base/badge/badge.js +0 -197
- package/dist/components/base/banner/banner.js +0 -149
- package/dist/components/base/breadcrumb/breadcrumb.js +0 -282
- package/dist/components/base/breadcrumb/breadcrumb_item.js +0 -96
- package/dist/components/base/broadcast_message/broadcast_message.js +0 -113
- package/dist/components/base/broadcast_message/constants.js +0 -5
- package/dist/components/base/button/button.js +0 -419
- package/dist/components/base/button_group/button_group.js +0 -53
- package/dist/components/base/card/card.js +0 -69
- package/dist/components/base/collapse/collapse.js +0 -163
- package/dist/components/base/color_mode_toggle/color_mode_toggle.js +0 -92
- package/dist/components/base/datepicker/datepicker.js +0 -475
- package/dist/components/base/daterange_picker/daterange_picker.js +0 -394
- package/dist/components/base/drawer/drawer.js +0 -156
- package/dist/components/base/dropdown/dropdown.js +0 -330
- package/dist/components/base/dropdown/dropdown_divider.js +0 -48
- package/dist/components/base/dropdown/dropdown_form.js +0 -48
- package/dist/components/base/dropdown/dropdown_item.js +0 -175
- package/dist/components/base/dropdown/dropdown_section_header.js +0 -48
- package/dist/components/base/dropdown/dropdown_text.js +0 -48
- package/dist/components/base/filtered_search/common_story_options.js +0 -14
- package/dist/components/base/filtered_search/filtered_search.js +0 -428
- package/dist/components/base/filtered_search/filtered_search_suggestion.js +0 -95
- package/dist/components/base/filtered_search/filtered_search_suggestion_list.js +0 -139
- package/dist/components/base/filtered_search/filtered_search_term.js +0 -217
- package/dist/components/base/filtered_search/filtered_search_token.js +0 -383
- package/dist/components/base/filtered_search/filtered_search_token_segment.js +0 -444
- package/dist/components/base/filtered_search/filtered_search_utils.js +0 -241
- package/dist/components/base/form/form.js +0 -43
- package/dist/components/base/form/form_character_count/form_character_count.js +0 -107
- package/dist/components/base/form/form_checkbox/form_checkbox.js +0 -342
- package/dist/components/base/form/form_checkbox/form_checkbox_group.js +0 -186
- package/dist/components/base/form/form_combobox/constants.js +0 -55
- package/dist/components/base/form/form_combobox/form_combobox.js +0 -239
- package/dist/components/base/form/form_date/form_date.js +0 -143
- package/dist/components/base/form/form_fields/form_field_validator.js +0 -93
- package/dist/components/base/form/form_fields/form_fields.js +0 -289
- package/dist/components/base/form/form_fields/form_fields_loop.js +0 -75
- package/dist/components/base/form/form_fields/mappers.js +0 -13
- package/dist/components/base/form/form_fields/validators.js +0 -48
- package/dist/components/base/form/form_group/form_group.js +0 -119
- package/dist/components/base/form/form_input/form_input.js +0 -695
- package/dist/components/base/form/form_input_group/form_input_group.js +0 -120
- package/dist/components/base/form/form_input_group/form_input_group_mixin.js +0 -41
- package/dist/components/base/form/form_radio/form_radio.js +0 -259
- package/dist/components/base/form/form_radio_group/form_radio_group.js +0 -187
- package/dist/components/base/form/form_select/constants.js +0 -12
- package/dist/components/base/form/form_select/form_select.js +0 -96
- package/dist/components/base/form/form_textarea/form_textarea.js +0 -166
- package/dist/components/base/form/input_group_text/input_group_text.js +0 -43
- package/dist/components/base/icon/icon.js +0 -113
- package/dist/components/base/illustration/illustration.js +0 -80
- package/dist/components/base/infinite_scroll/infinite_scroll.js +0 -196
- package/dist/components/base/keyset_pagination/keyset_pagination.js +0 -152
- package/dist/components/base/label/label.js +0 -174
- package/dist/components/base/link/link.js +0 -332
- package/dist/components/base/loading_icon/loading_icon.js +0 -120
- package/dist/components/base/markdown/markdown.js +0 -50
- package/dist/components/base/modal/modal.js +0 -259
- package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +0 -716
- package/dist/components/base/new_dropdowns/base_dropdown/constants.js +0 -5
- package/dist/components/base/new_dropdowns/base_dropdown/dropdown_container.js +0 -32
- package/dist/components/base/new_dropdowns/constants.js +0 -24
- package/dist/components/base/new_dropdowns/disclosure/constants.js +0 -8
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +0 -400
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +0 -112
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +0 -196
- package/dist/components/base/new_dropdowns/disclosure/mock_data.js +0 -168
- package/dist/components/base/new_dropdowns/disclosure/utils.js +0 -84
- package/dist/components/base/new_dropdowns/listbox/listbox.js +0 -997
- package/dist/components/base/new_dropdowns/listbox/listbox_group.js +0 -58
- package/dist/components/base/new_dropdowns/listbox/listbox_item.js +0 -112
- package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +0 -94
- package/dist/components/base/new_dropdowns/listbox/mock_data.js +0 -131
- package/dist/components/base/new_dropdowns/listbox/utils.js +0 -33
- package/dist/components/base/pagination/pagination.js +0 -397
- package/dist/components/base/path/data.js +0 -34
- package/dist/components/base/path/path.js +0 -177
- package/dist/components/base/popover/popover.js +0 -142
- package/dist/components/base/progress_bar/progress_bar.js +0 -117
- package/dist/components/base/search_box_by_click/search_box_by_click.js +0 -245
- package/dist/components/base/search_box_by_type/search_box_by_type.js +0 -187
- package/dist/components/base/segmented_control/segmented_control.js +0 -73
- package/dist/components/base/skeleton_loader/skeleton_loader.js +0 -232
- package/dist/components/base/sorting/sorting.js +0 -180
- package/dist/components/base/table/constants.js +0 -5
- package/dist/components/base/table/table.js +0 -187
- package/dist/components/base/table_lite/table_lite.js +0 -80
- package/dist/components/base/tabs/constants.js +0 -3
- package/dist/components/base/tabs/tab/tab.js +0 -113
- package/dist/components/base/tabs/tabs/scrollable_tabs.js +0 -162
- package/dist/components/base/tabs/tabs/tabs.js +0 -223
- package/dist/components/base/toast/index.js +0 -66
- package/dist/components/base/toast/toast.js +0 -125
- package/dist/components/base/toast/toaster.js +0 -87
- package/dist/components/base/toggle/toggle.js +0 -178
- package/dist/components/base/token/token.js +0 -97
- package/dist/components/base/token_selector/helpers.js +0 -5
- package/dist/components/base/token_selector/token_container.js +0 -160
- package/dist/components/base/token_selector/token_selector.js +0 -454
- package/dist/components/base/token_selector/token_selector_dropdown.js +0 -223
- package/dist/components/base/tooltip/tooltip.js +0 -54
- package/dist/components/charts/area/area.js +0 -329
- package/dist/components/charts/bar/bar.js +0 -207
- package/dist/components/charts/chart/chart.js +0 -215
- package/dist/components/charts/column/column.js +0 -221
- package/dist/components/charts/discrete_scatter/discrete_scatter.js +0 -199
- package/dist/components/charts/gauge/gauge.js +0 -205
- package/dist/components/charts/heatmap/heatmap.js +0 -299
- package/dist/components/charts/heatmap/index.js +0 -2
- package/dist/components/charts/legend/legend.js +0 -245
- package/dist/components/charts/line/line.js +0 -340
- package/dist/components/charts/series_label/series_label.js +0 -101
- package/dist/components/charts/shared/tooltip/tooltip.js +0 -369
- package/dist/components/charts/shared/tooltip/tooltip_default_format/tooltip_default_format.js +0 -53
- package/dist/components/charts/single_stat/single_stat.js +0 -164
- package/dist/components/charts/sparkline/sparkline.js +0 -299
- package/dist/components/charts/stacked_column/stacked_column.js +0 -380
- package/dist/components/dashboards/dashboard_layout/dashboard_layout.js +0 -125
- package/dist/components/dashboards/dashboard_layout/grid_layout/grid_layout.js +0 -326
- package/dist/components/dashboards/dashboard_layout/validators.js +0 -14
- package/dist/components/dashboards/dashboard_panel/dashboard_panel.js +0 -236
- package/dist/components/dashboards/mock_data.js +0 -49
- package/dist/components/experimental/experiment_badge/constants.js +0 -4
- package/dist/components/experimental/experiment_badge/experiment_badge.js +0 -102
- package/dist/components/extended/multi_step_form_template/multi_step_form_template.js +0 -87
- package/dist/components/index.js +0 -107
- package/dist/components/mixins/button_mixin.js +0 -11
- package/dist/components/mixins/safe_link_mixin.js +0 -30
- package/dist/components/mixins/tooltip_mixin.js +0 -21
- package/dist/components/regions/dashboard_skeleton/dashboard_skeleton.js +0 -53
- package/dist/components/regions/empty_state/empty_state.js +0 -181
- package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +0 -64
- package/dist/components/shared_components/clipboard_button/clipboard_button.js +0 -100
- package/dist/components/shared_components/close_button/close_button.js +0 -55
- package/dist/components/utilities/animated_number/animated_number.js +0 -131
- package/dist/components/utilities/friendly_wrap/friendly_wrap.js +0 -75
- package/dist/components/utilities/intersection_observer/intersection_observer.js +0 -88
- package/dist/components/utilities/intersperse/intersperse.js +0 -104
- package/dist/components/utilities/sprintf/sprintf.js +0 -171
- package/dist/components/utilities/truncate/constants.js +0 -8
- package/dist/components/utilities/truncate/truncate.js +0 -154
- package/dist/components/utilities/truncate_text/constants.js +0 -7
- package/dist/components/utilities/truncate_text/truncate_text.js +0 -146
- package/dist/config.js +0 -53
- package/dist/directives/hover_load/hover_load.js +0 -45
- package/dist/directives/index.js +0 -8
- package/dist/directives/modal.js +0 -1
- package/dist/directives/outside/outside.js +0 -149
- package/dist/directives/resize_observer/resize_observer.js +0 -58
- package/dist/directives/safe_html/constants.js +0 -6
- package/dist/directives/safe_html/safe_html.js +0 -39
- package/dist/directives/safe_link/mock_data.js +0 -10
- package/dist/directives/safe_link/safe_link.js +0 -67
- package/dist/directives/tooltip/container.js +0 -7
- package/dist/directives/tooltip/tooltip.js +0 -18
- package/dist/index.css +0 -7
- package/dist/index.css.map +0 -1
- package/dist/index.js +0 -2
- package/dist/tailwind.css +0 -2
- package/dist/tailwind.css.map +0 -1
- package/dist/tokens/build/js/tokens.dark.js +0 -1410
- package/dist/tokens/build/js/tokens.js +0 -1410
- package/dist/tokens/common_story_options.js +0 -29
- package/dist/tokens/tokens_story.js +0 -76
- package/dist/utils/breakpoints.js +0 -20
- package/dist/utils/charts/config.js +0 -616
- package/dist/utils/charts/constants.js +0 -69
- package/dist/utils/charts/mock_data.js +0 -191
- package/dist/utils/charts/story_config.js +0 -24
- package/dist/utils/charts/theme.js +0 -200
- package/dist/utils/charts/utils.js +0 -54
- package/dist/utils/constants.js +0 -333
- package/dist/utils/data_utils.js +0 -19
- package/dist/utils/datetime_utility.js +0 -61
- package/dist/utils/equality_utils.js +0 -84
- package/dist/utils/i18n.js +0 -65
- package/dist/utils/is_slot_empty.js +0 -34
- package/dist/utils/number_utils.js +0 -132
- package/dist/utils/play_utils.js +0 -11
- package/dist/utils/set_utils.js +0 -25
- package/dist/utils/stories_constants.js +0 -29
- package/dist/utils/stories_utils.js +0 -62
- package/dist/utils/story_decorators/container.js +0 -19
- package/dist/utils/string_utils.js +0 -69
- package/dist/utils/svgs/svg_paths.js +0 -7
- package/dist/utils/test_utils.js +0 -33
- package/dist/utils/use_fake_date.js +0 -29
- package/dist/utils/use_mock_intersection_observer.js +0 -105
- package/dist/utils/utils.js +0 -205
- package/dist/utils.js +0 -5
- package/dist/vendor/bootstrap-vue/src/bv-config.js +0 -8
- package/dist/vendor/bootstrap-vue/src/components/button/button-close.js +0 -81
- package/dist/vendor/bootstrap-vue/src/components/button/button.js +0 -204
- package/dist/vendor/bootstrap-vue/src/components/button/index.js +0 -2
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +0 -41
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +0 -52
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +0 -75
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +0 -52
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +0 -85
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +0 -97
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +0 -60
- package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +0 -271
- package/dist/vendor/bootstrap-vue/src/components/dropdown/index.js +0 -8
- package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +0 -53
- package/dist/vendor/bootstrap-vue/src/components/form/form-text.js +0 -55
- package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +0 -53
- package/dist/vendor/bootstrap-vue/src/components/form/form.js +0 -56
- package/dist/vendor/bootstrap-vue/src/components/form/index.js +0 -4
- package/dist/vendor/bootstrap-vue/src/components/form-group/form-group.js +0 -348
- package/dist/vendor/bootstrap-vue/src/components/form-group/index.js +0 -1
- package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +0 -54
- package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +0 -41
- package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +0 -143
- package/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +0 -56
- package/dist/vendor/bootstrap-vue/src/components/form-select/index.js +0 -3
- package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +0 -217
- package/dist/vendor/bootstrap-vue/src/components/form-textarea/index.js +0 -1
- package/dist/vendor/bootstrap-vue/src/components/layout/col.js +0 -156
- package/dist/vendor/bootstrap-vue/src/components/layout/form-row.js +0 -34
- package/dist/vendor/bootstrap-vue/src/components/layout/index.js +0 -2
- package/dist/vendor/bootstrap-vue/src/components/link/index.js +0 -1
- package/dist/vendor/bootstrap-vue/src/components/link/link.js +0 -283
- package/dist/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.js +0 -21
- package/dist/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +0 -212
- package/dist/vendor/bootstrap-vue/src/components/modal/index.js +0 -1
- package/dist/vendor/bootstrap-vue/src/components/modal/modal.js +0 -887
- package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +0 -55
- package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js +0 -31
- package/dist/vendor/bootstrap-vue/src/components/popover/index.js +0 -1
- package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +0 -49
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js +0 -22
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +0 -64
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js +0 -40
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +0 -43
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +0 -83
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +0 -50
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +0 -32
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +0 -82
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +0 -274
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +0 -154
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +0 -44
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +0 -191
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +0 -213
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +0 -275
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +0 -39
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +0 -186
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +0 -338
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +0 -243
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +0 -50
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +0 -218
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +0 -42
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js +0 -86
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +0 -32
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/stringify-record-values.js +0 -11
- package/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js +0 -14
- package/dist/vendor/bootstrap-vue/src/components/table/index.js +0 -9
- package/dist/vendor/bootstrap-vue/src/components/table/table-lite.js +0 -51
- package/dist/vendor/bootstrap-vue/src/components/table/table-simple.js +0 -44
- package/dist/vendor/bootstrap-vue/src/components/table/table.js +0 -67
- package/dist/vendor/bootstrap-vue/src/components/table/tbody.js +0 -116
- package/dist/vendor/bootstrap-vue/src/components/table/td.js +0 -204
- package/dist/vendor/bootstrap-vue/src/components/table/tfoot.js +0 -96
- package/dist/vendor/bootstrap-vue/src/components/table/th.js +0 -26
- package/dist/vendor/bootstrap-vue/src/components/table/thead.js +0 -99
- package/dist/vendor/bootstrap-vue/src/components/table/tr.js +0 -121
- package/dist/vendor/bootstrap-vue/src/components/tabs/index.js +0 -2
- package/dist/vendor/bootstrap-vue/src/components/tabs/tab.js +0 -238
- package/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js +0 -601
- package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +0 -251
- package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +0 -118
- package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +0 -932
- package/dist/vendor/bootstrap-vue/src/components/tooltip/index.js +0 -1
- package/dist/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +0 -269
- package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +0 -103
- package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +0 -205
- package/dist/vendor/bootstrap-vue/src/constants/components.js +0 -55
- package/dist/vendor/bootstrap-vue/src/constants/config.js +0 -11
- package/dist/vendor/bootstrap-vue/src/constants/env.js +0 -36
- package/dist/vendor/bootstrap-vue/src/constants/events.js +0 -56
- package/dist/vendor/bootstrap-vue/src/constants/key-codes.js +0 -11
- package/dist/vendor/bootstrap-vue/src/constants/popper.js +0 -10
- package/dist/vendor/bootstrap-vue/src/constants/props.js +0 -24
- package/dist/vendor/bootstrap-vue/src/constants/regex.js +0 -35
- package/dist/vendor/bootstrap-vue/src/constants/safe-types.js +0 -15
- package/dist/vendor/bootstrap-vue/src/constants/slots.js +0 -36
- package/dist/vendor/bootstrap-vue/src/directives/modal/index.js +0 -1
- package/dist/vendor/bootstrap-vue/src/directives/modal/modal.js +0 -112
- package/dist/vendor/bootstrap-vue/src/directives/tooltip/index.js +0 -1
- package/dist/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +0 -265
- package/dist/vendor/bootstrap-vue/src/directives/visible/index.js +0 -1
- package/dist/vendor/bootstrap-vue/src/directives/visible/visible.js +0 -187
- package/dist/vendor/bootstrap-vue/src/mixins/attrs.js +0 -5
- package/dist/vendor/bootstrap-vue/src/mixins/click-out.js +0 -54
- package/dist/vendor/bootstrap-vue/src/mixins/dropdown.js +0 -470
- package/dist/vendor/bootstrap-vue/src/mixins/focus-in.js +0 -46
- package/dist/vendor/bootstrap-vue/src/mixins/form-control.js +0 -73
- package/dist/vendor/bootstrap-vue/src/mixins/form-custom.js +0 -26
- package/dist/vendor/bootstrap-vue/src/mixins/form-options.js +0 -91
- package/dist/vendor/bootstrap-vue/src/mixins/form-selection.js +0 -62
- package/dist/vendor/bootstrap-vue/src/mixins/form-size.js +0 -26
- package/dist/vendor/bootstrap-vue/src/mixins/form-state.js +0 -50
- package/dist/vendor/bootstrap-vue/src/mixins/form-text.js +0 -293
- package/dist/vendor/bootstrap-vue/src/mixins/form-validity.js +0 -50
- package/dist/vendor/bootstrap-vue/src/mixins/has-listener.js +0 -29
- package/dist/vendor/bootstrap-vue/src/mixins/id.js +0 -57
- package/dist/vendor/bootstrap-vue/src/mixins/listen-on-document.js +0 -63
- package/dist/vendor/bootstrap-vue/src/mixins/listen-on-root.js +0 -121
- package/dist/vendor/bootstrap-vue/src/mixins/listen-on-window.js +0 -63
- package/dist/vendor/bootstrap-vue/src/mixins/listeners.js +0 -25
- package/dist/vendor/bootstrap-vue/src/mixins/model.js +0 -10
- package/dist/vendor/bootstrap-vue/src/mixins/normalize-slot.js +0 -30
- package/dist/vendor/bootstrap-vue/src/mixins/scoped-style.js +0 -18
- package/dist/vendor/bootstrap-vue/src/mixins/use-parent.js +0 -14
- package/dist/vendor/bootstrap-vue/src/utils/array.js +0 -28
- package/dist/vendor/bootstrap-vue/src/utils/bv-event.class.js +0 -60
- package/dist/vendor/bootstrap-vue/src/utils/cache.js +0 -60
- package/dist/vendor/bootstrap-vue/src/utils/clone-deep.js +0 -18
- package/dist/vendor/bootstrap-vue/src/utils/config-set.js +0 -86
- package/dist/vendor/bootstrap-vue/src/utils/config.js +0 -71
- package/dist/vendor/bootstrap-vue/src/utils/create-new-child-component.js +0 -133
- package/dist/vendor/bootstrap-vue/src/utils/css-escape.js +0 -70
- package/dist/vendor/bootstrap-vue/src/utils/dom.js +0 -298
- package/dist/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +0 -28
- package/dist/vendor/bootstrap-vue/src/utils/env.js +0 -16
- package/dist/vendor/bootstrap-vue/src/utils/events.js +0 -78
- package/dist/vendor/bootstrap-vue/src/utils/get-event-root.js +0 -5
- package/dist/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +0 -3
- package/dist/vendor/bootstrap-vue/src/utils/get-scope-id.js +0 -9
- package/dist/vendor/bootstrap-vue/src/utils/get.js +0 -63
- package/dist/vendor/bootstrap-vue/src/utils/html.js +0 -16
- package/dist/vendor/bootstrap-vue/src/utils/identity.js +0 -3
- package/dist/vendor/bootstrap-vue/src/utils/inspect.js +0 -35
- package/dist/vendor/bootstrap-vue/src/utils/locale.js +0 -19
- package/dist/vendor/bootstrap-vue/src/utils/loose-equal.js +0 -59
- package/dist/vendor/bootstrap-vue/src/utils/loose-index-of.js +0 -13
- package/dist/vendor/bootstrap-vue/src/utils/math.js +0 -9
- package/dist/vendor/bootstrap-vue/src/utils/memoize.js +0 -14
- package/dist/vendor/bootstrap-vue/src/utils/model.js +0 -33
- package/dist/vendor/bootstrap-vue/src/utils/noop.js +0 -3
- package/dist/vendor/bootstrap-vue/src/utils/normalize-slot.js +0 -51
- package/dist/vendor/bootstrap-vue/src/utils/number.js +0 -23
- package/dist/vendor/bootstrap-vue/src/utils/object.js +0 -72
- package/dist/vendor/bootstrap-vue/src/utils/observe-dom.js +0 -76
- package/dist/vendor/bootstrap-vue/src/utils/on-instance-destroy.js +0 -22
- package/dist/vendor/bootstrap-vue/src/utils/plugins.js +0 -124
- package/dist/vendor/bootstrap-vue/src/utils/props.js +0 -67
- package/dist/vendor/bootstrap-vue/src/utils/router.js +0 -150
- package/dist/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +0 -14
- package/dist/vendor/bootstrap-vue/src/utils/stable-sort.js +0 -28
- package/dist/vendor/bootstrap-vue/src/utils/string.js +0 -47
- package/dist/vendor/bootstrap-vue/src/utils/stringify-object-values.js +0 -31
- package/dist/vendor/bootstrap-vue/src/utils/warn.js +0 -45
- package/dist/vendor/bootstrap-vue/src/vue.js +0 -55
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
import { extend } from '../../../vue';
|
|
2
|
-
import { NAME_TABLE } from '../../../constants/components';
|
|
3
|
-
import { EVENT_NAME_FILTERED } from '../../../constants/events';
|
|
4
|
-
import { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_REG_EXP, PROP_TYPE_NUMBER_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_ARRAY } from '../../../constants/props';
|
|
5
|
-
import { RX_DIGITS, RX_SPACES } from '../../../constants/regex';
|
|
6
|
-
import { concat } from '../../../utils/array';
|
|
7
|
-
import { cloneDeep } from '../../../utils/clone-deep';
|
|
8
|
-
import { identity } from '../../../utils/identity';
|
|
9
|
-
import { isFunction, isString, isRegExp } from '../../../utils/inspect';
|
|
10
|
-
import { looseEqual } from '../../../utils/loose-equal';
|
|
11
|
-
import { toInteger } from '../../../utils/number';
|
|
12
|
-
import { makeProp } from '../../../utils/props';
|
|
13
|
-
import { escapeRegExp } from '../../../utils/string';
|
|
14
|
-
import { warn } from '../../../utils/warn';
|
|
15
|
-
import { stringifyRecordValues } from './stringify-record-values';
|
|
16
|
-
|
|
17
|
-
// --- Constants ---
|
|
18
|
-
|
|
19
|
-
const DEBOUNCE_DEPRECATED_MSG = 'Prop "filter-debounce" is deprecated. Use the debounce feature of "<b-form-input>" instead.';
|
|
20
|
-
|
|
21
|
-
// --- Props ---
|
|
22
|
-
|
|
23
|
-
const props = {
|
|
24
|
-
filter: makeProp([...PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_REG_EXP]),
|
|
25
|
-
filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, value => {
|
|
26
|
-
return RX_DIGITS.test(String(value));
|
|
27
|
-
}),
|
|
28
|
-
filterFunction: makeProp(PROP_TYPE_FUNCTION),
|
|
29
|
-
filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),
|
|
30
|
-
filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
// --- Mixin ---
|
|
34
|
-
|
|
35
|
-
// @vue/component
|
|
36
|
-
const filteringMixin = extend({
|
|
37
|
-
props,
|
|
38
|
-
data() {
|
|
39
|
-
return {
|
|
40
|
-
// Flag for displaying which empty slot to show and some event triggering
|
|
41
|
-
isFiltered: false,
|
|
42
|
-
// Where we store the copy of the filter criteria after debouncing
|
|
43
|
-
// We pre-set it with the sanitized filter value
|
|
44
|
-
localFilter: this.filterSanitize(this.filter)
|
|
45
|
-
};
|
|
46
|
-
},
|
|
47
|
-
computed: {
|
|
48
|
-
computedFilterIgnored() {
|
|
49
|
-
return concat(this.filterIgnoredFields || []).filter(identity);
|
|
50
|
-
},
|
|
51
|
-
computedFilterIncluded() {
|
|
52
|
-
return concat(this.filterIncludedFields || []).filter(identity);
|
|
53
|
-
},
|
|
54
|
-
computedFilterDebounce() {
|
|
55
|
-
const ms = toInteger(this.filterDebounce, 0);
|
|
56
|
-
/* istanbul ignore next */
|
|
57
|
-
if (ms > 0) {
|
|
58
|
-
warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);
|
|
59
|
-
}
|
|
60
|
-
return ms;
|
|
61
|
-
},
|
|
62
|
-
localFiltering() {
|
|
63
|
-
return this.hasProvider ? !!this.noProviderFiltering : true;
|
|
64
|
-
},
|
|
65
|
-
// For watching changes to `filteredItems` vs `localItems`
|
|
66
|
-
filteredCheck() {
|
|
67
|
-
const {
|
|
68
|
-
filteredItems,
|
|
69
|
-
localItems,
|
|
70
|
-
localFilter
|
|
71
|
-
} = this;
|
|
72
|
-
return {
|
|
73
|
-
filteredItems,
|
|
74
|
-
localItems,
|
|
75
|
-
localFilter
|
|
76
|
-
};
|
|
77
|
-
},
|
|
78
|
-
// Sanitized/normalize filter-function prop
|
|
79
|
-
localFilterFn() {
|
|
80
|
-
// Return `null` to signal to use internal filter function
|
|
81
|
-
const {
|
|
82
|
-
filterFunction
|
|
83
|
-
} = this;
|
|
84
|
-
// `filterFunction` is an optional Function prop with no default
|
|
85
|
-
return isFunction(filterFunction) ? filterFunction : null;
|
|
86
|
-
},
|
|
87
|
-
// Returns the records in `localItems` that match the filter criteria
|
|
88
|
-
// Returns the original `localItems` array if not sorting
|
|
89
|
-
filteredItems() {
|
|
90
|
-
// Note the criteria is debounced and sanitized
|
|
91
|
-
const {
|
|
92
|
-
localItems: items,
|
|
93
|
-
localFilter: criteria
|
|
94
|
-
} = this;
|
|
95
|
-
|
|
96
|
-
// Resolve the filtering function, when requested
|
|
97
|
-
// We prefer the provided filtering function and fallback to the internal one
|
|
98
|
-
// When no filtering criteria is specified the filtering factories will return `null`
|
|
99
|
-
const filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null;
|
|
100
|
-
|
|
101
|
-
// We only do local filtering when requested and there are records to filter
|
|
102
|
-
return filterFn && items.length > 0 ? items.filter(filterFn) : items;
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
watch: {
|
|
106
|
-
// Watch for debounce being set to 0
|
|
107
|
-
computedFilterDebounce(newValue) {
|
|
108
|
-
if (!newValue && this.$_filterTimer) {
|
|
109
|
-
this.clearFilterTimer();
|
|
110
|
-
this.localFilter = this.filterSanitize(this.filter);
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
// Watch for changes to the filter criteria, and debounce if necessary
|
|
114
|
-
filter: {
|
|
115
|
-
// We need a deep watcher in case the user passes
|
|
116
|
-
// an object when using `filter-function`
|
|
117
|
-
deep: true,
|
|
118
|
-
handler(newCriteria) {
|
|
119
|
-
const timeout = this.computedFilterDebounce;
|
|
120
|
-
this.clearFilterTimer();
|
|
121
|
-
if (timeout && timeout > 0) {
|
|
122
|
-
// If we have a debounce time, delay the update of `localFilter`
|
|
123
|
-
this.$_filterTimer = setTimeout(() => {
|
|
124
|
-
this.localFilter = this.filterSanitize(newCriteria);
|
|
125
|
-
}, timeout);
|
|
126
|
-
} else {
|
|
127
|
-
// Otherwise, immediately update `localFilter` with `newFilter` value
|
|
128
|
-
this.localFilter = this.filterSanitize(newCriteria);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
// Watch for changes to the filter criteria and filtered items vs `localItems`
|
|
133
|
-
// Set visual state and emit events as required
|
|
134
|
-
filteredCheck(_ref) {
|
|
135
|
-
let {
|
|
136
|
-
filteredItems,
|
|
137
|
-
localFilter
|
|
138
|
-
} = _ref;
|
|
139
|
-
// Determine if the dataset is filtered or not
|
|
140
|
-
let isFiltered = false;
|
|
141
|
-
if (!localFilter) {
|
|
142
|
-
// If filter criteria is falsey
|
|
143
|
-
isFiltered = false;
|
|
144
|
-
} else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {
|
|
145
|
-
// If filter criteria is an empty array or object
|
|
146
|
-
isFiltered = false;
|
|
147
|
-
} else if (localFilter) {
|
|
148
|
-
// If filter criteria is truthy
|
|
149
|
-
isFiltered = true;
|
|
150
|
-
}
|
|
151
|
-
if (isFiltered) {
|
|
152
|
-
this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);
|
|
153
|
-
// Clear selection on filter change if selectable (defined in mixin-selectable.js)
|
|
154
|
-
if (this.hasSelectableRowClick) {
|
|
155
|
-
this.clearSelected();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
this.isFiltered = isFiltered;
|
|
159
|
-
},
|
|
160
|
-
isFiltered(newValue, oldValue) {
|
|
161
|
-
if (newValue === false && oldValue === true) {
|
|
162
|
-
// We need to emit a filtered event if `isFiltered` transitions from `true` to
|
|
163
|
-
// `false` so that users can update their pagination controls
|
|
164
|
-
const {
|
|
165
|
-
localItems
|
|
166
|
-
} = this;
|
|
167
|
-
this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);
|
|
168
|
-
// Clear selection on filter change if selectable (defined in mixin-selectable.js)
|
|
169
|
-
if (this.hasSelectableRowClick) {
|
|
170
|
-
this.clearSelected();
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
created() {
|
|
176
|
-
// Create private non-reactive props
|
|
177
|
-
this.$_filterTimer = null;
|
|
178
|
-
// If filter is "pre-set", set the criteria
|
|
179
|
-
// This will trigger any watchers/dependents
|
|
180
|
-
// this.localFilter = this.filterSanitize(this.filter)
|
|
181
|
-
// Set the initial filtered state in a `$nextTick()` so that
|
|
182
|
-
// we trigger a filtered event if needed
|
|
183
|
-
this.$nextTick(() => {
|
|
184
|
-
this.isFiltered = Boolean(this.localFilter);
|
|
185
|
-
});
|
|
186
|
-
},
|
|
187
|
-
beforeDestroy() {
|
|
188
|
-
this.clearFilterTimer();
|
|
189
|
-
},
|
|
190
|
-
methods: {
|
|
191
|
-
clearFilterTimer() {
|
|
192
|
-
clearTimeout(this.$_filterTimer);
|
|
193
|
-
this.$_filterTimer = null;
|
|
194
|
-
},
|
|
195
|
-
filterSanitize(criteria) {
|
|
196
|
-
// Sanitizes filter criteria based on internal or external filtering
|
|
197
|
-
if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {
|
|
198
|
-
// If using internal filter function, which only accepts string or RegExp,
|
|
199
|
-
// return '' to signify no filter
|
|
200
|
-
return '';
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// Could be a string, object or array, as needed by external filter function
|
|
204
|
-
// We use `cloneDeep` to ensure we have a new copy of an object or array
|
|
205
|
-
// without Vue's reactive observers
|
|
206
|
-
return cloneDeep(criteria);
|
|
207
|
-
},
|
|
208
|
-
// Filter Function factories
|
|
209
|
-
filterFnFactory(filterFn, criteria) {
|
|
210
|
-
// Wrapper factory for external filter functions
|
|
211
|
-
// Wrap the provided filter-function and return a new function
|
|
212
|
-
// Returns `null` if no filter-function defined or if criteria is falsey
|
|
213
|
-
// Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`
|
|
214
|
-
// we have it passed, so that the caller computed prop will be reactive to changes
|
|
215
|
-
// in the original filter-function (as this routine is a method)
|
|
216
|
-
if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {
|
|
217
|
-
return null;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
// Build the wrapped filter test function, passing the criteria to the provided function
|
|
221
|
-
const fn = item => {
|
|
222
|
-
// Generated function returns true if the criteria matches part
|
|
223
|
-
// of the serialized data, otherwise false
|
|
224
|
-
return filterFn(item, criteria);
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
// Return the wrapped function
|
|
228
|
-
return fn;
|
|
229
|
-
},
|
|
230
|
-
defaultFilterFnFactory(criteria) {
|
|
231
|
-
// Generates the default filter function, using the given filter criteria
|
|
232
|
-
// Returns `null` if no criteria or criteria format not supported
|
|
233
|
-
if (!criteria || !(isString(criteria) || isRegExp(criteria))) {
|
|
234
|
-
// Built in filter can only support strings or RegExp criteria (at the moment)
|
|
235
|
-
return null;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// Build the RegExp needed for filtering
|
|
239
|
-
let regExp = criteria;
|
|
240
|
-
if (isString(regExp)) {
|
|
241
|
-
// Escape special RegExp characters in the string and convert contiguous
|
|
242
|
-
// whitespace to \s+ matches
|
|
243
|
-
const pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\s+');
|
|
244
|
-
// Build the RegExp (no need for global flag, as we only need
|
|
245
|
-
// to find the value once in the string)
|
|
246
|
-
regExp = new RegExp(`.*${pattern}.*`, 'i');
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
// Generate the wrapped filter test function to use
|
|
250
|
-
const fn = item => {
|
|
251
|
-
// This searches all row values (and sub property values) in the entire (excluding
|
|
252
|
-
// special `_` prefixed keys), because we convert the record to a space-separated
|
|
253
|
-
// string containing all the value properties (recursively), even ones that are
|
|
254
|
-
// not visible (not specified in this.fields)
|
|
255
|
-
// Users can ignore filtering on specific fields, or on only certain fields,
|
|
256
|
-
// and can optionall specify searching results of fields with formatter
|
|
257
|
-
//
|
|
258
|
-
// TODO: Enable searching on scoped slots (optional, as it will be SLOW)
|
|
259
|
-
//
|
|
260
|
-
// Generated function returns true if the criteria matches part of
|
|
261
|
-
// the serialized data, otherwise false
|
|
262
|
-
//
|
|
263
|
-
// We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag
|
|
264
|
-
regExp.lastIndex = 0;
|
|
265
|
-
return regExp.test(stringifyRecordValues(item, this.computedFilterIgnored, this.computedFilterIncluded, this.computedFieldsObj));
|
|
266
|
-
};
|
|
267
|
-
|
|
268
|
-
// Return the generated function
|
|
269
|
-
return fn;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
export { filteringMixin, props };
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { extend } from '../../../vue';
|
|
2
|
-
import { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';
|
|
3
|
-
import { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';
|
|
4
|
-
import { useParentMixin } from '../../../mixins/use-parent';
|
|
5
|
-
import { isArray, isString, isFunction } from '../../../utils/inspect';
|
|
6
|
-
import { looseEqual } from '../../../utils/loose-equal';
|
|
7
|
-
import { mathMax } from '../../../utils/math';
|
|
8
|
-
import { makeModelMixin } from '../../../utils/model';
|
|
9
|
-
import { toInteger } from '../../../utils/number';
|
|
10
|
-
import { sortKeys, clone } from '../../../utils/object';
|
|
11
|
-
import { makeProp } from '../../../utils/props';
|
|
12
|
-
import { safeVueInstance } from '../../../utils/safe-vue-instance';
|
|
13
|
-
import { normalizeFields } from './normalize-fields';
|
|
14
|
-
|
|
15
|
-
// --- Constants ---
|
|
16
|
-
|
|
17
|
-
const {
|
|
18
|
-
mixin: modelMixin,
|
|
19
|
-
props: modelProps,
|
|
20
|
-
prop: MODEL_PROP_NAME,
|
|
21
|
-
event: MODEL_EVENT_NAME
|
|
22
|
-
} = makeModelMixin('value', {
|
|
23
|
-
type: PROP_TYPE_ARRAY,
|
|
24
|
-
defaultValue: []
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
// --- Props ---
|
|
28
|
-
|
|
29
|
-
const props = sortKeys({
|
|
30
|
-
...modelProps,
|
|
31
|
-
fields: makeProp(PROP_TYPE_ARRAY, null),
|
|
32
|
-
// Provider mixin adds in `Function` type
|
|
33
|
-
items: makeProp(PROP_TYPE_ARRAY, []),
|
|
34
|
-
// Primary key for record
|
|
35
|
-
// If provided the value in each row must be unique!
|
|
36
|
-
primaryKey: makeProp(PROP_TYPE_STRING),
|
|
37
|
-
// `v-model` for retrieving the current displayed rows
|
|
38
|
-
[MODEL_PROP_NAME]: makeProp(PROP_TYPE_ARRAY, [])
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
// --- Mixin ---
|
|
42
|
-
|
|
43
|
-
// @vue/component
|
|
44
|
-
const itemsMixin = extend({
|
|
45
|
-
mixins: [modelMixin, useParentMixin],
|
|
46
|
-
props,
|
|
47
|
-
data() {
|
|
48
|
-
const {
|
|
49
|
-
items
|
|
50
|
-
} = this;
|
|
51
|
-
return {
|
|
52
|
-
// Our local copy of the items
|
|
53
|
-
// Must be an array
|
|
54
|
-
localItems: isArray(items) ? items.slice() : []
|
|
55
|
-
};
|
|
56
|
-
},
|
|
57
|
-
computed: {
|
|
58
|
-
computedFields() {
|
|
59
|
-
// We normalize fields into an array of objects
|
|
60
|
-
// `[ { key:..., label:..., ...}, {...}, ..., {..}]`
|
|
61
|
-
return normalizeFields(this.fields, this.localItems);
|
|
62
|
-
},
|
|
63
|
-
computedFieldsObj() {
|
|
64
|
-
// Fields as a simple lookup hash object
|
|
65
|
-
// Mainly for formatter lookup and use in `scopedSlots` for convenience
|
|
66
|
-
// If the field has a formatter, it normalizes formatter to a
|
|
67
|
-
// function ref or `undefined` if no formatter
|
|
68
|
-
const {
|
|
69
|
-
bvParent
|
|
70
|
-
} = this;
|
|
71
|
-
return this.computedFields.reduce((obj, f) => {
|
|
72
|
-
// We use object spread here so we don't mutate the original field object
|
|
73
|
-
obj[f.key] = clone(f);
|
|
74
|
-
if (f.formatter) {
|
|
75
|
-
// Normalize formatter to a function ref or `undefined`
|
|
76
|
-
let formatter = f.formatter;
|
|
77
|
-
if (isString(formatter) && isFunction(bvParent[formatter])) {
|
|
78
|
-
formatter = bvParent[formatter];
|
|
79
|
-
} else if (!isFunction(formatter)) {
|
|
80
|
-
/* istanbul ignore next */
|
|
81
|
-
formatter = undefined;
|
|
82
|
-
}
|
|
83
|
-
// Return formatter function or `undefined` if none
|
|
84
|
-
obj[f.key].formatter = formatter;
|
|
85
|
-
}
|
|
86
|
-
return obj;
|
|
87
|
-
}, {});
|
|
88
|
-
},
|
|
89
|
-
computedItems() {
|
|
90
|
-
const {
|
|
91
|
-
paginatedItems,
|
|
92
|
-
sortedItems,
|
|
93
|
-
filteredItems,
|
|
94
|
-
localItems
|
|
95
|
-
} = safeVueInstance(this);
|
|
96
|
-
// Fallback if various mixins not provided
|
|
97
|
-
return (paginatedItems || sortedItems || filteredItems || localItems || /* istanbul ignore next */
|
|
98
|
-
[]).slice();
|
|
99
|
-
},
|
|
100
|
-
context() {
|
|
101
|
-
const {
|
|
102
|
-
perPage,
|
|
103
|
-
currentPage
|
|
104
|
-
} = safeVueInstance(this);
|
|
105
|
-
// Current state of sorting, filtering and pagination props/values
|
|
106
|
-
return {
|
|
107
|
-
filter: this.localFilter,
|
|
108
|
-
sortBy: this.localSortBy,
|
|
109
|
-
sortDesc: this.localSortDesc,
|
|
110
|
-
perPage: mathMax(toInteger(perPage, 0), 0),
|
|
111
|
-
currentPage: mathMax(toInteger(currentPage, 0), 1),
|
|
112
|
-
apiUrl: this.apiUrl
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
watch: {
|
|
117
|
-
items(newValue) {
|
|
118
|
-
// Set `localItems`/`filteredItems` to a copy of the provided array
|
|
119
|
-
this.localItems = isArray(newValue) ? newValue.slice() : [];
|
|
120
|
-
},
|
|
121
|
-
// Watch for changes on `computedItems` and update the `v-model`
|
|
122
|
-
computedItems(newValue, oldValue) {
|
|
123
|
-
if (!looseEqual(newValue, oldValue)) {
|
|
124
|
-
this.$emit(MODEL_EVENT_NAME, newValue);
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
// Watch for context changes
|
|
128
|
-
context(newValue, oldValue) {
|
|
129
|
-
// Emit context information for external paging/filtering/sorting handling
|
|
130
|
-
if (!looseEqual(newValue, oldValue)) {
|
|
131
|
-
this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);
|
|
132
|
-
// Clear selection on context change if selectable (defined in mixin-selectable.js)
|
|
133
|
-
if (this.hasSelectableRowClick) {
|
|
134
|
-
this.clearSelected();
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
mounted() {
|
|
140
|
-
// Initially update the `v-model` of displayed items
|
|
141
|
-
this.$emit(MODEL_EVENT_NAME, this.computedItems);
|
|
142
|
-
},
|
|
143
|
-
methods: {
|
|
144
|
-
// Method to get the formatter method for a given field key
|
|
145
|
-
getFieldFormatter(key) {
|
|
146
|
-
const field = this.computedFieldsObj[key];
|
|
147
|
-
// `this.computedFieldsObj` has pre-normalized the formatter to a
|
|
148
|
-
// function ref if present, otherwise `undefined`
|
|
149
|
-
return field ? field.formatter : undefined;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
export { MODEL_EVENT_NAME, MODEL_PROP_NAME, itemsMixin, props };
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { extend } from '../../../vue';
|
|
2
|
-
import { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';
|
|
3
|
-
import { mathMax } from '../../../utils/math';
|
|
4
|
-
import { toInteger } from '../../../utils/number';
|
|
5
|
-
import { makeProp } from '../../../utils/props';
|
|
6
|
-
import { safeVueInstance } from '../../../utils/safe-vue-instance';
|
|
7
|
-
|
|
8
|
-
// --- Props ---
|
|
9
|
-
|
|
10
|
-
const props = {
|
|
11
|
-
currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),
|
|
12
|
-
perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
// --- Mixin ---
|
|
16
|
-
|
|
17
|
-
// @vue/component
|
|
18
|
-
const paginationMixin = extend({
|
|
19
|
-
props,
|
|
20
|
-
computed: {
|
|
21
|
-
localPaging() {
|
|
22
|
-
return this.hasProvider ? !!this.noProviderPaging : true;
|
|
23
|
-
},
|
|
24
|
-
paginatedItems() {
|
|
25
|
-
const {
|
|
26
|
-
sortedItems,
|
|
27
|
-
filteredItems,
|
|
28
|
-
localItems
|
|
29
|
-
} = safeVueInstance(this);
|
|
30
|
-
let items = sortedItems || filteredItems || localItems || [];
|
|
31
|
-
const currentPage = mathMax(toInteger(this.currentPage, 1), 1);
|
|
32
|
-
const perPage = mathMax(toInteger(this.perPage, 0), 0);
|
|
33
|
-
// Apply local pagination
|
|
34
|
-
if (this.localPaging && perPage) {
|
|
35
|
-
// Grab the current page of data (which may be past filtered items limit)
|
|
36
|
-
items = items.slice((currentPage - 1) * perPage, currentPage * perPage);
|
|
37
|
-
}
|
|
38
|
-
// Return the items to display in the table
|
|
39
|
-
return items;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
export { paginationMixin, props };
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import { extend } from '../../../vue';
|
|
2
|
-
import { NAME_TABLE } from '../../../constants/components';
|
|
3
|
-
import { EVENT_NAME_REFRESHED, EVENT_NAME_REFRESH } from '../../../constants/events';
|
|
4
|
-
import { PROP_TYPE_STRING, PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN } from '../../../constants/props';
|
|
5
|
-
import { getRootEventName, getRootActionEventName } from '../../../utils/events';
|
|
6
|
-
import { isFunction, isArray, isPromise } from '../../../utils/inspect';
|
|
7
|
-
import { looseEqual } from '../../../utils/loose-equal';
|
|
8
|
-
import { clone } from '../../../utils/object';
|
|
9
|
-
import { makeProp } from '../../../utils/props';
|
|
10
|
-
import { safeVueInstance } from '../../../utils/safe-vue-instance';
|
|
11
|
-
import { warn } from '../../../utils/warn';
|
|
12
|
-
import { listenOnRootMixin } from '../../../mixins/listen-on-root';
|
|
13
|
-
|
|
14
|
-
// --- Constants ---
|
|
15
|
-
|
|
16
|
-
const ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);
|
|
17
|
-
const ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH);
|
|
18
|
-
|
|
19
|
-
// --- Props ---
|
|
20
|
-
|
|
21
|
-
const props = {
|
|
22
|
-
// Passed to the context object
|
|
23
|
-
// Not used by `<b-table>` directly
|
|
24
|
-
apiUrl: makeProp(PROP_TYPE_STRING),
|
|
25
|
-
// Adds in 'Function' support
|
|
26
|
-
items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),
|
|
27
|
-
noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),
|
|
28
|
-
noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),
|
|
29
|
-
noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
// --- Mixin ---
|
|
33
|
-
|
|
34
|
-
// @vue/component
|
|
35
|
-
const providerMixin = extend({
|
|
36
|
-
mixins: [listenOnRootMixin],
|
|
37
|
-
props,
|
|
38
|
-
computed: {
|
|
39
|
-
hasProvider() {
|
|
40
|
-
return isFunction(this.items);
|
|
41
|
-
},
|
|
42
|
-
providerTriggerContext() {
|
|
43
|
-
// Used to trigger the provider function via a watcher. Only the fields that
|
|
44
|
-
// are needed for triggering a provider update are included. Note that the
|
|
45
|
-
// regular this.context is sent to the provider during fetches though, as they
|
|
46
|
-
// may need all the prop info.
|
|
47
|
-
const ctx = {
|
|
48
|
-
apiUrl: this.apiUrl,
|
|
49
|
-
filter: null,
|
|
50
|
-
sortBy: null,
|
|
51
|
-
sortDesc: null,
|
|
52
|
-
perPage: null,
|
|
53
|
-
currentPage: null
|
|
54
|
-
};
|
|
55
|
-
if (!this.noProviderFiltering) {
|
|
56
|
-
// Either a string, or could be an object or array.
|
|
57
|
-
ctx.filter = this.localFilter;
|
|
58
|
-
}
|
|
59
|
-
if (!this.noProviderSorting) {
|
|
60
|
-
ctx.sortBy = this.localSortBy;
|
|
61
|
-
ctx.sortDesc = this.localSortDesc;
|
|
62
|
-
}
|
|
63
|
-
if (!this.noProviderPaging) {
|
|
64
|
-
ctx.perPage = this.perPage;
|
|
65
|
-
ctx.currentPage = this.currentPage;
|
|
66
|
-
}
|
|
67
|
-
return clone(ctx);
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
watch: {
|
|
71
|
-
// Provider update triggering
|
|
72
|
-
items(newValue) {
|
|
73
|
-
// If a new provider has been specified, trigger an update
|
|
74
|
-
if (this.hasProvider || isFunction(newValue)) {
|
|
75
|
-
this.$nextTick(this._providerUpdate);
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
providerTriggerContext(newValue, oldValue) {
|
|
79
|
-
// Trigger the provider to update as the relevant context values have changed.
|
|
80
|
-
if (!looseEqual(newValue, oldValue)) {
|
|
81
|
-
this.$nextTick(this._providerUpdate);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
mounted() {
|
|
86
|
-
// Call the items provider if necessary
|
|
87
|
-
if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {
|
|
88
|
-
// Fetch on mount if localItems is empty
|
|
89
|
-
this._providerUpdate();
|
|
90
|
-
}
|
|
91
|
-
// Listen for global messages to tell us to force refresh the table
|
|
92
|
-
this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, id => {
|
|
93
|
-
if (id === this.id || id === this) {
|
|
94
|
-
this.refresh();
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
},
|
|
98
|
-
methods: {
|
|
99
|
-
refresh() {
|
|
100
|
-
const {
|
|
101
|
-
items,
|
|
102
|
-
computedBusy
|
|
103
|
-
} = safeVueInstance(this);
|
|
104
|
-
|
|
105
|
-
// Public Method: Force a refresh of the provider function
|
|
106
|
-
this.$_pendingRefresh = false;
|
|
107
|
-
if (computedBusy) {
|
|
108
|
-
// Can't force an update when forced busy by user (busy prop === true)
|
|
109
|
-
if (this.localBusy && this.hasProvider) {
|
|
110
|
-
// But if provider running (localBusy), re-schedule refresh once `refreshed` emitted
|
|
111
|
-
this.$_pendingRefresh = true;
|
|
112
|
-
}
|
|
113
|
-
} else {
|
|
114
|
-
this.clearSelected();
|
|
115
|
-
if (this.hasProvider) {
|
|
116
|
-
this.$nextTick(this._providerUpdate);
|
|
117
|
-
} else {
|
|
118
|
-
/* istanbul ignore next */
|
|
119
|
-
this.localItems = isArray(items) ? items.slice() : [];
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
// Provider related methods
|
|
124
|
-
_providerSetLocal(items) {
|
|
125
|
-
this.localItems = isArray(items) ? items.slice() : [];
|
|
126
|
-
this.localBusy = false;
|
|
127
|
-
this.$emit(EVENT_NAME_REFRESHED);
|
|
128
|
-
// New root emit
|
|
129
|
-
if (this.id) {
|
|
130
|
-
this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);
|
|
131
|
-
}
|
|
132
|
-
// Handle pending refresh request
|
|
133
|
-
if (this.$_pendingRefresh) {
|
|
134
|
-
this.$_pendingRefresh = false;
|
|
135
|
-
this.refresh();
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
|
-
_providerUpdate() {
|
|
139
|
-
// Refresh the provider function items.
|
|
140
|
-
if (!this.hasProvider) {
|
|
141
|
-
// Do nothing if no provider
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
// If table is busy, wait until refreshed before calling again
|
|
145
|
-
if (safeVueInstance(this).computedBusy) {
|
|
146
|
-
// Schedule a new refresh once `refreshed` is emitted
|
|
147
|
-
this.$nextTick(this.refresh);
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// Set internal busy state
|
|
152
|
-
this.localBusy = true;
|
|
153
|
-
|
|
154
|
-
// Call provider function with context and optional callback after DOM is fully updated
|
|
155
|
-
this.$nextTick(() => {
|
|
156
|
-
try {
|
|
157
|
-
// Call provider function passing it the context and optional callback
|
|
158
|
-
const data = this.items(this.context, this._providerSetLocal);
|
|
159
|
-
if (isPromise(data)) {
|
|
160
|
-
// Provider returned Promise
|
|
161
|
-
data.then(items => {
|
|
162
|
-
// Provider resolved with items
|
|
163
|
-
this._providerSetLocal(items);
|
|
164
|
-
});
|
|
165
|
-
} else if (isArray(data)) {
|
|
166
|
-
// Provider returned Array data
|
|
167
|
-
this._providerSetLocal(data);
|
|
168
|
-
} else {
|
|
169
|
-
/* istanbul ignore if */
|
|
170
|
-
if (this.items.length !== 2) {
|
|
171
|
-
// Check number of arguments provider function requested
|
|
172
|
-
// Provider not using callback (didn't request second argument), so we clear
|
|
173
|
-
// busy state as most likely there was an error in the provider function
|
|
174
|
-
/* istanbul ignore next */
|
|
175
|
-
warn("Provider function didn't request callback and did not return a promise or data.", NAME_TABLE);
|
|
176
|
-
this.localBusy = false;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
} catch (e) /* istanbul ignore next */{
|
|
180
|
-
// Provider function borked on us, so we spew out a warning
|
|
181
|
-
// and clear the busy state
|
|
182
|
-
warn(`Provider function error [${e.name}] ${e.message}.`, NAME_TABLE);
|
|
183
|
-
this.localBusy = false;
|
|
184
|
-
this.$_pendingRefresh = false;
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
export { props, providerMixin };
|