@hbdlzy/ui-core 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/components.manifest.json +40 -1
  2. package/dist/components/BaseCard/BaseCard.types.d.ts +36 -0
  3. package/dist/components/BaseCard/BaseCard.vue.d.ts +122 -0
  4. package/dist/components/BaseCard/index.d.ts +3 -0
  5. package/dist/components/BaseDialog/BaseDialog.types.d.ts +25 -0
  6. package/dist/components/BaseDialog/BaseDialog.vue.d.ts +100 -0
  7. package/dist/components/BaseDialog/index.d.ts +3 -0
  8. package/dist/components/BaseEChart/BaseEChart.types.d.ts +26 -0
  9. package/dist/components/BaseEChart/BaseEChart.vue.d.ts +66 -0
  10. package/dist/components/BaseEChart/index.d.ts +3 -0
  11. package/dist/components/BaseExportButton/BaseExportButton.types.d.ts +21 -0
  12. package/dist/components/BaseExportButton/BaseExportButton.utils.d.ts +4 -0
  13. package/dist/components/BaseExportButton/BaseExportButton.vue.d.ts +128 -0
  14. package/dist/components/BaseExportButton/index.d.ts +5 -0
  15. package/dist/components/BaseSearchForm/BaseSearchForm.types.d.ts +42 -0
  16. package/dist/components/BaseSearchForm/BaseSearchForm.utils.d.ts +5 -0
  17. package/dist/components/BaseSearchForm/BaseSearchForm.vue.d.ts +88 -0
  18. package/dist/components/BaseSearchForm/index.d.ts +4 -0
  19. package/dist/components/BaseTable/BaseTable.types.d.ts +163 -0
  20. package/dist/components/BaseTable/BaseTable.vue.d.ts +157 -0
  21. package/dist/components/BaseTable/index.d.ts +3 -0
  22. package/dist/components/OutlinedCascader/OutlinedCascader.types.d.ts +25 -0
  23. package/dist/components/OutlinedCascader/OutlinedCascader.vue.d.ts +85 -0
  24. package/dist/components/OutlinedCascader/index.d.ts +3 -0
  25. package/dist/components/OutlinedDatePicker/OutlinedDatePicker.types.d.ts +27 -0
  26. package/dist/components/OutlinedDatePicker/OutlinedDatePicker.vue.d.ts +88 -0
  27. package/dist/components/OutlinedDatePicker/index.d.ts +3 -0
  28. package/dist/components/OutlinedDateTimePicker/OutlinedDateTimePicker.types.d.ts +26 -0
  29. package/dist/components/OutlinedDateTimePicker/OutlinedDateTimePicker.vue.d.ts +97 -0
  30. package/dist/components/OutlinedDateTimePicker/index.d.ts +3 -0
  31. package/dist/components/OutlinedInput/OutlinedInput.types.d.ts +29 -0
  32. package/dist/components/OutlinedInput/OutlinedInput.vue.d.ts +97 -0
  33. package/dist/components/OutlinedInput/index.d.ts +3 -0
  34. package/dist/components/OutlinedSelect/OutlinedSelect.types.d.ts +38 -0
  35. package/dist/components/OutlinedSelect/OutlinedSelect.vue.d.ts +116 -0
  36. package/dist/components/OutlinedSelect/index.d.ts +3 -0
  37. package/dist/components/OutlinedTimePicker/OutlinedTimePicker.types.d.ts +28 -0
  38. package/dist/components/OutlinedTimePicker/OutlinedTimePicker.vue.d.ts +94 -0
  39. package/dist/components/OutlinedTimePicker/index.d.ts +3 -0
  40. package/dist/components/OutlinedTreeSelect/OutlinedTreeSelect.types.d.ts +46 -0
  41. package/dist/components/OutlinedTreeSelect/OutlinedTreeSelect.vue.d.ts +137 -0
  42. package/dist/components/OutlinedTreeSelect/index.d.ts +3 -0
  43. package/dist/echarts/index.d.ts +9 -0
  44. package/dist/excel/exportExcel.d.ts +18 -0
  45. package/dist/index.cjs +1 -1
  46. package/dist/index.d.ts +30 -0
  47. package/dist/index.js +832 -169
  48. package/dist/style.css +1 -1
  49. package/package.json +7 -4
  50. package/src/components/BaseDialog/BaseDialog.types.ts +28 -0
  51. package/src/components/BaseDialog/BaseDialog.vue +158 -0
  52. package/src/components/BaseDialog/README.md +69 -0
  53. package/src/components/BaseDialog/index.ts +10 -0
  54. package/src/components/BaseExportButton/BaseExportButton.vue +3 -1
  55. package/src/components/BaseSearchForm/BaseSearchForm.types.ts +46 -0
  56. package/src/components/BaseSearchForm/BaseSearchForm.utils.ts +41 -0
  57. package/src/components/BaseSearchForm/BaseSearchForm.vue +267 -0
  58. package/src/components/BaseSearchForm/README.md +66 -0
  59. package/src/components/BaseSearchForm/index.ts +20 -0
  60. package/src/components/BaseTable/BaseTable.types.ts +13 -1
  61. package/src/components/BaseTable/BaseTable.vue +412 -13
  62. package/src/components/BaseTable/README.md +106 -120
  63. package/src/echarts/index.ts +13 -8
  64. package/src/index.ts +4 -0
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .base-card[data-v-6bfddf1c]{display:flex;flex-direction:column;min-width:0;min-height:0;padding:var(--base-card-padding);border:1px solid var(--base-card-border-color);background:var(--base-card-background-color);box-shadow:0 0 2px 0 var(--base-card-shadow-color);border-radius:var(--base-card-radius)}.base-card__header[data-v-6bfddf1c]{display:flex;align-items:center;justify-content:space-between;gap:var(--base-card-header-gap);margin-bottom:var(--base-card-header-margin-bottom);min-height:24px;flex-wrap:wrap}.base-card__header-left[data-v-6bfddf1c],.base-card__header-right[data-v-6bfddf1c]{display:flex;align-items:center;min-width:0;flex-wrap:wrap}.base-card__header-left[data-v-6bfddf1c]{flex:1 1 auto;gap:var(--base-card-left-gap)}.base-card__header-right[data-v-6bfddf1c]{flex:0 1 auto;justify-content:flex-end;gap:var(--base-card-right-gap)}.base-card__title-wrap[data-v-6bfddf1c]{display:flex;align-items:center;min-width:0}.base-card__title-marker[data-v-6bfddf1c]{width:var(--base-card-marker-width);height:var(--base-card-marker-height);background:var(--base-card-marker-color);border-radius:var(--base-card-marker-radius);margin-right:var(--base-card-marker-gap);flex:0 0 auto}.base-card__title[data-v-6bfddf1c]{margin:0;min-width:0;color:var(--base-card-title-color);font-size:var(--base-card-title-size);font-weight:var(--base-card-title-weight);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.base-card__meta[data-v-6bfddf1c]{color:var(--base-card-meta-color);font-size:var(--base-card-meta-size);line-height:1.4}.base-card__export[data-v-6bfddf1c]{border:none;background:transparent;padding:0;color:var(--base-card-export-color);cursor:pointer;font-size:var(--base-card-meta-size);line-height:1.4}.base-card__export[data-v-6bfddf1c]:disabled{opacity:.5;cursor:not-allowed}.base-card__body[data-v-6bfddf1c]{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}.base-card__tip[data-v-6bfddf1c]{flex:0 0 auto}.base-card__content[data-v-6bfddf1c]{flex:1 1 auto;min-height:0}.base-table[data-v-429ba785]{display:flex;flex-direction:column;height:100%;min-height:0}.base-table__toolbar[data-v-429ba785]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;min-height:32px;flex-wrap:wrap}.base-table__toolbar-left[data-v-429ba785]{flex:1 1 auto;min-width:0}.base-table__toolbar-right[data-v-429ba785]{flex:0 1 auto}.base-table__actions[data-v-429ba785]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.base-table__link[data-v-429ba785]{padding:0;border:none;background:transparent;color:var(--el-color-primary);cursor:pointer}.base-table__text[data-v-429ba785]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.base-table__tags[data-v-429ba785]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.base-table__image[data-v-429ba785]{border-radius:4px;overflow:hidden}.base-echart[data-v-51bc4772],.base-echart__inner[data-v-51bc4772]{width:100%;height:100%}.outlined-input[data-v-2bf89ccd]{position:relative}.outlined-input__label[data-v-2bf89ccd]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-input__label--floating[data-v-2bf89ccd]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-input__label--placeholder[data-v-2bf89ccd]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-input__label--filled[data-v-2bf89ccd]{color:var(--el-text-color-regular)}.outlined-input__suffix-text[data-v-2bf89ccd]{white-space:nowrap}[data-v-2bf89ccd] .outlined-input--bordered .el-input__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-2bf89ccd] .outlined-input--bordered .el-input__wrapper.is-focus{border-bottom-color:var(--el-color-primary)}[data-v-2bf89ccd] .outlined-input--bordered .el-textarea__inner{border-width:0 0 1px;border-radius:0;box-shadow:none}[data-v-2bf89ccd] .outlined-input--bordered .el-textarea__inner:focus{border-bottom-color:var(--el-color-primary)}[data-v-2bf89ccd] .outlined-input--textarea-default .el-textarea__inner{min-height:100px!important;max-height:180px}.outlined-select[data-v-7bd2b5f2]{position:relative}.outlined-select__label[data-v-7bd2b5f2]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-select__label--floating[data-v-7bd2b5f2]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-select__label--placeholder[data-v-7bd2b5f2]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-select__label--filled[data-v-7bd2b5f2]{color:var(--el-text-color-regular)}[data-v-7bd2b5f2] .outlined-select__control.el-select{width:100%}[data-v-7bd2b5f2] .outlined-select__control .el-select__wrapper{min-height:inherit;height:inherit}[data-v-7bd2b5f2] .outlined-select__control .el-select__tags{padding-top:4px}[data-v-7bd2b5f2] .outlined-select__control .el-select__selection{min-height:inherit}[data-v-7bd2b5f2] .outlined-select--bordered .el-select__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-7bd2b5f2] .outlined-select--bordered .el-select__wrapper.is-focused{border-bottom-color:var(--el-color-primary)}.outlined-date-picker[data-v-c95a293c]{position:relative}.outlined-date-picker__label[data-v-c95a293c]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-date-picker__label--floating[data-v-c95a293c]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-date-picker__label--placeholder[data-v-c95a293c]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-date-picker__label--filled[data-v-c95a293c]{color:var(--el-text-color-regular)}[data-v-c95a293c] .outlined-date-picker__control.el-date-editor{width:100%}[data-v-c95a293c] .outlined-date-picker__control .el-input__wrapper{position:relative;min-height:inherit;height:inherit}[data-v-c95a293c] .outlined-date-picker__control .el-input__prefix{position:absolute;right:0}[data-v-c95a293c] .outlined-date-picker__control .el-input__suffix{position:absolute;right:30px}[data-v-c95a293c] .outlined-date-picker--bordered .el-input__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-c95a293c] .outlined-date-picker--bordered .el-input__wrapper.is-focus{border-bottom-color:var(--el-color-primary)}.outlined-date-time-picker[data-v-f2fefd22]{display:flex;align-items:center;gap:8px}.outlined-date-time-picker__field[data-v-f2fefd22]{position:relative;flex:1}.outlined-date-time-picker__separator[data-v-f2fefd22]{flex:0 0 auto;color:var(--el-text-color-regular)}.outlined-date-time-picker__label[data-v-f2fefd22]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-date-time-picker__label--floating[data-v-f2fefd22]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-date-time-picker__label--placeholder[data-v-f2fefd22]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-date-time-picker__label--filled[data-v-f2fefd22]{color:var(--el-text-color-regular)}[data-v-f2fefd22] .outlined-date-time-picker__control.el-date-editor{width:100%}[data-v-f2fefd22] .outlined-date-time-picker__control .el-input__wrapper{position:relative;min-height:inherit;height:inherit}[data-v-f2fefd22] .outlined-date-time-picker__control .el-input__prefix{position:absolute;right:0}[data-v-f2fefd22] .outlined-date-time-picker__control .el-input__suffix{position:absolute;right:30px}[data-v-f2fefd22] .outlined-date-time-picker__field--bordered .el-input__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-f2fefd22] .outlined-date-time-picker__field--bordered .el-input__wrapper.is-focus{border-bottom-color:var(--el-color-primary)}.outlined-time-picker[data-v-6a467b88]{position:relative}.outlined-time-picker__label[data-v-6a467b88]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-time-picker__label--floating[data-v-6a467b88]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-time-picker__label--placeholder[data-v-6a467b88]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-time-picker__label--filled[data-v-6a467b88]{color:var(--el-text-color-regular)}[data-v-6a467b88] .outlined-time-picker__control.el-date-editor{width:100%}[data-v-6a467b88] .outlined-time-picker__control .el-input__wrapper{position:relative;min-height:inherit;height:inherit}[data-v-6a467b88] .outlined-time-picker__control .el-input__prefix{position:absolute;right:0}[data-v-6a467b88] .outlined-time-picker__control .el-input__suffix{position:absolute;right:30px}[data-v-6a467b88] .outlined-time-picker--bordered .el-input__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-6a467b88] .outlined-time-picker--bordered .el-input__wrapper.is-focus{border-bottom-color:var(--el-color-primary)}.outlined-cascader[data-v-2c93c0e4]{position:relative}.outlined-cascader__label[data-v-2c93c0e4]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-cascader__label--floating[data-v-2c93c0e4]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-cascader__label--placeholder[data-v-2c93c0e4]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-cascader__label--filled[data-v-2c93c0e4]{color:var(--el-text-color-regular)}[data-v-2c93c0e4] .outlined-cascader__control .el-input{height:100%}[data-v-2c93c0e4] .outlined-cascader--bordered .el-input__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-2c93c0e4] .outlined-cascader--bordered .el-input__wrapper.is-focus{border-bottom-color:var(--el-color-primary)}.outlined-tree-select[data-v-8403e6ea]{position:relative}.outlined-tree-select__label[data-v-8403e6ea]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-tree-select__label--floating[data-v-8403e6ea]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-tree-select__label--placeholder[data-v-8403e6ea]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-tree-select__label--filled[data-v-8403e6ea]{color:var(--el-text-color-regular)}[data-v-8403e6ea] .outlined-tree-select__control.el-select{width:100%}[data-v-8403e6ea] .outlined-tree-select__control .el-select__wrapper{min-height:inherit;height:inherit}[data-v-8403e6ea] .outlined-tree-select__control .el-select__selection{min-height:inherit}[data-v-8403e6ea] .outlined-tree-select__control .el-select__tags{padding-top:4px}[data-v-8403e6ea] .outlined-tree-select--bordered .el-select__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-8403e6ea] .outlined-tree-select--bordered .el-select__wrapper.is-focused{border-bottom-color:var(--el-color-primary)}
1
+ .base-card[data-v-6bfddf1c]{display:flex;flex-direction:column;min-width:0;min-height:0;padding:var(--base-card-padding);border:1px solid var(--base-card-border-color);background:var(--base-card-background-color);box-shadow:0 0 2px 0 var(--base-card-shadow-color);border-radius:var(--base-card-radius)}.base-card__header[data-v-6bfddf1c]{display:flex;align-items:center;justify-content:space-between;gap:var(--base-card-header-gap);margin-bottom:var(--base-card-header-margin-bottom);min-height:24px;flex-wrap:wrap}.base-card__header-left[data-v-6bfddf1c],.base-card__header-right[data-v-6bfddf1c]{display:flex;align-items:center;min-width:0;flex-wrap:wrap}.base-card__header-left[data-v-6bfddf1c]{flex:1 1 auto;gap:var(--base-card-left-gap)}.base-card__header-right[data-v-6bfddf1c]{flex:0 1 auto;justify-content:flex-end;gap:var(--base-card-right-gap)}.base-card__title-wrap[data-v-6bfddf1c]{display:flex;align-items:center;min-width:0}.base-card__title-marker[data-v-6bfddf1c]{width:var(--base-card-marker-width);height:var(--base-card-marker-height);background:var(--base-card-marker-color);border-radius:var(--base-card-marker-radius);margin-right:var(--base-card-marker-gap);flex:0 0 auto}.base-card__title[data-v-6bfddf1c]{margin:0;min-width:0;color:var(--base-card-title-color);font-size:var(--base-card-title-size);font-weight:var(--base-card-title-weight);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.base-card__meta[data-v-6bfddf1c]{color:var(--base-card-meta-color);font-size:var(--base-card-meta-size);line-height:1.4}.base-card__export[data-v-6bfddf1c]{border:none;background:transparent;padding:0;color:var(--base-card-export-color);cursor:pointer;font-size:var(--base-card-meta-size);line-height:1.4}.base-card__export[data-v-6bfddf1c]:disabled{opacity:.5;cursor:not-allowed}.base-card__body[data-v-6bfddf1c]{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}.base-card__tip[data-v-6bfddf1c]{flex:0 0 auto}.base-card__content[data-v-6bfddf1c]{flex:1 1 auto;min-height:0}.base-search-form[data-v-52b1fbc7]{width:100%}.base-search-form__grid[data-v-52b1fbc7]{display:grid;align-items:start}.base-search-form__item[data-v-52b1fbc7]{min-width:0;margin-bottom:0}.base-search-form__control[data-v-52b1fbc7]{width:var(--base-search-form-field-width, 100%)}.base-search-form__actions[data-v-52b1fbc7]{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}@media (max-width: 960px){.base-search-form__grid[data-v-52b1fbc7]{grid-template-columns:repeat(2,minmax(0,1fr))!important}}@media (max-width: 640px){.base-search-form__grid[data-v-52b1fbc7]{grid-template-columns:minmax(0,1fr)!important}.base-search-form__actions[data-v-52b1fbc7]{justify-content:flex-start;flex-wrap:wrap}}.base-dialog__body[data-v-37bcb779]{min-width:0}.base-dialog__footer[data-v-37bcb779]{display:flex;align-items:center;justify-content:flex-end;gap:8px}.base-table[data-v-7ae8d382]{display:flex;flex-direction:column;height:100%;min-height:0}.base-table__toolbar[data-v-7ae8d382]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;min-height:32px;flex-wrap:wrap}.base-table__toolbar-left[data-v-7ae8d382]{flex:1 1 auto;min-width:0}.base-table__toolbar-right[data-v-7ae8d382]{flex:0 1 auto}.base-table__actions[data-v-7ae8d382]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.base-table__header[data-v-7ae8d382]{display:flex;align-items:center;gap:6px;width:100%;min-width:0}.base-table__header-label[data-v-7ae8d382]{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.base-table__header-actions[data-v-7ae8d382]{display:flex;align-items:center;margin-left:auto;flex-shrink:0}.base-table__header-icon[data-v-7ae8d382]{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:999px;background:transparent;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease,background-color .2s ease}.base-table__header-icon[data-v-7ae8d382]:hover,.base-table__header-icon.is-active[data-v-7ae8d382]{color:var(--el-color-primary);background:rgba(64,158,255,.12)}.base-table__header-icon-mark[data-v-7ae8d382]{position:relative;display:inline-block;width:14px;height:14px;box-sizing:border-box;border:2px solid currentColor;border-radius:999px}.base-table__header-icon-mark[data-v-7ae8d382]:after{content:"";position:absolute;right:-6px;bottom:-4px;width:7px;height:2px;border-radius:999px;background:currentColor;transform:rotate(45deg);transform-origin:center}.base-table__header-dropdown[data-v-7ae8d382]{display:inline-flex;align-items:center}.base-table__header-search-panel[data-v-7ae8d382]{display:flex;flex-direction:column;gap:12px;padding:8px}[data-v-7ae8d382] .base-table__header-search-menu{padding:0}[data-v-7ae8d382] .base-table__header-search-dropdown{padding:0;border-radius:12px}.base-table__header-search-footer[data-v-7ae8d382]{display:flex;align-items:center;justify-content:space-between}.base-table__link[data-v-7ae8d382]{padding:0;border:none;background:transparent;color:var(--el-color-primary);cursor:pointer}.base-table__text[data-v-7ae8d382]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.base-table__tags[data-v-7ae8d382]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.base-table__image[data-v-7ae8d382]{border-radius:4px;overflow:hidden}.base-echart[data-v-51bc4772],.base-echart__inner[data-v-51bc4772]{width:100%;height:100%}.outlined-input[data-v-2bf89ccd]{position:relative}.outlined-input__label[data-v-2bf89ccd]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-input__label--floating[data-v-2bf89ccd]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-input__label--placeholder[data-v-2bf89ccd]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-input__label--filled[data-v-2bf89ccd]{color:var(--el-text-color-regular)}.outlined-input__suffix-text[data-v-2bf89ccd]{white-space:nowrap}[data-v-2bf89ccd] .outlined-input--bordered .el-input__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-2bf89ccd] .outlined-input--bordered .el-input__wrapper.is-focus{border-bottom-color:var(--el-color-primary)}[data-v-2bf89ccd] .outlined-input--bordered .el-textarea__inner{border-width:0 0 1px;border-radius:0;box-shadow:none}[data-v-2bf89ccd] .outlined-input--bordered .el-textarea__inner:focus{border-bottom-color:var(--el-color-primary)}[data-v-2bf89ccd] .outlined-input--textarea-default .el-textarea__inner{min-height:100px!important;max-height:180px}.outlined-select[data-v-7bd2b5f2]{position:relative}.outlined-select__label[data-v-7bd2b5f2]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-select__label--floating[data-v-7bd2b5f2]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-select__label--placeholder[data-v-7bd2b5f2]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-select__label--filled[data-v-7bd2b5f2]{color:var(--el-text-color-regular)}[data-v-7bd2b5f2] .outlined-select__control.el-select{width:100%}[data-v-7bd2b5f2] .outlined-select__control .el-select__wrapper{min-height:inherit;height:inherit}[data-v-7bd2b5f2] .outlined-select__control .el-select__tags{padding-top:4px}[data-v-7bd2b5f2] .outlined-select__control .el-select__selection{min-height:inherit}[data-v-7bd2b5f2] .outlined-select--bordered .el-select__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-7bd2b5f2] .outlined-select--bordered .el-select__wrapper.is-focused{border-bottom-color:var(--el-color-primary)}.outlined-date-picker[data-v-c95a293c]{position:relative}.outlined-date-picker__label[data-v-c95a293c]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-date-picker__label--floating[data-v-c95a293c]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-date-picker__label--placeholder[data-v-c95a293c]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-date-picker__label--filled[data-v-c95a293c]{color:var(--el-text-color-regular)}[data-v-c95a293c] .outlined-date-picker__control.el-date-editor{width:100%}[data-v-c95a293c] .outlined-date-picker__control .el-input__wrapper{position:relative;min-height:inherit;height:inherit}[data-v-c95a293c] .outlined-date-picker__control .el-input__prefix{position:absolute;right:0}[data-v-c95a293c] .outlined-date-picker__control .el-input__suffix{position:absolute;right:30px}[data-v-c95a293c] .outlined-date-picker--bordered .el-input__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-c95a293c] .outlined-date-picker--bordered .el-input__wrapper.is-focus{border-bottom-color:var(--el-color-primary)}.outlined-date-time-picker[data-v-f2fefd22]{display:flex;align-items:center;gap:8px}.outlined-date-time-picker__field[data-v-f2fefd22]{position:relative;flex:1}.outlined-date-time-picker__separator[data-v-f2fefd22]{flex:0 0 auto;color:var(--el-text-color-regular)}.outlined-date-time-picker__label[data-v-f2fefd22]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-date-time-picker__label--floating[data-v-f2fefd22]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-date-time-picker__label--placeholder[data-v-f2fefd22]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-date-time-picker__label--filled[data-v-f2fefd22]{color:var(--el-text-color-regular)}[data-v-f2fefd22] .outlined-date-time-picker__control.el-date-editor{width:100%}[data-v-f2fefd22] .outlined-date-time-picker__control .el-input__wrapper{position:relative;min-height:inherit;height:inherit}[data-v-f2fefd22] .outlined-date-time-picker__control .el-input__prefix{position:absolute;right:0}[data-v-f2fefd22] .outlined-date-time-picker__control .el-input__suffix{position:absolute;right:30px}[data-v-f2fefd22] .outlined-date-time-picker__field--bordered .el-input__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-f2fefd22] .outlined-date-time-picker__field--bordered .el-input__wrapper.is-focus{border-bottom-color:var(--el-color-primary)}.outlined-time-picker[data-v-6a467b88]{position:relative}.outlined-time-picker__label[data-v-6a467b88]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-time-picker__label--floating[data-v-6a467b88]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-time-picker__label--placeholder[data-v-6a467b88]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-time-picker__label--filled[data-v-6a467b88]{color:var(--el-text-color-regular)}[data-v-6a467b88] .outlined-time-picker__control.el-date-editor{width:100%}[data-v-6a467b88] .outlined-time-picker__control .el-input__wrapper{position:relative;min-height:inherit;height:inherit}[data-v-6a467b88] .outlined-time-picker__control .el-input__prefix{position:absolute;right:0}[data-v-6a467b88] .outlined-time-picker__control .el-input__suffix{position:absolute;right:30px}[data-v-6a467b88] .outlined-time-picker--bordered .el-input__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-6a467b88] .outlined-time-picker--bordered .el-input__wrapper.is-focus{border-bottom-color:var(--el-color-primary)}.outlined-cascader[data-v-2c93c0e4]{position:relative}.outlined-cascader__label[data-v-2c93c0e4]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-cascader__label--floating[data-v-2c93c0e4]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-cascader__label--placeholder[data-v-2c93c0e4]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-cascader__label--filled[data-v-2c93c0e4]{color:var(--el-text-color-regular)}[data-v-2c93c0e4] .outlined-cascader__control .el-input{height:100%}[data-v-2c93c0e4] .outlined-cascader--bordered .el-input__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-2c93c0e4] .outlined-cascader--bordered .el-input__wrapper.is-focus{border-bottom-color:var(--el-color-primary)}.outlined-tree-select[data-v-8403e6ea]{position:relative}.outlined-tree-select__label[data-v-8403e6ea]{position:absolute;left:-2px;padding:2px 5px;border-radius:2px;background-color:#fff;font-size:12px;line-height:1;transition:color .2s cubic-bezier(0,0,.2,1),transform .2s cubic-bezier(0,0,.2,1);pointer-events:none}.outlined-tree-select__label--floating[data-v-8403e6ea]{top:18px;z-index:1;opacity:1;transform:translate(14px,-6px) scale(1);color:var(--el-color-primary)}.outlined-tree-select__label--placeholder[data-v-8403e6ea]{top:50%;left:1px;z-index:-1;opacity:0;transform:translate(14px,6px) scale(1)}.outlined-tree-select__label--filled[data-v-8403e6ea]{color:var(--el-text-color-regular)}[data-v-8403e6ea] .outlined-tree-select__control.el-select{width:100%}[data-v-8403e6ea] .outlined-tree-select__control .el-select__wrapper{min-height:inherit;height:inherit}[data-v-8403e6ea] .outlined-tree-select__control .el-select__selection{min-height:inherit}[data-v-8403e6ea] .outlined-tree-select__control .el-select__tags{padding-top:4px}[data-v-8403e6ea] .outlined-tree-select--bordered .el-select__wrapper{box-shadow:none;border-radius:0;border-bottom:1px solid #cccccc}[data-v-8403e6ea] .outlined-tree-select--bordered .el-select__wrapper.is-focused{border-bottom-color:var(--el-color-primary)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hbdlzy/ui-core",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Company shared Vue UI core package.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -10,18 +10,20 @@
10
10
  },
