{"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"}