hongluan-business-ui
Version:
Hongluan Business Component Library for Vue 3
1 lines • 5.06 kB
Source Map (JSON)
{"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;;;;;;;;;;;;;;;"}