11
11
  "main": "dist/index.cjs",
12
12
  "module": "dist/index.js",
13
- "types": "src/index.ts",
13
+ "types": "dist/index.d.ts",
14
14
  "exports": {
15
15
  ".": {
16
16
  "import": "./dist/index.js",
17
17
  "require": "./dist/index.cjs",
18
- "types": "./src/index.ts"
18
+ "types": "./dist/index.d.ts"
19
19
  },
20
20
  "./components.manifest.json": "./components.manifest.json"
21
21
  },
22
22
  "files": [
23
23
  "dist",
24
24
  "src",
25
+ "!src/**/*.test.ts",
26
+ "!src/**/*.spec.ts",
25
27
  "README.md",
26
28
  "components.manifest.json"
27
29
  ],
@@ -44,6 +46,7 @@
44
46
  "registry": "https://registry.npmjs.org/"
45
47
  },
46
48
  "scripts": {
47
- "build": "vite build"
49
+ "build": "vite build && pnpm run build:types",
50
+ "build:types": "vue-tsc -p tsconfig.build.json --declaration --emitDeclarationOnly"
48
51
  }
49
52
  }
@@ -0,0 +1,28 @@
1
+ export type BaseDialogCssValue = string | number
2
+
3
+ export type BaseDialogBeforeConfirm = () => boolean | void | Promise<boolean | void>
4
+
5
+ export interface BaseDialogProps {
6
+ modelValue?: boolean
7
+ title?: string
8
+ width?: BaseDialogCssValue
9
+ top?: string
10
+ fullscreen?: boolean
11
+ appendToBody?: boolean
12
+ destroyOnClose?: boolean
13
+ closeOnClickModal?: boolean
14
+ closeOnPressEscape?: boolean
15
+ showClose?: boolean
16
+ showFooter?: boolean
17
+ confirmText?: string
18
+ cancelText?: string
19
+ confirmLoading?: boolean
20
+ confirmDisabled?: boolean
21
+ beforeConfirm?: BaseDialogBeforeConfirm
22
+ }
23
+
24
+ export interface BaseDialogExpose {
25
+ open: () => void
26
+ close: () => void
27
+ confirm: () => Promise<void>
28
+ }
@@ -0,0 +1,158 @@
1
+ <template>
2
+ <el-dialog
3
+ class="base-dialog"
4
+ :model-value="modelValue"
5
+ :title="title"
6
+ :width="normalizedWidth"
7
+ :top="top"
8
+ :fullscreen="fullscreen"
9
+ :append-to-body="appendToBody"
10
+ :destroy-on-close="destroyOnClose"
11
+ :close-on-click-modal="closeOnClickModal"
12
+ :close-on-press-escape="closeOnPressEscape"
13
+ :show-close="showClose"
14
+ @update:model-value="handleModelValueUpdate"
15
+ @open="emit('open')"
16
+ @opened="emit('opened')"
17
+ @close="emit('close')"
18
+ @closed="emit('closed')"
19
+ >
20
+ <template
21
+ v-if="$slots.header"
22
+ #header
23
+ >
24
+ <slot name="header" />
25
+ </template>
26
+
27
+ <div class="base-dialog__body">
28
+ <slot />
29
+ </div>
30
+
31
+ <template
32
+ v-if="showFooter"
33
+ #footer
34
+ >
35
+ <slot name="footer">
36
+ <div class="base-dialog__footer">
37
+ <el-button @click="cancel">
38
+ {{ cancelText }}
39
+ </el-button>
40
+ <el-button
41
+ type="primary"
42
+ :loading="mergedConfirmLoading"
43
+ :disabled="confirmDisabled"
44
+ @click="confirm"
45
+ >
46
+ {{ confirmText }}
47
+ </el-button>
48
+ </div>
49
+ </slot>
50
+ </template>
51
+ </el-dialog>
52
+ </template>
53
+
54
+ <script setup lang="ts">
55
+ import { computed, ref } from 'vue'
56
+ import type { BaseDialogExpose, BaseDialogProps } from './BaseDialog.types'
57
+
58
+ defineOptions({
59
+ name: 'BaseDialog'
60
+ })
61
+
62
+ const props = withDefaults(defineProps<BaseDialogProps>(), {
63
+ modelValue: false,
64
+ title: '',
65
+ width: '560px',
66
+ top: '12vh',
67
+ fullscreen: false,
68
+ appendToBody: false,
69
+ destroyOnClose: false,
70
+ closeOnClickModal: false,
71
+ closeOnPressEscape: true,
72
+ showClose: true,
73
+ showFooter: true,
74
+ confirmText: '确定',
75
+ cancelText: '取消',
76
+ confirmLoading: false,
77
+ confirmDisabled: false,
78
+ beforeConfirm: undefined
79
+ })
80
+
81
+ const emit = defineEmits<{
82
+ (event: 'update:modelValue', value: boolean): void
83
+ (event: 'open'): void
84
+ (event: 'opened'): void
85
+ (event: 'close'): void
86
+ (event: 'closed'): void
87
+ (event: 'cancel'): void
88
+ (event: 'confirm'): void
89
+ }>()
90
+
91
+ const innerConfirmLoading = ref(false)
92
+
93
+ const normalizedWidth = computed(() => toCssValue(props.width))
94
+ const mergedConfirmLoading = computed(() => props.confirmLoading || innerConfirmLoading.value)
95
+
96
+ function toCssValue(value?: string | number) {
97
+ if (value === undefined || value === null || value === '') {
98
+ return undefined
99
+ }
100
+
101
+ return typeof value === 'number' ? `${value}px` : value
102
+ }
103
+
104
+ function handleModelValueUpdate(value: boolean) {
105
+ emit('update:modelValue', value)
106
+ }
107
+
108
+ function open() {
109
+ emit('update:modelValue', true)
110
+ }
111
+
112
+ function close() {
113
+ emit('update:modelValue', false)
114
+ }
115
+
116
+ function cancel() {
117
+ emit('cancel')
118
+ close()
119
+ }
120
+
121
+ async function confirm() {
122
+ if (mergedConfirmLoading.value || props.confirmDisabled) {
123
+ return
124
+ }
125
+
126
+ innerConfirmLoading.value = true
127
+
128
+ try {
129
+ const result = await props.beforeConfirm?.()
130
+ if (result === false) {
131
+ return
132
+ }
133
+
134
+ emit('confirm')
135
+ } finally {
136
+ innerConfirmLoading.value = false
137
+ }
138
+ }
139
+
140
+ defineExpose<BaseDialogExpose>({
141
+ open,
142
+ close,
143
+ confirm
144
+ })
145
+ </script>
146
+
147
+ <style scoped>
148
+ .base-dialog__body {
149
+ min-width: 0;
150
+ }
151
+
152
+ .base-dialog__footer {
153
+ display: flex;
154
+ align-items: center;
155
+ justify-content: flex-end;
156
+ gap: 8px;
157
+ }
158
+ </style>
@@ -0,0 +1,69 @@
1
+ # BaseDialog
2
+
3
+ `BaseDialog` 用于统一新增、编辑、确认类弹窗,封装常见页脚、确认 loading、异步确认和取消关闭逻辑。
4
+
5
+ ## 基础用法
6
+
7
+ ```vue
8
+ <template>
9
+ <BaseDialog
10
+ v-model="visible"
11
+ title="新增记录"
12
+ :before-confirm="submitForm"
13
+ @confirm="visible = false"
14
+ >
15
+ <el-form>
16
+ <el-form-item label="名称">
17
+ <el-input v-model="form.name" />
18
+ </el-form-item>
19
+ </el-form>
20
+ </BaseDialog>
21
+ </template>
22
+
23
+ <script setup lang="ts">
24
+ import { reactive, ref } from 'vue'
25
+ import { BaseDialog } from '@hbdlzy/ui-core'
26
+
27
+ const visible = ref(false)
28
+ const form = reactive({ name: '' })
29
+
30
+ async function submitForm() {
31
+ if (!form.name) {
32
+ return false
33
+ }
34
+ }
35
+ </script>
36
+ ```
37
+
38
+ ## Props
39
+
40
+ - `modelValue`: 弹窗显示状态
41
+ - `title`: 标题
42
+ - `width`: 宽度
43
+ - `top`: 顶部距离
44
+ - `fullscreen`: 是否全屏
45
+ - `appendToBody`: 是否插入 body
46
+ - `destroyOnClose`: 关闭后销毁内容
47
+ - `closeOnClickModal`: 点击遮罩关闭
48
+ - `showFooter`: 是否显示默认页脚
49
+ - `confirmText`: 确认按钮文案
50
+ - `cancelText`: 取消按钮文案
51
+ - `confirmLoading`: 外部确认 loading
52
+ - `confirmDisabled`: 禁用确认按钮
53
+ - `beforeConfirm`: 确认前钩子,返回 `false` 可阻止确认事件
54
+
55
+ ## Events
56
+
57
+ - `update:modelValue`
58
+ - `open`
59
+ - `opened`
60
+ - `close`
61
+ - `closed`
62
+ - `cancel`
63
+ - `confirm`
64
+
65
+ ## Slots
66
+
67
+ - 默认插槽:弹窗内容
68
+ - `header`: 自定义头部
69
+ - `footer`: 自定义底部
@@ -0,0 +1,10 @@
1
+ import BaseDialog from './BaseDialog.vue'
2
+
3
+ export default BaseDialog
4
+
5
+ export type {
6
+ BaseDialogBeforeConfirm,
7
+ BaseDialogCssValue,
8
+ BaseDialogExpose,
9
+ BaseDialogProps
10
+ } from './BaseDialog.types'
@@ -18,7 +18,7 @@
18
18
  import { computed, ref } from 'vue'
