{"version":3,"file":"col-config.mjs","sources":["../../../../../../packages/components/table-toolbar/src/col-config.vue"],"sourcesContent":["<template>\n  <hl-popover\n    placement=\"bottom\"\n    trigger=\"click\"\n  >\n    <div>\n      <hl-checkbox-group v-model=\"selectedCols\" :min=\"1\" dir=\"vertical\" gap=\"var(--md)\">\n        <hl-checkbox\n          v-for=\"col in newCols\"\n          :key=\"col[getLabelField()]\"\n          :label=\"col[getLabelField()]\"\n          @change=\"val => colChanged(col[getLabelField()], val)\"\n        >\n          {{ col[getLabelField()] }}\n        </hl-checkbox>\n      </hl-checkbox-group>\n    </div>\n    <template #reference>\n      <slot name=\"reference\">\n      </slot>\n    </template>\n  </hl-popover>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, onMounted, ref } from 'vue'\nimport { HlPopover, HlCheckboxGroup, HlCheckbox } from 'hongluan-ui'\n\nimport type { PropType } from 'vue'\nimport type { TableCol, TableColConfig } from './toolbar'\n\nconst TABLE_COLS_KEY = '$$c_table_cols$$'\nexport default defineComponent({\n  name: 'ColConfig',\n  components: { HlPopover, HlCheckboxGroup, HlCheckbox },\n  props: {\n    cols: {\n      type: Array as PropType<TableCol[]>,\n      default: () => [],\n    },\n    storeKey: String,\n    version: {\n      type: String,\n      default: 'v1',\n    },\n    colLabelField: {\n      type: String,\n      default: 'label',\n    },\n  },\n  emits: ['col-change'],\n  setup(props, { emit }) {\n    const newCols = ref(props.cols)\n    const selectedCols = ref<string[]>([])\n\n    const getLabelField = () => {\n      return props.colLabelField || 'label'\n    }\n    const assignDefault = () => {\n      selectedCols.value = props.cols.map(c => c[getLabelField()])\n    }\n    const colChanged = (label: string, val: boolean) => {\n      const storeKey = props.storeKey || document.location.pathname + document.location.hash\n      const col = newCols.value.find(c => c[getLabelField()] === label)\n      if (col) {\n        col.$show$ = val\n      }\n\n      let colsConfigs: TableColConfig = JSON.parse(localStorage.getItem(TABLE_COLS_KEY))\n      if (!colsConfigs) {\n        colsConfigs = {}\n      }\n      colsConfigs[storeKey] = { v: props.version, cols: selectedCols.value }\n      localStorage.setItem(TABLE_COLS_KEY, JSON.stringify(colsConfigs))\n\n      emit('col-change')\n    }\n\n    onMounted(() => {\n      const storeKey = props.storeKey || document.location.pathname + document.location.hash\n      const colsConfig = JSON.parse(localStorage.getItem(TABLE_COLS_KEY))\n      const isAssignDefault = !colsConfig || (colsConfig && !colsConfig[storeKey])\n      if (isAssignDefault) {\n        assignDefault()\n      } else {\n        const config: TableColConfig = colsConfig[storeKey]\n        if (config.v !== props.version) {\n          assignDefault()\n        } else {\n          newCols.value.forEach(col => {\n            col.$show$ = config.cols.indexOf(col[getLabelField()]) > -1\n          })\n          selectedCols.value = config.cols\n        }\n      }\n    })\n    return {\n      newCols,\n      selectedCols,\n      getLabelField,\n      colChanged,\n    }\n  },\n})\n</script>\n"],"names":["_createBlock","_withCtx","_renderSlot","_createElementVNode","_createVNode","_createElementBlock","_Fragment"],"mappings":";;;;AA8BA,MAAM,iBAAiB;AACvB,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY,EAAE,WAAW,iBAAiB;AAAA,EAC1C,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,MAAM;AAAA;AAAA,IAEjB,UAAU;AAAA,IACV,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA,EAGb,OAAO,CAAC;AAAA,EACR,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,UAAU,IAAI,MAAM;AAC1B,UAAM,eAAe,IAAc;AAEnC,UAAM,gBAAgB,MAAM;AAC1B,aAAO,MAAM,iBAAiB;AAAA;AAEhC,UAAM,gBAAgB,MAAM;AAC1B,mBAAa,QAAQ,MAAM,KAAK,IAAI,OAAK,EAAE;AAAA;AAE7C,UAAM,aAAa,CAAC,OAAe,QAAiB;AAClD,YAAM,WAAW,MAAM,YAAY,SAAS,SAAS,WAAW,SAAS,SAAS;AAClF,YAAM,MAAM,QAAQ,MAAM,KAAK,OAAK,EAAE,qBAAqB;AAC3D,UAAI,KAAK;AACP,YAAI,SAAS;AAAA;AAGf,UAAI,cAA8B,KAAK,MAAM,aAAa,QAAQ;AAClE,UAAI,CAAC,aAAa;AAChB,sBAAc;AAAA;AAEhB,kBAAY,YAAY,EAAE,GAAG,MAAM,SAAS,MAAM,aAAa;AAC/D,mBAAa,QAAQ,gBAAgB,KAAK,UAAU;AAEpD,WAAK;AAAA;AAGP,cAAU,MAAM;AACd,YAAM,WAAW,MAAM,YAAY,SAAS,SAAS,WAAW,SAAS,SAAS;AAClF,YAAM,aAAa,KAAK,MAAM,aAAa,QAAQ;AACnD,YAAM,kBAAkB,CAAC,cAAe,cAAc,CAAC,WAAW;AAClE,UAAI,iBAAiB;AACnB;AAAA,aACK;AACL,cAAM,SAAyB,WAAW;AAC1C,YAAI,OAAO,MAAM,MAAM,SAAS;AAC9B;AAAA,eACK;AACL,kBAAQ,MAAM,QAAQ,SAAO;AAC3B,gBAAI,SAAS,OAAO,KAAK,QAAQ,IAAI,oBAAoB;AAAA;AAE3D,uBAAa,QAAQ,OAAO;AAAA;AAAA;AAAA;AAIlC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;sBAlGJA,YAoBa;AAAA,IAnBX,WAAU;AAAA,IACV,SAAQ;AAAA;IAcG,WAASC,QAClB,MACO;AAAA,MADPC,WACO;AAAA;AAAA,qBAdT,MAWM;AAAA,MAXNC,mBAWM;AAAA,QAVJC,YASoB;AAAA,sBATQ;AAAA,2FAAY;AAAA,UAAG,KAAK;AAAA,UAAG,KAAI;AAAA,UAAW,KAAI;AAAA;2BAElE,MAAsB;AAAA,8BADxBC,mBAOcC,2BANE,cAAO,CAAd,QAAG;kCADZN,YAOc;AAAA,gBALX,KAAK,IAAI;AAAA,gBACT,OAAO,IAAI;AAAA,gBACX,UAAQ,SAAO,gBAAW,IAAI,uBAAkB;AAAA;iCAEjD,MAA0B;AAAA,kDAAvB,IAAI,wBAAa;AAAA;AAAA;;;;;;;;;;;;;;;"}