diff --git a/client/src/components/DatasetInformation/DatasetDetails.vue b/client/src/components/DatasetInformation/DatasetDetails.vue index 9c202627343..b8a7dfdb10f 100644 --- a/client/src/components/DatasetInformation/DatasetDetails.vue +++ b/client/src/components/DatasetInformation/DatasetDetails.vue @@ -4,7 +4,7 @@ :id="datasetId" v-slot="{ result: dataset, loading: isDatasetLoading, error: datasetLoadingError }">
-

Dataset Details

+

Dataset Details

diff --git a/client/src/components/History/Content/ContentItem.test.js b/client/src/components/History/Content/ContentItem.test.js index e731b526132..ce8e4673233 100644 --- a/client/src/components/History/Content/ContentItem.test.js +++ b/client/src/components/History/Content/ContentItem.test.js @@ -30,50 +30,70 @@ describe("ContentItem", () => { name: "name", selected: false, selectable: false, + filterable: true, }, localVue, stubs: { DatasetDetails: true, vueTagsInput: false, }, + provide: { + store: { + dispatch: jest.fn, + getters: {}, + }, + }, }); }); it("check basics", async () => { expect(wrapper.attributes("data-hid")).toBe("1"); expect(wrapper.find(".content-title").text()).toBe("name"); - const tags = wrapper.find(".alltags").findAll(".ti-tag"); + const tags = wrapper.find(".stateless-tags").findAll(".tag"); + // verify tags expect(tags.length).toBe(3); + for (let i = 0; i < 3; i++) { expect(tags.at(i).text()).toBe(`tag${i + 1}`); - await tags.at(i).find(".tag-name").trigger("click"); + + await tags.at(i).trigger("click"); expect(wrapper.emitted()["tag-click"][i][0]).toBe(`tag${i + 1}`); } + // close all tags for (let i = 0; i < 3; i++) { - const tagRemover = wrapper.find(".ti-icon-close"); + const tagRemover = wrapper.find(`.tag[data-option=tag${i + 1}] button`); + await tagRemover.trigger("click"); expect(wrapper.emitted()["tag-change"][i][1]).not.toContain(`tag${i + 1}`); } + await wrapper.setProps({ isHistoryItem: false, item: { tags: [] } }); - expect(wrapper.find(".alltags").exists()).toBe(false); + expect(wrapper.find(".stateless-tags").exists()).toBe(false); + // expansion button const $el = wrapper.find(".cursor-pointer"); $el.trigger("click"); expect(wrapper.emitted()["update:expand-dataset"]).toBeDefined(); + // select and unselect const noSelector = wrapper.find(".selector > svg"); expect(noSelector.exists()).toBe(false); + await wrapper.setProps({ selectable: true }); expect(wrapper.classes()).toEqual(expect.arrayContaining(["alert-success"])); + const selector = wrapper.find(".selector > svg"); expect(selector.attributes("data-icon")).toBe("square"); selector.trigger("click"); + await localVue.nextTick(); expect(wrapper.emitted()["update:selected"][0][0]).toBe(true); + await wrapper.setProps({ selected: true }); selector.trigger("click"); + await localVue.nextTick(); expect(wrapper.emitted()["update:selected"][1][0]).toBe(false); expect(wrapper.classes()).toEqual(expect.arrayContaining(["alert-info"])); diff --git a/client/src/components/History/Content/ContentItem.vue b/client/src/components/History/Content/ContentItem.vue index 0ff44351494..a99b3053ea0 100644 --- a/client/src/components/History/Content/ContentItem.vue +++ b/client/src/components/History/Content/ContentItem.vue @@ -3,37 +3,18 @@ :id="contentId" :class="['content-item m-1 p-0 rounded btn-transparent-background', contentCls]" :data-hid="id" - :data-state="state"> -
+ :data-state="state" + tabindex="0" + role="button" + @keydown="onKeyDown"> +
- - - - - + + + + + + :clickable="filterable" + :useToggleLink="false" + @input="onTags" + @tag-click="onTagClick" /> - diff --git a/client/src/components/History/Content/ContentOptions.vue b/client/src/components/History/Content/ContentOptions.vue index c2a9d8e4c49..d1b442cc73d 100644 --- a/client/src/components/History/Content/ContentOptions.vue +++ b/client/src/components/History/Content/ContentOptions.vue @@ -17,6 +17,7 @@ v-if="isDataset" :disabled="displayDisabled" :title="displayButtonTitle" + :tabindex="tabindex" class="display-btn px-1" size="sm" variant="link" @@ -28,6 +29,7 @@ v-if="writable && isHistoryItem" :disabled="editDisabled" :title="editButtonTitle" + :tabindex="tabindex" class="edit-btn px-1" size="sm" variant="link" @@ -37,6 +39,7 @@ diff --git a/client/src/components/History/CurrentCollection/CollectionPanel.vue b/client/src/components/History/CurrentCollection/CollectionPanel.vue index 68af5a016f4..eb69d0ee598 100644 --- a/client/src/components/History/CurrentCollection/CollectionPanel.vue +++ b/client/src/components/History/CurrentCollection/CollectionPanel.vue @@ -28,6 +28,7 @@ :name="item.element_identifier" :expand-dataset="isExpanded(item)" :is-dataset="item.element_type == 'hda'" + :filterable="filterable" @update:expand-dataset="setExpanded(item, $event)" @view-collection="onViewSubCollection" /> @@ -63,6 +64,7 @@ export default { history: { type: Object, required: true }, selectedCollections: { type: Array, required: true }, showControls: { type: Boolean, default: true }, + filterable: { type: Boolean, default: false }, }, data() { return { diff --git a/client/src/components/History/CurrentHistory/HistoryPanel.vue b/client/src/components/History/CurrentHistory/HistoryPanel.vue index 45b4cafeb58..af66154bcd7 100644 --- a/client/src/components/History/CurrentHistory/HistoryPanel.vue +++ b/client/src/components/History/CurrentHistory/HistoryPanel.vue @@ -123,6 +123,7 @@ :highlight="getHighlight(item)" :selected="isSelected(item)" :selectable="showSelection" + :filterable="filterable" @tag-click="onTagClick" @tag-change="onTagChange" @toggleHighlights="toggleHighlights" @@ -194,6 +195,7 @@ export default { filter: { type: String, default: "" }, writable: { type: Boolean, default: true }, showControls: { type: Boolean, default: true }, + filterable: { type: Boolean, default: false }, }, data() { return { diff --git a/client/src/components/History/Index.vue b/client/src/components/History/Index.vue index da6677092f2..91aff574db1 100644 --- a/client/src/components/History/Index.vue +++ b/client/src/components/History/Index.vue @@ -6,6 +6,7 @@ v-if="!breadcrumbs.length" :list-offset="listOffset" :history="currentHistory" + :filterable="true" v-on="handlers" @view-collection="onViewCollection">