@mee4dy/crud
Version:
Create a backend and frontend in 5 minutes! With our powerful full stack crud system, customize it to suit you.
1 lines • 3.67 kB
Source Map (JSON)
{"version":3,"file":"Index.vue.cjs","sources":["../../../../../ui/vue/components/Table/Index.vue"],"sourcesContent":["<template>\n <div class=\"crud-ui-table\">\n <b-overlay :show=\"$attrs.busy\" rounded opacity=\"0.6\" spinner spinner-variant=\"secondary\">\n <b-table\n responsive\n fixed\n hover\n bordered\n :show-empty=\"!$attrs.busy\"\n :sticky-header=\"stickyHeader\"\n label-sort-asc=\"\"\n label-sort-desc=\"\"\n label-sort-clear=\"\"\n :fields=\"fieldsComputed\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n >\n <template #head()=\"data\">\n <ui-table-th :data=\"data\" />\n </template>\n <template #cell()=\"data\">\n <ui-table-td :data=\"data\" @change=\"onChange(data, $event)\" />\n </template>\n\n <template #empty=\"scope\">\n <div>{{ emptyText }}</div>\n </template>\n <template v-for=\"(_, slot) of $scopedSlots\" v-slot:[slot]=\"scope\">\n <ui-table-td v-if=\"slot.startsWith('cell')\" :data=\"scope\" @change=\"onChange(scope, $event)\">\n <slot :name=\"slot\" v-bind=\"scope\" />\n </ui-table-td>\n <slot v-else :name=\"slot\" v-bind=\"scope\" />\n </template>\n </b-table>\n </b-overlay>\n </div>\n</template>\n\n<script>\nimport { BOverlay, BTable } from 'bootstrap-vue';\nimport UiTableTh from './Th/Index.vue';\nimport UiTableTd from './Td/Index.vue';\n\nexport default {\n components: {\n 'ui-table-th': UiTableTh,\n 'ui-table-td': UiTableTd,\n 'b-overlay': BOverlay,\n 'b-table': BTable,\n },\n data() {\n return {\n stickyHeader: 'calc(100vh - 55px - 20px)',\n emptyText: 'Нет данных',\n };\n },\n computed: {\n fieldsComputed() {\n const fields = this.$attrs?.fields || [];\n\n return fields\n .filter((field) => !field.hidden)\n .map((field) => {\n if (field.width) {\n field.thStyle = {\n width: field.width,\n };\n }\n\n return field;\n });\n },\n },\n methods: {\n onChange(data, newValue) {\n this.$emit('update:value', data, newValue);\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.crud-ui-table::v-deep {\n flex: 1;\n\n .b-overlay-wrap {\n min-height: 100%;\n }\n\n .table {\n width: auto;\n min-width: 100%;\n height: 1px;\n border-radius: $ui-block-border-radius;\n overflow: hidden;\n\n .b-table-empty-row {\n td {\n text-align: center;\n padding: 30px;\n }\n }\n\n tr {\n th {\n padding: 0;\n border-top: none;\n border-left: none;\n border-bottom-width: 1px;\n\n &[aria-sort] {\n background-size: 0.45em 0.8em !important;\n }\n }\n\n td {\n box-shadow: none;\n background-color: $white;\n padding: 0;\n border-top: none;\n border-left: none;\n }\n\n &:hover {\n td {\n background-color: $grey-light;\n }\n }\n }\n }\n}\n</style>\n"],"names":["_sfc_main","UiTableTh","UiTableTd","BOverlay","BTable","_a","field","data","newValue"],"mappings":"8MA2CAA,EAAA,CACA,WAAA,CACA,cAAAC,EACA,cAAAC,EACA,YAAAC,EAAA,SACA,UAAAC,EAAA,MACA,EACA,MAAA,CACA,MAAA,CACA,aAAA,4BACA,UAAA,YACA,CACA,EACA,SAAA,CACA,gBAAA,OAGA,SAFAC,EAAA,KAAA,SAAA,YAAAA,EAAA,SAAA,CAAA,GAGA,OAAAC,GAAA,CAAAA,EAAA,MAAA,EACA,IAAAA,IACAA,EAAA,QACAA,EAAA,QAAA,CACA,MAAAA,EAAA,KACA,GAGAA,EACA,CACA,CACA,EACA,QAAA,CACA,SAAAC,EAAAC,EAAA,CACA,KAAA,MAAA,eAAAD,EAAAC,CAAA,CACA,CACA,CACA"}