Skip to content

Commit

Permalink
Add a custom preset primevue theme
Browse files Browse the repository at this point in the history
Update custom primevue theme

Update custom primevue theme

change transitionDuration to 0.05s

Fix padding diff between header and body cell
  • Loading branch information
BenjaminCharmes committed Oct 15, 2024
1 parent d829102 commit 5277fb2
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 47 deletions.
64 changes: 24 additions & 40 deletions webapp/src/components/DynamicDataTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,15 @@ export default {
if (event.originalEvent.target.classList.contains("checkbox")) {
return null;
} else if (event.originalEvent.target.classList.contains("p-checkbox-input")) {
const selectedIndex = this.itemsSelected.findIndex((item) => item.item_id === row.item_id);
if (selectedIndex === -1) {
this.itemsSelected.push(row);
} else {
this.itemsSelected.splice(selectedIndex, 1);
}
return null;
}
if (
Expand Down Expand Up @@ -314,7 +323,11 @@ export default {
return false;
}
return visibleItems.every((currentItem) =>
this.itemsSelected.some((selectedItem) => selectedItem.item_id === currentItem.item_id),
this.itemsSelected.some(
(selectedItem) =>
(selectedItem.item_id || selectedItem.collection_id) ===
(currentItem.item_id || currentItem.collection_id),
),
);
},
onFilter(event) {
Expand All @@ -326,15 +339,21 @@ export default {
const itemsToSelect = this.getVisibleItems();
if (this.allSelected) {
const selectedIds = new Set(this.itemsSelected.map((item) => item.item_id));
const selectedIds = new Set(
this.itemsSelected.map((item) => item.item_id || item.collection_id),
);
itemsToSelect.forEach((item) => {
if (!selectedIds.has(item.item_id)) {
if (!selectedIds.has(item.item_id || item.collection_id)) {
this.itemsSelected.push(item);
}
});
} else {
const idsToRemove = new Set(itemsToSelect.map((item) => item.item_id));
this.itemsSelected = this.itemsSelected.filter((item) => !idsToRemove.has(item.item_id));
const idsToRemove = new Set(
itemsToSelect.map((item) => item.item_id || item.collection_id),
);
this.itemsSelected = this.itemsSelected.filter(
(item) => !idsToRemove.has(item.item_id || item.collection_id),
);
}
},
deleteSelectedItems() {
Expand All @@ -351,38 +370,3 @@ export default {
},
};
</script>

<style scoped>
.customize-table .ag-header {
font-size: 1rem;
}
.p-datatable-column-header-content .p-datatable-sort-icon {
visibility: hidden !important;
}
.p-datatable-column-header-content:hover .p-datatable-sort-icon {
visibility: visible !important;
}
.p-datatable .p-datatable-tbody > tr > td {
min-width: 1em;
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.p-datatable .p-datatable-thead > tr > th {
min-width: 1em;
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.p-datatable-header-cell.filter-active svg {
color: #10b981;
}
.p-datatable-header-cell.filter-active {
color: #047857;
}
</style>
9 changes: 2 additions & 7 deletions webapp/src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -118,20 +118,15 @@ import "vue-select/dist/vue-select.css";

// import "primevue";
import PrimeVue from "primevue/config";
import Aura from "@primevue/themes/aura";
import DatalabPreset from "./primevue-theme-preset.js";

const app = createApp(App);

app
.use(store)
.use(router)
.use(PrimeVue, {
theme: {
preset: Aura,
options: {
darkModeSelector: "none",
},
},
theme: DatalabPreset,
})
.component("font-awesome-icon", FontAwesomeIcon)
.component("editor", Editor)
Expand Down
57 changes: 57 additions & 0 deletions webapp/src/primevue-theme-preset.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import Aura from "@primevue/themes/aura";
import { definePreset } from "@primevue/themes";

const DatalabPreset = definePreset(Aura, {
semantic: {
transitionDuration: "0.05s",
},
components: {
datatable: {
extend: {
filterActiveBackground: "{primary.50}",
filterActiveColor: "{primary.700}",
maxWidth: "1rem",
whitespace: "nowrap",
overflow: "hidden",
textOverflow: "ellipsis",
},
bodyCellPadding: "0.4rem",
sortIconColor: "transparent",
},
checkbox: {
checkedBackground: "#fff",
checkedBorderColor: "#ccc",
iconCheckedColor: "#ccc",
checkedHoverBackground: "#ccc",
checkedHoverBorderColor: "#fff",
iconCheckedHoverColor: "#fff",
},
button: {
extend: {
activeSVG: "{primary.700}",
},
},
},
css: ({ dt }) => `
.p-datatable-thead tr th.filter-active {
background: ${dt("datatable.filterActiveBackground")};
color: ${dt("datatable.filterActiveColor")}
}
th.filter-active .p-button-text.p-button-secondary {
color: ${dt("datatable.activeSVG")};
}
.p-datatable-tbody tr td {
max-width: ${dt("datatable.maxWidth")};
white-space: ${dt("datatable.whitespace")};
overflow: ${dt("datatable.overflow")};
text-overflow: ${dt("datatable.textOverflow")};
s }
`,
});

export default {
preset: DatalabPreset,
options: {
darkModeSelector: "none",
},
};

0 comments on commit 5277fb2

Please sign in to comment.