19
19
  import type { PropType } from 'vue'
20
20
  import { ElMessage } from 'element-plus'
21
- import { exportExcel, type ExcelExportOptions } from '../../excel/exportExcel'
21
+ import type { ExcelExportOptions } from '../../excel/exportExcel'
22
22
  import { downloadExportResponse, normalizeExportFileName } from './BaseExportButton.utils'
23
23
  import type {
24
24
  ExportBeforeHandler,
@@ -140,6 +140,8 @@ async function handleExport() {
140
140
 
141
141
  try {
142
142
  if (exportMode.value === 'excel' && props.excelOptions) {
143
+ const { exportExcel } = await import('../../excel/exportExcel')
144
+
143
145
  await exportExcel(props.excelOptions)
144
146
 
145
147
  if (props.autoMessage) {
@@ -0,0 +1,46 @@
1
+ export type BaseSearchFormCssValue = string | number
2
+ export type BaseSearchFormFieldType = 'input' | 'select' | 'date' | 'dateRange' | 'slot'
3
+ export type BaseSearchFormOptionValue = string | number | boolean
4
+ export type BaseSearchFormModel = Record<string, unknown>
5
+
6
+ export interface BaseSearchFormOption {
7
+ label: string
8
+ value: BaseSearchFormOptionValue
9
+ disabled?: boolean
10
+ }
11
+
12
+ export interface BaseSearchFormField {
13
+ key: string
14
+ label?: string
15
+ type?: BaseSearchFormFieldType
16
+ placeholder?: string
17
+ options?: BaseSearchFormOption[]
18
+ span?: number
19
+ collapsed?: boolean
20
+ hidden?: boolean
21
+ clearable?: boolean
22
+ disabled?: boolean
23
+ props?: Record<string, unknown>
24
+ }
25
+
26
+ export interface BaseSearchFormProps {
27
+ modelValue?: BaseSearchFormModel
28
+ fields: BaseSearchFormField[]
29
+ collapsed?: boolean
30
+ showCollapse?: boolean
31
+ columns?: number
32
+ labelWidth?: BaseSearchFormCssValue
33
+ fieldWidth?: BaseSearchFormCssValue
34
+ gutter?: number
35
+ submitText?: string
36
+ resetText?: string
37
+ expandText?: string
38
+ collapseText?: string
39
+ }
40
+
41
+ export interface BaseSearchFormExpose {
42
+ submit: () => void
43
+ reset: () => void
44
+ setFieldValue: (key: string, value: unknown) => void
45
+ getModel: () => BaseSearchFormModel
46
+ }
@@ -0,0 +1,41 @@
1
+ import type {
2
+ BaseSearchFormField,
3
+ BaseSearchFormModel
4
+ } from './BaseSearchForm.types'
5
+
6
+ export function cloneSearchFormModel(model?: BaseSearchFormModel): BaseSearchFormModel {
7
+ return { ...(model || {}) }
8
+ }
9
+
10
+ export function getVisibleSearchFields(
11
+ fields: BaseSearchFormField[],
12
+ collapsed: boolean
13
+ ): BaseSearchFormField[] {
14
+ return fields.filter((field) => {
15
+ if (field.hidden) {
16
+ return false
17
+ }
18
+
19
+ return !collapsed || !field.collapsed
20
+ })
21
+ }
22
+
23
+ export function resetSearchFormModel(fields: BaseSearchFormField[]): BaseSearchFormModel {
24
+ return fields.reduce<BaseSearchFormModel>((model, field) => {
25
+ if (field.type === 'dateRange') {
26
+ model[field.key] = []
27
+ return model
28
+ }
29
+
30
+ model[field.key] = ''
31
+ return model
32
+ }, {})
33
+ }
34
+
35
+ export function toSearchFormCssValue(value?: string | number) {
36
+ if (value === undefined || value === null || value === '') {
37
+ return undefined
38
+ }
39
+
40
+ return typeof value === 'number' ? `${value}px` : value
41
+ }