yuyeon 0.0.8 → 0.0.10

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 (87) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.mjs +2753 -1513
  3. package/dist/yuyeon.umd.js +1 -1
  4. package/lib/components/button/YButton.mjs +31 -27
  5. package/lib/components/button/YButton.mjs.map +1 -1
  6. package/lib/components/button/YButton.scss +13 -6
  7. package/lib/components/icons/YIconCheckbox.mjs +5 -3
  8. package/lib/components/icons/YIconCheckbox.mjs.map +1 -1
  9. package/lib/components/icons/YIconCheckbox.scss +26 -0
  10. package/lib/components/icons/YIconPageControl.mjs +1 -5
  11. package/lib/components/icons/YIconPageControl.mjs.map +1 -1
  12. package/lib/components/icons/YIconSort.mjs +45 -0
  13. package/lib/components/icons/YIconSort.mjs.map +1 -0
  14. package/lib/components/icons/YIconSort.scss +23 -0
  15. package/lib/components/pagination/YPagination.mjs +19 -17
  16. package/lib/components/pagination/YPagination.mjs.map +1 -1
  17. package/lib/components/pagination/YPagination.scss +1 -1
  18. package/lib/components/table/YDataTable.mjs +17 -7
  19. package/lib/components/table/YDataTable.mjs.map +1 -1
  20. package/lib/components/table/YDataTableBody.mjs +69 -6
  21. package/lib/components/table/YDataTableBody.mjs.map +1 -1
  22. package/lib/components/table/YDataTableCell.mjs +18 -4
  23. package/lib/components/table/YDataTableCell.mjs.map +1 -1
  24. package/lib/components/table/YDataTableControl.mjs.map +1 -1
  25. package/lib/components/table/YDataTableHead.mjs +144 -5
  26. package/lib/components/table/YDataTableHead.mjs.map +1 -1
  27. package/lib/components/table/YDataTableRow.mjs +66 -3
  28. package/lib/components/table/YDataTableRow.mjs.map +1 -1
  29. package/lib/components/table/YDataTableServer.mjs +103 -16
  30. package/lib/components/table/YDataTableServer.mjs.map +1 -1
  31. package/lib/components/table/YTable.mjs +17 -13
  32. package/lib/components/table/YTable.mjs.map +1 -1
  33. package/lib/components/table/YTable.scss +53 -0
  34. package/lib/components/table/composibles/header.mjs +110 -0
  35. package/lib/components/table/composibles/header.mjs.map +1 -0
  36. package/lib/components/table/composibles/items.mjs +45 -0
  37. package/lib/components/table/composibles/items.mjs.map +1 -0
  38. package/lib/components/table/composibles/options.mjs +33 -0
  39. package/lib/components/table/composibles/options.mjs.map +1 -0
  40. package/lib/components/table/composibles/pagination.mjs +82 -0
  41. package/lib/components/table/composibles/pagination.mjs.map +1 -0
  42. package/lib/components/table/composibles/selection.mjs +179 -0
  43. package/lib/components/table/composibles/selection.mjs.map +1 -0
  44. package/lib/components/table/composibles/sorting.mjs +74 -0
  45. package/lib/components/table/composibles/sorting.mjs.map +1 -0
  46. package/lib/components/table/types/index.mjs +2 -0
  47. package/lib/components/table/types/index.mjs.map +1 -0
  48. package/lib/components/tree-view/YTreeView.mjs.map +1 -1
  49. package/lib/components/tree-view/types.mjs.map +1 -1
  50. package/lib/components/tree-view/util.mjs.map +1 -1
  51. package/lib/composables/icon.mjs +2 -0
  52. package/lib/composables/icon.mjs.map +1 -0
  53. package/lib/styles/base.scss +8 -0
  54. package/lib/types/index.mjs +2 -0
  55. package/lib/types/index.mjs.map +1 -0
  56. package/lib/util/array.mjs +3 -0
  57. package/lib/util/array.mjs.map +1 -1
  58. package/lib/util/common.mjs +13 -0
  59. package/lib/util/common.mjs.map +1 -1
  60. package/lib/util/vue-component.mjs.map +1 -1
  61. package/package.json +1 -1
  62. package/types/components/button/YButton.d.ts +135 -66
  63. package/types/components/checkbox/YInputCheckbox.d.ts +6 -3
  64. package/types/components/icons/YIconCheckbox.d.ts +6 -3
  65. package/types/components/icons/YIconPageControl.d.ts +0 -8
  66. package/types/components/icons/YIconSort.d.ts +18 -0
  67. package/types/components/pagination/YPagination.d.ts +6 -27
  68. package/types/components/table/YDataTable.d.ts +282 -19
  69. package/types/components/table/YDataTableBody.d.ts +34 -6
  70. package/types/components/table/YDataTableCell.d.ts +50 -0
  71. package/types/components/table/YDataTableHead.d.ts +67 -5
  72. package/types/components/table/YDataTableRow.d.ts +30 -0
  73. package/types/components/table/YDataTableServer.d.ts +317 -29
  74. package/types/components/table/YTable.d.ts +41 -0
  75. package/types/components/table/composibles/header.d.ts +66 -0
  76. package/types/components/table/composibles/items.d.ts +54 -0
  77. package/types/components/table/composibles/options.d.ts +10 -0
  78. package/types/components/table/composibles/pagination.d.ts +68 -0
  79. package/types/components/table/composibles/selection.d.ts +67 -0
  80. package/types/components/table/composibles/sorting.d.ts +41 -0
  81. package/types/components/table/types/index.d.ts +77 -0
  82. package/types/components/tree-view/YTreeView.d.ts +14 -14
  83. package/types/components/tree-view/types.d.ts +3 -3
  84. package/types/components/tree-view/util.d.ts +2 -2
  85. package/types/types/index.d.ts +1 -0
  86. package/types/util/array.d.ts +1 -0
  87. package/types/util/common.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableBody.mjs","names":["defineComponent","useRender","YDataTableBody","name","props","headers","type","Array","setup","_ref","slots","_createVNode","_Fragment","body"],"sources":["../../../src/components/table/YDataTableBody.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\n\r\nexport const YDataTableBody = defineComponent({\r\n name: 'YDataTableBody',\r\n props: {\r\n headers: {\r\n type: [Array],\r\n },\r\n },\r\n setup(props, { slots }) {\r\n useRender(() => {\r\n return <>{slots.body ? slots.body?.(props) : <tr></tr>}</>;\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableBody = InstanceType<typeof YDataTableBody>;\r\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAElB,OAAO,MAAMC,cAAc,GAAGF,eAAe,CAAC;EAC5CG,IAAI,EAAE,gBAAgB;EACtBC,KAAK,EAAE;IACLC,OAAO,EAAE;MACPC,IAAI,EAAE,CAACC,KAAK;IACd;EACF,CAAC;EACDC,KAAKA,CAACJ,KAAK,EAAAK,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBR,SAAS,CAAC,MAAM;MACd,OAAAU,YAAA,CAAAC,SAAA,SAAUF,KAAK,CAACG,IAAI,GAAGH,KAAK,CAACG,IAAI,GAAGT,KAAK,CAAC,GAAAO,YAAA,kBAAY;IACxD,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableBody.mjs","names":["defineComponent","useRender","propsFactory","YDataTableRow","useHeader","useSelection","pressYDataTableBodyProps","items","type","Array","default","loading","Boolean","String","loadingText","hideNoData","noDataText","rowHeight","Number","Function","YDataTableBody","name","props","emits","setup","_ref","slots","emit","columns","isSelected","toggleSelect","_createVNode","value","length","_Fragment","body","map","item","index","stateProps","slotProps","key","onClick","event","undefined"],"sources":["../../../src/components/table/YDataTableBody.tsx"],"sourcesContent":["import { PropType, defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { propsFactory } from '../../util/vue-component';\r\nimport { YDataTableRow } from './YDataTableRow';\r\nimport { useHeader } from './composibles/header';\r\nimport { useSelection } from './composibles/selection';\r\n\r\nimport { DataTableItem } from './types';\r\n\r\nconst pressYDataTableBodyProps = propsFactory(\r\n {\r\n items: {\r\n type: Array as PropType<readonly DataTableItem[]>,\r\n default: () => [],\r\n },\r\n loading: [Boolean, String],\r\n loadingText: String,\r\n hideNoData: Boolean,\r\n noDataText: {\r\n type: String,\r\n default: '',\r\n },\r\n rowHeight: Number,\r\n 'onClick:row': Function as PropType<(e: Event, value: any) => void>,\r\n },\r\n 'YDataTableBody',\r\n);\r\n\r\nexport const YDataTableBody = defineComponent({\r\n name: 'YDataTableBody',\r\n props: {\r\n ...pressYDataTableBodyProps(),\r\n },\r\n emits: ['click:row'],\r\n setup(props, { slots, emit }) {\r\n const { columns } = useHeader();\r\n const { isSelected, toggleSelect } = useSelection();\r\n\r\n useRender(() => {\r\n if (props.loading && slots.loading) {\r\n return (\r\n <tr>\r\n <td colspan={columns.value.length}>{slots.loading()}</td>\r\n </tr>\r\n );\r\n }\r\n if (!props.loading && props.items.length < 1 && !props.hideNoData) {\r\n return (\r\n <tr key=\"no-data\">\r\n <td colspan={columns.value.length}>\r\n {slots['no-data']?.() ?? props.noDataText}\r\n </td>\r\n </tr>\r\n );\r\n }\r\n return (\r\n <>\r\n {slots.body\r\n ? slots.body?.(props)\r\n : props.items.map((item, index) => {\r\n const stateProps = {\r\n index,\r\n item,\r\n columns: columns.value,\r\n isSelected,\r\n toggleSelect,\r\n };\r\n const slotProps = {\r\n ...stateProps,\r\n props: {\r\n key: `item__${item.value}`,\r\n onClick: props['onClick:row']\r\n ? (event: Event) => {\r\n props['onClick:row']?.(event, { item });\r\n }\r\n : undefined,\r\n index,\r\n item,\r\n },\r\n };\r\n\r\n return (\r\n <>\r\n {slots.item ? (\r\n slots.item(slotProps)\r\n ) : (\r\n <YDataTableRow\r\n v-slots={slots}\r\n {...slotProps.props }\r\n ></YDataTableRow>\r\n )}\r\n </>\r\n );\r\n })}\r\n </>\r\n );\r\n });\r\n\r\n // end\r\n return {}\r\n },\r\n});\r\n\r\nexport type YDataTableBody = InstanceType<typeof YDataTableBody>;\r\n"],"mappings":";AAAA,SAAmBA,eAAe,QAAQ,KAAK;AAAC,SAEvCC,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,aAAa;AAAA,SACbC,SAAS;AAAA,SACTC,YAAY;AAIrB,MAAMC,wBAAwB,GAAGJ,YAAY,CAC3C;EACEK,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA2C;IACjDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE,CAACC,OAAO,EAAEC,MAAM,CAAC;EAC1BC,WAAW,EAAED,MAAM;EACnBE,UAAU,EAAEH,OAAO;EACnBI,UAAU,EAAE;IACVR,IAAI,EAAEK,MAAM;IACZH,OAAO,EAAE;EACX,CAAC;EACDO,SAAS,EAAEC,MAAM;EACjB,aAAa,EAAEC;AACjB,CAAC,EACD,gBACF,CAAC;AAED,OAAO,MAAMC,cAAc,GAAGpB,eAAe,CAAC;EAC5CqB,IAAI,EAAE,gBAAgB;EACtBC,KAAK,EAAE;IACL,GAAGhB,wBAAwB,CAAC;EAC9B,CAAC;EACDiB,KAAK,EAAE,CAAC,WAAW,CAAC;EACpBC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC1B,MAAM;MAAEG;IAAQ,CAAC,GAAGxB,SAAS,CAAC,CAAC;IAC/B,MAAM;MAAEyB,UAAU;MAAEC;IAAa,CAAC,GAAGzB,YAAY,CAAC,CAAC;IAEnDJ,SAAS,CAAC,MAAM;MACd,IAAIqB,KAAK,CAACX,OAAO,IAAIe,KAAK,CAACf,OAAO,EAAE;QAClC,OAAAoB,YAAA,cAAAA,YAAA;UAAA,WAEiBH,OAAO,CAACI,KAAK,CAACC;QAAM,IAAGP,KAAK,CAACf,OAAO,CAAC,CAAC;MAGzD;MACA,IAAI,CAACW,KAAK,CAACX,OAAO,IAAIW,KAAK,CAACf,KAAK,CAAC0B,MAAM,GAAG,CAAC,IAAI,CAACX,KAAK,CAACP,UAAU,EAAE;QACjE,OAAAgB,YAAA;UAAA,OACU;QAAS,IAAAA,YAAA;UAAA,WACFH,OAAO,CAACI,KAAK,CAACC;QAAM,IAC9BP,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAIJ,KAAK,CAACN,UAAU;MAIjD;MACA,OAAAe,YAAA,CAAAG,SAAA,SAEKR,KAAK,CAACS,IAAI,GACPT,KAAK,CAACS,IAAI,GAAGb,KAAK,CAAC,GACnBA,KAAK,CAACf,KAAK,CAAC6B,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;QAC/B,MAAMC,UAAU,GAAG;UACjBD,KAAK;UACLD,IAAI;UACJT,OAAO,EAAEA,OAAO,CAACI,KAAK;UACtBH,UAAU;UACVC;QACF,CAAC;QACD,MAAMU,SAAS,GAAG;UAChB,GAAGD,UAAU;UACbjB,KAAK,EAAE;YACLmB,GAAG,EAAG,SAAQJ,IAAI,CAACL,KAAM,EAAC;YAC1BU,OAAO,EAAEpB,KAAK,CAAC,aAAa,CAAC,GACxBqB,KAAY,IAAK;cAChBrB,KAAK,CAAC,aAAa,CAAC,GAAGqB,KAAK,EAAE;gBAAEN;cAAK,CAAC,CAAC;YACzC,CAAC,GACDO,SAAS;YACbN,KAAK;YACLD;UACF;QACF,CAAC;QAED,OAAAN,YAAA,CAAAG,SAAA,SAEKR,KAAK,CAACW,IAAI,GACTX,KAAK,CAACW,IAAI,CAACG,SAAS,CAAC,GAAAT,YAAA,CAAA5B,aAAA,EAIfqC,SAAS,CAAClB,KAAK,EADVI,KAAK,CAGjB;MAGP,CAAC,CAAC;IAGZ,CAAC,CAAC;;IAEF;IACA,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
- import { defineComponent, computed } from "vue";
2
+ import { computed, defineComponent } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
4
  import { toStyleSizeValue } from "../../util/ui.mjs";
5
5
  export const YDataTableCell = defineComponent({
6
6
  name: 'YDataTableCell',
7
+ functional: true,
7
8
  props: {
8
9
  type: {
9
10
  type: String,
@@ -17,11 +18,20 @@ export const YDataTableCell = defineComponent({
17
18
  },
18
19
  width: {
19
20
  type: [Number, String]
21
+ },
22
+ height: {
23
+ type: [Number, String]
24
+ },
25
+ align: {
26
+ type: String,
27
+ default: 'start'
20
28
  }
21
29
  },
30
+ emits: ['click'],
22
31
  setup(props, _ref) {
23
32
  let {
24
33
  slots,
34
+ emit,
25
35
  attrs
26
36
  } = _ref;
27
37
  const offsetStyle = computed(() => {
@@ -38,15 +48,19 @@ export const YDataTableCell = defineComponent({
38
48
  useRender(() => {
39
49
  const ElTag = props.type === 'head' ? 'th' : 'td';
40
50
  return _createVNode(ElTag, _mergeProps({
41
- "class": ['y-data-table__cell', 'y-data-table-cell', {
51
+ "class": [`y-data-table__${ElTag}`, 'y-data-table-cell', {
42
52
  'y-data-table-cell--fixed': props.fixed,
43
- [`y-data-table-cell--fixed-${props.fixed}`]: props.fixed
53
+ [`y-data-table-cell--fixed-${props.fixed}`]: props.fixed,
54
+ [`y-data-table-cell--align-${props.align}`]: props.align
44
55
  }],
45
56
  "style": {
46
57
  width: toStyleSizeValue(props.width),
58
+ height: toStyleSizeValue(props.height),
47
59
  ...offsetStyle.value
48
60
  }
49
- }, attrs), {
61
+ }, attrs, {
62
+ "onClick": e => emit('click', e)
63
+ }), {
50
64
  default: () => [slots.default?.()]
51
65
  });
52
66
  });
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableCell.mjs","names":["defineComponent","computed","useRender","toStyleSizeValue","YDataTableCell","name","props","type","String","default","fixed","fixedOffset","Number","width","setup","_ref","slots","attrs","offsetStyle","ret","undefined","ElTag","_createVNode","_mergeProps","value"],"sources":["../../../src/components/table/YDataTableCell.tsx"],"sourcesContent":["import { PropType, defineComponent, computed, CSSProperties } from \"vue\";\n\nimport { useRender } from '../../composables/component';\nimport { toStyleSizeValue } from \"../../util/ui\";\n\nexport const YDataTableCell = defineComponent({\n name: 'YDataTableCell',\n props: {\n type: {\n type: String as PropType<'head' | 'data'>,\n default: 'data',\n },\n fixed: {\n type: String as PropType<'lead' | 'trail'>,\n },\n fixedOffset: {\n type: Number as PropType<number>,\n },\n width: {\n type: [Number, String] as PropType<string | number>\n }\n },\n setup(props, { slots, attrs }) {\n const offsetStyle = computed(() => {\n const ret: CSSProperties = {};\n if (props.fixed && props.fixedOffset !== undefined) {\n if (props.fixed === 'lead') {\n ret['left'] = toStyleSizeValue(props.fixedOffset);\n } else if (props.fixed === 'trail') {\n ret['right'] = toStyleSizeValue(props.fixedOffset);\n }\n }\n return ret\n })\n\n useRender(() => {\n const ElTag = props.type === 'head' ? 'th' : 'td';\n return (\n <ElTag\n class={[\n 'y-data-table__cell',\n 'y-data-table-cell',\n {\n 'y-data-table-cell--fixed': props.fixed,\n [`y-data-table-cell--fixed-${props.fixed}`]: props.fixed,\n },\n ]}\n style={{\n width: toStyleSizeValue(props.width),\n ...offsetStyle.value\n }}\n {...attrs}\n >\n {slots.default?.()}\n </ElTag>\n );\n });\n },\n});\n\nexport type YDataTableCell = InstanceType<typeof YDataTableCell>;\n"],"mappings":";AAAA,SAAmBA,eAAe,EAAEC,QAAQ,QAAuB,KAAK;AAAC,SAEhEC,SAAS;AAAA,SACTC,gBAAgB;AAEzB,OAAO,MAAMC,cAAc,GAAGJ,eAAe,CAAC;EAC5CK,IAAI,EAAE,gBAAgB;EACtBC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJA,IAAI,EAAEC,MAAmC;MACzCC,OAAO,EAAE;IACX,CAAC;IACDC,KAAK,EAAE;MACLH,IAAI,EAAEC;IACR,CAAC;IACDG,WAAW,EAAE;MACXJ,IAAI,EAAEK;IACR,CAAC;IACDC,KAAK,EAAE;MACLN,IAAI,EAAE,CAACK,MAAM,EAAEJ,MAAM;IACvB;EACF,CAAC;EACDM,KAAKA,CAACR,KAAK,EAAAS,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,WAAW,GAAGjB,QAAQ,CAAC,MAAM;MACjC,MAAMkB,GAAkB,GAAG,CAAC,CAAC;MAC7B,IAAIb,KAAK,CAACI,KAAK,IAAIJ,KAAK,CAACK,WAAW,KAAKS,SAAS,EAAE;QAClD,IAAId,KAAK,CAACI,KAAK,KAAK,MAAM,EAAE;UAC1BS,GAAG,CAAC,MAAM,CAAC,GAAGhB,gBAAgB,CAACG,KAAK,CAACK,WAAW,CAAC;QACnD,CAAC,MAAM,IAAIL,KAAK,CAACI,KAAK,KAAK,OAAO,EAAE;UAClCS,GAAG,CAAC,OAAO,CAAC,GAAGhB,gBAAgB,CAACG,KAAK,CAACK,WAAW,CAAC;QACpD;MACF;MACA,OAAOQ,GAAG;IACZ,CAAC,CAAC;IAEFjB,SAAS,CAAC,MAAM;MACd,MAAMmB,KAAK,GAAGf,KAAK,CAACC,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI;MACjD,OAAAe,YAAA,CAAAD,KAAA,EAAAE,WAAA;QAAA,SAEW,CACL,oBAAoB,EACpB,mBAAmB,EACnB;UACE,0BAA0B,EAAEjB,KAAK,CAACI,KAAK;UACvC,CAAE,4BAA2BJ,KAAK,CAACI,KAAM,EAAC,GAAGJ,KAAK,CAACI;QACrD,CAAC,CACF;QAAA,SACM;UACLG,KAAK,EAAEV,gBAAgB,CAACG,KAAK,CAACO,KAAK,CAAC;UACpC,GAAGK,WAAW,CAACM;QACjB;MAAC,GACGP,KAAK;QAAAR,OAAA,EAAAA,CAAA,MAERO,KAAK,CAACP,OAAO,GAAG,CAAC;MAAA;IAGxB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableCell.mjs","names":["computed","defineComponent","useRender","toStyleSizeValue","YDataTableCell","name","functional","props","type","String","default","fixed","fixedOffset","Number","width","height","align","emits","setup","_ref","slots","emit","attrs","offsetStyle","ret","undefined","ElTag","_createVNode","_mergeProps","value","e"],"sources":["../../../src/components/table/YDataTableCell.tsx"],"sourcesContent":["import { CSSProperties, PropType, computed, defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { toStyleSizeValue } from '../../util/ui';\n\nexport const YDataTableCell = defineComponent({\n name: 'YDataTableCell',\n functional: true,\n props: {\n type: {\n type: String as PropType<'head' | 'data'>,\n default: 'data',\n },\n fixed: {\n type: String as PropType<'lead' | 'trail'>,\n },\n fixedOffset: {\n type: Number as PropType<number>,\n },\n width: {\n type: [Number, String] as PropType<string | number>,\n },\n height: {\n type: [Number, String] as PropType<string | number>,\n },\n align: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'start',\n },\n },\n emits: ['click'],\n setup(props, { slots, emit, attrs }) {\n const offsetStyle = computed(() => {\n const ret: CSSProperties = {};\n if (props.fixed && props.fixedOffset !== undefined) {\n if (props.fixed === 'lead') {\n ret['left'] = toStyleSizeValue(props.fixedOffset);\n } else if (props.fixed === 'trail') {\n ret['right'] = toStyleSizeValue(props.fixedOffset);\n }\n }\n return ret;\n });\n\n useRender(() => {\n const ElTag = props.type === 'head' ? 'th' : 'td';\n return (\n <ElTag\n class={[\n `y-data-table__${ElTag}`,\n 'y-data-table-cell',\n {\n 'y-data-table-cell--fixed': props.fixed,\n [`y-data-table-cell--fixed-${props.fixed}`]: props.fixed,\n [`y-data-table-cell--align-${props.align}`]: props.align,\n },\n ]}\n style={{\n width: toStyleSizeValue(props.width),\n height: toStyleSizeValue(props.height),\n ...offsetStyle.value,\n }}\n {...attrs}\n onClick={(e) => emit('click', e)}\n >\n {slots.default?.()}\n </ElTag>\n );\n });\n },\n});\n\nexport type YDataTableCell = InstanceType<typeof YDataTableCell>;\n"],"mappings":";AAAA,SAAkCA,QAAQ,EAAEC,eAAe,QAAQ,KAAK;AAAC,SAEhEC,SAAS;AAAA,SACTC,gBAAgB;AAEzB,OAAO,MAAMC,cAAc,GAAGH,eAAe,CAAC;EAC5CI,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE,IAAI;EAChBC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJA,IAAI,EAAEC,MAAmC;MACzCC,OAAO,EAAE;IACX,CAAC;IACDC,KAAK,EAAE;MACLH,IAAI,EAAEC;IACR,CAAC;IACDG,WAAW,EAAE;MACXJ,IAAI,EAAEK;IACR,CAAC;IACDC,KAAK,EAAE;MACLN,IAAI,EAAE,CAACK,MAAM,EAAEJ,MAAM;IACvB,CAAC;IACDM,MAAM,EAAE;MACNP,IAAI,EAAE,CAACK,MAAM,EAAEJ,MAAM;IACvB,CAAC;IACDO,KAAK,EAAE;MACLR,IAAI,EAAEC,MAA8C;MACpDC,OAAO,EAAE;IACX;EACF,CAAC;EACDO,KAAK,EAAE,CAAC,OAAO,CAAC;EAChBC,KAAKA,CAACX,KAAK,EAAAY,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IACjC,MAAMI,WAAW,GAAGvB,QAAQ,CAAC,MAAM;MACjC,MAAMwB,GAAkB,GAAG,CAAC,CAAC;MAC7B,IAAIjB,KAAK,CAACI,KAAK,IAAIJ,KAAK,CAACK,WAAW,KAAKa,SAAS,EAAE;QAClD,IAAIlB,KAAK,CAACI,KAAK,KAAK,MAAM,EAAE;UAC1Ba,GAAG,CAAC,MAAM,CAAC,GAAGrB,gBAAgB,CAACI,KAAK,CAACK,WAAW,CAAC;QACnD,CAAC,MAAM,IAAIL,KAAK,CAACI,KAAK,KAAK,OAAO,EAAE;UAClCa,GAAG,CAAC,OAAO,CAAC,GAAGrB,gBAAgB,CAACI,KAAK,CAACK,WAAW,CAAC;QACpD;MACF;MACA,OAAOY,GAAG;IACZ,CAAC,CAAC;IAEFtB,SAAS,CAAC,MAAM;MACd,MAAMwB,KAAK,GAAGnB,KAAK,CAACC,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI;MACjD,OAAAmB,YAAA,CAAAD,KAAA,EAAAE,WAAA;QAAA,SAEW,CACJ,iBAAgBF,KAAM,EAAC,EACxB,mBAAmB,EACnB;UACE,0BAA0B,EAAEnB,KAAK,CAACI,KAAK;UACvC,CAAE,4BAA2BJ,KAAK,CAACI,KAAM,EAAC,GAAGJ,KAAK,CAACI,KAAK;UACxD,CAAE,4BAA2BJ,KAAK,CAACS,KAAM,EAAC,GAAGT,KAAK,CAACS;QACrD,CAAC,CACF;QAAA,SACM;UACLF,KAAK,EAAEX,gBAAgB,CAACI,KAAK,CAACO,KAAK,CAAC;UACpCC,MAAM,EAAEZ,gBAAgB,CAACI,KAAK,CAACQ,MAAM,CAAC;UACtC,GAAGQ,WAAW,CAACM;QACjB;MAAC,GACGP,KAAK;QAAA,WACCQ,CAAC,IAAKT,IAAI,CAAC,OAAO,EAAES,CAAC;MAAC;QAAApB,OAAA,EAAAA,CAAA,MAE/BU,KAAK,CAACV,OAAO,GAAG,CAAC;MAAA;IAGxB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableControl.mjs","names":["defineComponent","useRender","YButton","YFieldInput","YIconExpand","YDataTableControl","name","components","setup","props","_ref","slots","_createVNode","default","_Fragment","_createTextVNode","width","height"],"sources":["../../../src/components/table/YDataTableControl.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { YButton } from '../button';\r\nimport { YFieldInput } from '../field-input';\r\nimport { YIconExpand } from '../icons';\r\nimport './YDataTableControl.scss';\r\n\r\nexport const YDataTableControl = defineComponent({\r\n name: 'YDataTableControl',\r\n components: {\r\n YButton,\r\n YIconExpand,\r\n YFieldInput,\r\n },\r\n setup(props, { slots }) {\r\n useRender(() => {\r\n return (\r\n <footer class={['y-data-table-control']}>\r\n {slots.default ? (\r\n slots.default()\r\n ) : (\r\n <>\r\n <YButton outlined>\r\n 20\r\n <YIconExpand\r\n style={{ width: '16px', height: '16px' }}\r\n ></YIconExpand>\r\n </YButton>\r\n 페이지\r\n <div>\r\n <YFieldInput outlined></YFieldInput>\r\n </div>\r\n </>\r\n )}\r\n </footer>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableControl = InstanceType<typeof YDataTableControl>;\r\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAAA,SACTC,OAAO;AAAA,SACPC,WAAW;AAAA,SACXC,WAAW;AACpB;AAEA,OAAO,MAAMC,iBAAiB,GAAGL,eAAe,CAAC;EAC/CM,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVL,OAAO;IACPE,WAAW;IACXD;EACF,CAAC;EACDK,KAAKA,CAACC,KAAK,EAAAC,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBT,SAAS,CAAC,MAAM;MACd,OAAAW,YAAA;QAAA,SACiB,CAAC,sBAAsB;MAAC,IACpCD,KAAK,CAACE,OAAO,GACZF,KAAK,CAACE,OAAO,CAAC,CAAC,GAAAD,YAAA,CAAAE,SAAA,SAAAF,YAAA,CAAAV,OAAA;QAAA;MAAA;QAAAW,OAAA,EAAAA,CAAA,MAAAE,gBAAA,QAAAH,YAAA,CAAAR,WAAA;UAAA,SAMF;YAAEY,KAAK,EAAE,MAAM;YAAEC,MAAM,EAAE;UAAO;QAAC;MAAA,IAAAF,gBAAA,wBAAAH,YAAA,eAAAA,YAAA,CAAAT,WAAA;QAAA;MAAA,YAQ/C;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableControl.mjs","names":["defineComponent","useRender","YButton","YFieldInput","YIconExpand","YDataTableControl","name","components","setup","props","_ref","slots","_createVNode","default","_Fragment","_createTextVNode","width","height"],"sources":["../../../src/components/table/YDataTableControl.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { YButton } from '../button';\nimport { YFieldInput } from '../field-input';\n\nimport { YIconExpand } from '../icons';\nimport './YDataTableControl.scss';\n\nexport const YDataTableControl = defineComponent({\n name: 'YDataTableControl',\n components: {\n YButton,\n YIconExpand,\n YFieldInput,\n },\n setup(props, { slots }) {\n useRender(() => {\n return (\n <footer class={['y-data-table-control']}>\n {slots.default ? (\n slots.default()\n ) : (\n <>\n <YButton outlined>\n 20\n <YIconExpand\n style={{ width: '16px', height: '16px' }}\n ></YIconExpand>\n </YButton>\n 페이지\n <div>\n <YFieldInput outlined></YFieldInput>\n </div>\n </>\n )}\n </footer>\n );\n });\n },\n});\n\nexport type YDataTableControl = InstanceType<typeof YDataTableControl>;\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAAA,SACTC,OAAO;AAAA,SACPC,WAAW;AAAA,SAEXC,WAAW;AACpB;AAEA,OAAO,MAAMC,iBAAiB,GAAGL,eAAe,CAAC;EAC/CM,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVL,OAAO;IACPE,WAAW;IACXD;EACF,CAAC;EACDK,KAAKA,CAACC,KAAK,EAAAC,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBT,SAAS,CAAC,MAAM;MACd,OAAAW,YAAA;QAAA,SACiB,CAAC,sBAAsB;MAAC,IACpCD,KAAK,CAACE,OAAO,GACZF,KAAK,CAACE,OAAO,CAAC,CAAC,GAAAD,YAAA,CAAAE,SAAA,SAAAF,YAAA,CAAAV,OAAA;QAAA;MAAA;QAAAW,OAAA,EAAAA,CAAA,MAAAE,gBAAA,QAAAH,YAAA,CAAAR,WAAA;UAAA,SAMF;YAAEY,KAAK,EAAE,MAAM;YAAEC,MAAM,EAAE;UAAO;QAAC;MAAA,IAAAF,gBAAA,wBAAAH,YAAA,eAAAA,YAAA,CAAAT,WAAA;QAAA;MAAA,YAQ/C;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -1,19 +1,158 @@
1
- import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
1
+ import { Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
2
  import { defineComponent } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
+ import { toStyleSizeValue } from "../../util/ui.mjs";
5
+ import { propsFactory } from "../../util/vue-component.mjs";
6
+ import { YIconSort } from "../icons/YIconSort.mjs";
7
+ import { YDataTableCell } from "./YDataTableCell.mjs";
8
+ import { useHeader } from "./composibles/header.mjs";
9
+ import { useSelection } from "./composibles/selection.mjs";
10
+ import { useSorting } from "./composibles/sorting.mjs";
11
+ import { YIconCheckbox } from "../icons/index.mjs";
12
+ export const pressYDataTableHeadProps = propsFactory({
13
+ multiSort: Boolean,
14
+ sortAscIcon: {
15
+ type: String,
16
+ default: '@sortAsc'
17
+ },
18
+ sortDescIcon: {
19
+ type: String,
20
+ default: '@sortDesc'
21
+ },
22
+ dualSortIcon: Boolean,
23
+ sticky: Boolean
24
+ }, 'YDataTableHead');
4
25
  export const YDataTableHead = defineComponent({
5
26
  name: 'YDataTableHead',
27
+ components: {
28
+ YDataTableCell
29
+ },
6
30
  props: {
7
- headers: {
8
- type: [Array]
9
- }
31
+ ...pressYDataTableHeadProps()
10
32
  },
11
33
  setup(props, _ref) {
12
34
  let {
13
35
  slots
14
36
  } = _ref;
37
+ const {
38
+ toggleSort,
39
+ sortBy,
40
+ isSorted
41
+ } = useSorting();
42
+ const {
43
+ someSelected,
44
+ allSelected,
45
+ selectAll,
46
+ showSelectAll,
47
+ selectables
48
+ } = useSelection();
49
+ const {
50
+ columns,
51
+ headers
52
+ } = useHeader();
53
+ const getFixedStyles = (column, y) => {
54
+ if (!props.sticky && !column.fixed) return undefined;
55
+ return {
56
+ position: 'sticky',
57
+ zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,
58
+ left: column.fixed ? toStyleSizeValue(column.fixedOffset) : undefined,
59
+ top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined
60
+ };
61
+ };
62
+ function onClick(e) {
63
+ //
64
+ }
65
+ function getSortDirection(column) {
66
+ const found = sortBy.value.find(by => by.key === column.key);
67
+ if (!found) {
68
+ return undefined;
69
+ }
70
+ if (found.order === 'asc') {
71
+ return 'asc';
72
+ }
73
+ if (found.order === 'desc') {
74
+ return 'desc';
75
+ }
76
+ }
77
+ const YDataTableTh = _ref2 => {
78
+ let {
79
+ column,
80
+ x,
81
+ y
82
+ } = _ref2;
83
+ return _createVNode(YDataTableCell, _mergeProps({
84
+ "type": "head",
85
+ "align": column.align,
86
+ "fixed": column.fixed ? column.lastFixed ? 'trail' : 'lead' : undefined,
87
+ "class": ['y-data-table-header', {
88
+ 'y-data-table-header--sortable': column.sortable,
89
+ 'y-data-table-header--sorted': isSorted(column),
90
+ 'y-data-table-header--select': column.key === 'data-table-select'
91
+ }],
92
+ "style": {
93
+ width: toStyleSizeValue(column.width),
94
+ minWidth: toStyleSizeValue(column.width),
95
+ ...getFixedStyles(column, y)
96
+ }
97
+ }, {
98
+ rowspan: column.rowspan,
99
+ colspan: column.colspan
100
+ }, {
101
+ "onClick": onClick
102
+ }), {
103
+ default: () => {
104
+ const headerSlotName = `header.${column.key}`;
105
+ const headerSlotProps = {
106
+ column,
107
+ selectAll,
108
+ isSorted,
109
+ toggleSort,
110
+ sortBy: sortBy.value,
111
+ someSelected: someSelected.value,
112
+ allSelected: allSelected.value,
113
+ selectables: selectables.value,
114
+ getSortDirection
115
+ };
116
+ if (slots[headerSlotName]) {
117
+ return slots[headerSlotName]?.(headerSlotProps);
118
+ }
119
+ if (column.key === 'data-table-select') {
120
+ return slots['header.data-table-select']?.(headerSlotProps) ?? (showSelectAll && _createVNode(YIconCheckbox, _mergeProps({
121
+ "checked": allSelected.value,
122
+ "indeterminate": !allSelected.value && someSelected.value,
123
+ "disabled": selectables.value.length < 1
124
+ }, {
125
+ onClick: e => {
126
+ e.stopPropagation();
127
+ selectAll(!allSelected.value);
128
+ }
129
+ }), null));
130
+ }
131
+ return _createVNode("div", {
132
+ "class": "y-data-table-header__content"
133
+ }, [_createVNode("span", {
134
+ "class": "y-data-table-header__text"
135
+ }, [column.text]), _createVNode("span", {
136
+ "class": ['y-data-table-header__sorting-icon', {
137
+ 'y-data-table-header__sorting-icon--disabled': !column.sortable
138
+ }],
139
+ "onClick": column.sortable ? e => {
140
+ e.stopPropagation();
141
+ toggleSort(column);
142
+ } : undefined
143
+ }, [_createVNode(YIconSort, {
144
+ "disabled": !column.sortable,
145
+ "direction": getSortDirection(column)
146
+ }, null)])]);
147
+ }
148
+ });
149
+ };
15
150
  useRender(() => {
16
- return _createVNode(_Fragment, null, [slots.head ? slots.head?.(props) : _createVNode("tr", null, null)]);
151
+ return _createVNode(_Fragment, null, [slots.head ? slots.head?.(props) : headers.value.map((row, y) => _createVNode("tr", null, [row.map((column, x) => _createVNode(YDataTableTh, {
152
+ "column": column,
153
+ "x": x,
154
+ "y": y
155
+ }, null))]))]);
17
156
  });
18
157
  }
19
158
  });
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableHead.mjs","names":["defineComponent","useRender","YDataTableHead","name","props","headers","type","Array","setup","_ref","slots","_createVNode","_Fragment","head"],"sources":["../../../src/components/table/YDataTableHead.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\n\nexport const YDataTableHead = defineComponent({\n name: 'YDataTableHead',\n props: {\n headers: {\n type: [Array],\n },\n },\n setup(props, { slots }) {\n useRender(() => {\n return <>{slots.head ? slots.head?.(props) : <tr></tr>}</>;\n });\n },\n});\n\nexport type YDataTableHead = InstanceType<typeof YDataTableHead>;\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAElB,OAAO,MAAMC,cAAc,GAAGF,eAAe,CAAC;EAC5CG,IAAI,EAAE,gBAAgB;EACtBC,KAAK,EAAE;IACLC,OAAO,EAAE;MACPC,IAAI,EAAE,CAACC,KAAK;IACd;EACF,CAAC;EACDC,KAAKA,CAACJ,KAAK,EAAAK,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBR,SAAS,CAAC,MAAM;MACd,OAAAU,YAAA,CAAAC,SAAA,SAAUF,KAAK,CAACG,IAAI,GAAGH,KAAK,CAACG,IAAI,GAAGT,KAAK,CAAC,GAAAO,YAAA,kBAAY;IACxD,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableHead.mjs","names":["defineComponent","useRender","toStyleSizeValue","propsFactory","YIconSort","YDataTableCell","useHeader","useSelection","useSorting","YIconCheckbox","pressYDataTableHeadProps","multiSort","Boolean","sortAscIcon","type","String","default","sortDescIcon","dualSortIcon","sticky","YDataTableHead","name","components","props","setup","_ref","slots","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","selectables","columns","headers","getFixedStyles","column","y","fixed","undefined","position","zIndex","left","fixedOffset","top","onClick","e","getSortDirection","found","value","find","by","key","order","YDataTableTh","_ref2","x","_createVNode","_mergeProps","align","lastFixed","sortable","width","minWidth","rowspan","colspan","headerSlotName","headerSlotProps","length","stopPropagation","text","_Fragment","head","map","row"],"sources":["../../../src/components/table/YDataTableHead.tsx"],"sourcesContent":["import { CSSProperties, defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { toStyleSizeValue } from '../../util/ui';\nimport { propsFactory } from '../../util/vue-component';\nimport { YIconSort } from '../icons/YIconSort';\nimport { YDataTableCell } from './YDataTableCell';\nimport { useHeader } from './composibles/header';\nimport { useSelection } from './composibles/selection';\nimport { useSorting } from './composibles/sorting';\n\nimport { YIconCheckbox } from '../icons';\nimport { InternalDataTableHeader } from './types';\n\nexport const pressYDataTableHeadProps = propsFactory(\n {\n multiSort: Boolean,\n sortAscIcon: {\n type: String,\n default: '@sortAsc',\n },\n sortDescIcon: {\n type: String,\n default: '@sortDesc',\n },\n dualSortIcon: Boolean,\n sticky: Boolean,\n },\n 'YDataTableHead',\n);\n\nexport const YDataTableHead = defineComponent({\n name: 'YDataTableHead',\n components: {\n YDataTableCell,\n },\n props: {\n ...pressYDataTableHeadProps(),\n },\n setup(props, { slots }) {\n const { toggleSort, sortBy, isSorted } = useSorting();\n const { someSelected, allSelected, selectAll, showSelectAll, selectables } =\n useSelection();\n const { columns, headers } = useHeader();\n\n const getFixedStyles = (\n column: InternalDataTableHeader,\n y: number,\n ): CSSProperties | undefined => {\n if (!props.sticky && !column.fixed) return undefined;\n\n return {\n position: 'sticky',\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,\n left: column.fixed ? toStyleSizeValue(column.fixedOffset) : undefined,\n top: props.sticky\n ? `calc(var(--v-table-header-height) * ${y})`\n : undefined,\n };\n };\n\n function onClick(e: Event) {\n //\n }\n\n function getSortDirection(column: InternalDataTableHeader) {\n const found = sortBy.value.find((by) => by.key === column.key);\n if (!found) {\n return undefined;\n }\n if (found.order === 'asc') {\n return 'asc';\n }\n if (found.order === 'desc') {\n return 'desc';\n }\n }\n\n const YDataTableTh = ({\n column,\n x,\n y,\n }: {\n column: InternalDataTableHeader;\n x: number;\n y: number;\n }) => {\n return (\n <YDataTableCell\n type=\"head\"\n align={column.align}\n fixed={\n column.fixed ? (column.lastFixed ? 'trail' : 'lead') : undefined\n }\n class={[\n 'y-data-table-header',\n {\n 'y-data-table-header--sortable': column.sortable,\n 'y-data-table-header--sorted': isSorted(column),\n 'y-data-table-header--select': column.key === 'data-table-select',\n },\n ]}\n style={{\n width: toStyleSizeValue(column.width),\n minWidth: toStyleSizeValue(column.width),\n ...getFixedStyles(column, y),\n }}\n {...{ rowspan: column.rowspan, colspan: column.colspan }}\n onClick={onClick}\n >\n {{\n default: () => {\n const headerSlotName = `header.${column.key}` as const;\n const headerSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectables: selectables.value,\n getSortDirection,\n };\n\n if (slots[headerSlotName]) {\n return slots[headerSlotName]?.(headerSlotProps);\n }\n\n if (column.key === 'data-table-select') {\n return (\n slots['header.data-table-select']?.(headerSlotProps) ??\n (showSelectAll && (\n <YIconCheckbox\n checked={allSelected.value}\n indeterminate={!allSelected.value && someSelected.value}\n disabled={selectables.value.length < 1}\n {...{\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n selectAll(!allSelected.value);\n },\n }}\n ></YIconCheckbox>\n ))\n );\n }\n\n return (\n <div class=\"y-data-table-header__content\">\n <span class=\"y-data-table-header__text\">{column.text}</span>\n <span\n class={[\n 'y-data-table-header__sorting-icon',\n {\n 'y-data-table-header__sorting-icon--disabled':\n !column.sortable,\n },\n ]}\n onClick={\n column.sortable\n ? (e) => {\n e.stopPropagation();\n toggleSort(column);\n }\n : undefined\n }\n >\n <YIconSort\n disabled={!column.sortable}\n direction={getSortDirection(column)}\n ></YIconSort>\n </span>\n </div>\n );\n },\n }}\n </YDataTableCell>\n );\n };\n\n useRender(() => {\n return (\n <>\n {slots.head\n ? slots.head?.(props)\n : headers.value.map((row, y) => (\n <tr>\n {row.map((column, x) => (\n <YDataTableTh column={column} x={x} y={y} />\n ))}\n </tr>\n ))}\n </>\n );\n });\n },\n});\n\nexport type YDataTableHead = InstanceType<typeof YDataTableHead>;\n"],"mappings":"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"}
@@ -1,11 +1,74 @@
1
- import { createVNode as _createVNode } from "vue";
1
+ import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
2
  import { defineComponent } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
+ import { getPropertyFromItem } from "../../util/common.mjs";
5
+ import { propsFactory } from "../../util/vue-component.mjs";
6
+ import { YDataTableCell } from "./YDataTableCell.mjs";
7
+ import { useHeader } from "./composibles/header.mjs";
8
+ import { useSelection } from "./composibles/selection.mjs";
9
+ import { YIconCheckbox } from "../icons/index.mjs";
10
+ export const pressYDataTableRowProps = propsFactory({
11
+ index: Number,
12
+ item: Object,
13
+ onClick: Function
14
+ }, 'YDataTableRow');
4
15
  export const YDataTableRow = defineComponent({
5
16
  name: 'YDataTableRow',
6
- setup() {
17
+ props: {
18
+ ...pressYDataTableRowProps()
19
+ },
20
+ setup(props, _ref) {
21
+ let {
22
+ emit,
23
+ slots
24
+ } = _ref;
25
+ const {
26
+ isSelected,
27
+ toggleSelect
28
+ } = useSelection();
29
+ const {
30
+ columns
31
+ } = useHeader();
7
32
  useRender(() => {
8
- return _createVNode("tr", null, null);
33
+ return _createVNode("tr", {
34
+ "class": ['y-data-table__row'],
35
+ "onClick": e => emit('click:row', e)
36
+ }, [props.item && columns.value.map((column, colIndex) => _createVNode(YDataTableCell, {
37
+ "align": column.align,
38
+ "fixed": column.fixed ? column.lastFixed ? 'trail' : 'lead' : undefined,
39
+ "fixedOffset": column.fixedOffset,
40
+ "width": column.width,
41
+ "class": ['y-data-table-data', {
42
+ 'y-data-table-data--select': column.key === 'data-table-select'
43
+ }]
44
+ }, {
45
+ default: () => {
46
+ const item = props.item;
47
+ const slotName = `item.${column.key}`;
48
+ const slotProps = {
49
+ index: props.index,
50
+ item: props.item,
51
+ columns: columns.value,
52
+ isSelected,
53
+ toggleSelect
54
+ };
55
+ if (slots[slotName]) {
56
+ return slots[slotName]?.(slotProps);
57
+ }
58
+ if (column.key === 'data-table-select') {
59
+ return slots['item.data-table-select']?.(slotProps) ?? _createVNode(YIconCheckbox, _mergeProps({
60
+ "checked": isSelected([item]),
61
+ "disabled": !item.selectable
62
+ }, {
63
+ onClick: e => {
64
+ e.stopPropagation();
65
+ toggleSelect(item);
66
+ }
67
+ }), null);
68
+ }
69
+ return getPropertyFromItem(item.columns, column.key);
70
+ }
71
+ }))]);
9
72
  });
10
73
  }
11
74
  });
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableRow.mjs","names":["defineComponent","useRender","YDataTableRow","name","setup","_createVNode"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\n\r\nexport const YDataTableRow = defineComponent({\r\n name: 'YDataTableRow',\r\n setup() {\r\n useRender(() => {\r\n return <tr></tr>;\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\r\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAElB,OAAO,MAAMC,aAAa,GAAGF,eAAe,CAAC;EAC3CG,IAAI,EAAE,eAAe;EACrBC,KAAKA,CAAA,EAAG;IACNH,SAAS,CAAC,MAAM;MACd,OAAAI,YAAA;IACF,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableRow.mjs","names":["defineComponent","useRender","getPropertyFromItem","propsFactory","YDataTableCell","useHeader","useSelection","YIconCheckbox","pressYDataTableRowProps","index","Number","item","Object","onClick","Function","YDataTableRow","name","props","setup","_ref","emit","slots","isSelected","toggleSelect","columns","_createVNode","e","value","map","column","colIndex","align","fixed","lastFixed","undefined","fixedOffset","width","key","default","slotName","slotProps","_mergeProps","selectable","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { PropType, defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { getPropertyFromItem } from '../../util/common';\r\nimport { propsFactory } from '../../util/vue-component';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from './composibles/header';\r\nimport { useSelection } from './composibles/selection';\r\n\r\nimport { YIconCheckbox } from '../icons';\r\nimport { DataTableItem } from './types';\r\n\r\nexport const pressYDataTableRowProps = propsFactory(\r\n {\r\n index: Number as PropType<number>,\r\n item: Object as PropType<DataTableItem>,\r\n onClick: Function as PropType<(e: MouseEvent) => void>,\r\n },\r\n 'YDataTableRow',\r\n);\r\n\r\nexport const YDataTableRow = defineComponent({\r\n name: 'YDataTableRow',\r\n props: {\r\n ...pressYDataTableRowProps(),\r\n },\r\n setup(props, { emit, slots }) {\r\n const { isSelected, toggleSelect } = useSelection();\r\n const { columns } = useHeader();\r\n\r\n useRender(() => {\r\n return (\r\n <tr class={['y-data-table__row']} onClick={(e) => emit('click:row', e)}>\r\n {props.item &&\r\n columns.value.map((column, colIndex) => (\r\n <YDataTableCell\r\n align={column.align}\r\n fixed={\r\n column.fixed\r\n ? column.lastFixed\r\n ? 'trail'\r\n : 'lead'\r\n : undefined\r\n }\r\n fixedOffset={column.fixedOffset}\r\n width={column.width}\r\n class={[\r\n 'y-data-table-data',\r\n {\r\n 'y-data-table-data--select': column.key === 'data-table-select',\r\n },\r\n ]}\r\n >\r\n {{\r\n default: () => {\r\n const item = props.item!;\r\n const slotName = `item.${column.key}`;\r\n const slotProps = {\r\n index: props.index,\r\n item: props.item,\r\n columns: columns.value,\r\n isSelected,\r\n toggleSelect,\r\n };\r\n\r\n if (slots[slotName]) {\r\n return slots[slotName]?.(slotProps);\r\n }\r\n\r\n if (column.key === 'data-table-select') {\r\n return (\r\n slots['item.data-table-select']?.(slotProps) ?? (\r\n <YIconCheckbox\r\n checked={isSelected([item])}\r\n disabled={!item.selectable}\r\n {...{\r\n onClick: (e: MouseEvent) => {\r\n e.stopPropagation();\r\n toggleSelect(item);\r\n },\r\n }}\r\n ></YIconCheckbox>\r\n )\r\n );\r\n }\r\n\r\n return getPropertyFromItem(item.columns, column.key);\r\n },\r\n }}\r\n </YDataTableCell>\r\n ))}\r\n </tr>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\r\n"],"mappings":";AAAA,SAAmBA,eAAe,QAAQ,KAAK;AAAC,SAEvCC,SAAS;AAAA,SACTC,mBAAmB;AAAA,SACnBC,YAAY;AAAA,SACZC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,YAAY;AAAA,SAEZC,aAAa;AAGtB,OAAO,MAAMC,uBAAuB,GAAGL,YAAY,CACjD;EACEM,KAAK,EAAEC,MAA0B;EACjCC,IAAI,EAAEC,MAAiC;EACvCC,OAAO,EAAEC;AACX,CAAC,EACD,eACF,CAAC;AAED,OAAO,MAAMC,aAAa,GAAGf,eAAe,CAAC;EAC3CgB,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE;IACL,GAAGT,uBAAuB,CAAC;EAC7B,CAAC;EACDU,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC1B,MAAM;MAAEG,UAAU;MAAEC;IAAa,CAAC,GAAGjB,YAAY,CAAC,CAAC;IACnD,MAAM;MAAEkB;IAAQ,CAAC,GAAGnB,SAAS,CAAC,CAAC;IAE/BJ,SAAS,CAAC,MAAM;MACd,OAAAwB,YAAA;QAAA,SACa,CAAC,mBAAmB,CAAC;QAAA,WAAYC,CAAC,IAAKN,IAAI,CAAC,WAAW,EAAEM,CAAC;MAAC,IACnET,KAAK,CAACN,IAAI,IACTa,OAAO,CAACG,KAAK,CAACC,GAAG,CAAC,CAACC,MAAM,EAAEC,QAAQ,KAAAL,YAAA,CAAArB,cAAA;QAAA,SAExByB,MAAM,CAACE,KAAK;QAAA,SAEjBF,MAAM,CAACG,KAAK,GACRH,MAAM,CAACI,SAAS,GACd,OAAO,GACP,MAAM,GACRC,SAAS;QAAA,eAEFL,MAAM,CAACM,WAAW;QAAA,SACxBN,MAAM,CAACO,KAAK;QAAA,SACZ,CACL,mBAAmB,EACnB;UACE,2BAA2B,EAAEP,MAAM,CAACQ,GAAG,KAAK;QAC9C,CAAC;MACF;QAGCC,OAAO,EAAEA,CAAA,KAAM;UACb,MAAM3B,IAAI,GAAGM,KAAK,CAACN,IAAK;UACxB,MAAM4B,QAAQ,GAAI,QAAOV,MAAM,CAACQ,GAAI,EAAC;UACrC,MAAMG,SAAS,GAAG;YAChB/B,KAAK,EAAEQ,KAAK,CAACR,KAAK;YAClBE,IAAI,EAAEM,KAAK,CAACN,IAAI;YAChBa,OAAO,EAAEA,OAAO,CAACG,KAAK;YACtBL,UAAU;YACVC;UACF,CAAC;UAED,IAAIF,KAAK,CAACkB,QAAQ,CAAC,EAAE;YACnB,OAAOlB,KAAK,CAACkB,QAAQ,CAAC,GAAGC,SAAS,CAAC;UACrC;UAEA,IAAIX,MAAM,CAACQ,GAAG,KAAK,mBAAmB,EAAE;YACtC,OACEhB,KAAK,CAAC,wBAAwB,CAAC,GAAGmB,SAAS,CAAC,IAAAf,YAAA,CAAAlB,aAAA,EAAAkC,WAAA;cAAA,WAE/BnB,UAAU,CAAC,CAACX,IAAI,CAAC,CAAC;cAAA,YACjB,CAACA,IAAI,CAAC+B;YAAU;cAExB7B,OAAO,EAAGa,CAAa,IAAK;gBAC1BA,CAAC,CAACiB,eAAe,CAAC,CAAC;gBACnBpB,YAAY,CAACZ,IAAI,CAAC;cACpB;YAAC,SAGN;UAEL;UAEA,OAAOT,mBAAmB,CAACS,IAAI,CAACa,OAAO,EAAEK,MAAM,CAACQ,GAAG,CAAC;QACtD;MAAC,EAGN,CAAC;IAGV,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -1,22 +1,25 @@
1
- import { createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from "vue";
2
- import { computed, defineComponent } from 'vue';
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from "vue";
2
+ import { toRef } from '@vue/runtime-core';
3
+ import { computed, defineComponent, provide } from 'vue';
3
4
  import { useRender } from "../../composables/component.mjs";
4
- import { propsFactory } from "../../util/vue-component.mjs";
5
+ import { chooseProps, propsFactory } from "../../util/vue-component.mjs";
5
6
  import { pressDataTableProps } from "./YDataTable.mjs";
6
7
  import { YDataTableBody } from "./YDataTableBody.mjs";
7
8
  import { YDataTableControl } from "./YDataTableControl.mjs";
8
9
  import { YDataTableHead } from "./YDataTableHead.mjs";
9
10
  import { YDataTableLayer } from "./YDataTableLayer.mjs";
10
11
  import { YTable } from "./YTable.mjs";
11
- import { pressDataTablePaginationProps } from "./pagination.mjs";
12
+ import { createHeader } from "./composibles/header.mjs";
13
+ import { createPagination, pressDataTablePaginationProps, providePagination } from "./composibles/pagination.mjs";
14
+ import { provideSelection } from "./composibles/selection.mjs";
15
+ import { createSorting, provideSorting } from "./composibles/sorting.mjs";
16
+ import { useItems } from "./composibles/items.mjs";
17
+ import { useOptions } from "./composibles/options.mjs";
12
18
  export const pressDataTableServerProps = propsFactory({
13
19
  total: {
14
20
  type: [Number, String],
15
21
  required: true
16
22
  },
17
- headers: {
18
- type: [Array]
19
- },
20
23
  ...pressDataTablePaginationProps(),
21
24
  ...pressDataTableProps()
22
25
  }, 'YDataTableServer');
@@ -32,24 +35,108 @@ export const YDataTableServer = defineComponent({
32
35
  props: {
33
36
  ...pressDataTableServerProps()
34
37
  },
38
+ emits: {
39
+ 'update:modelValue': value => true,
40
+ 'update:page': page => true,
41
+ 'update:pageSize': pageSize => true,
42
+ 'update:sortBy': sortBy => true,
43
+ 'update:options': options => true,
44
+ 'click:row': (e, value) => true
45
+ },
35
46
  setup(props, _ref) {
36
47
  let {
37
- slots
48
+ slots,
49
+ emit
38
50
  } = _ref;
51
+ const {
52
+ page,
53
+ pageSize
54
+ } = createPagination(props);
55
+ const {
56
+ sortBy,
57
+ multiSort
58
+ } = createSorting(props);
59
+ const total = computed(() => parseInt(props.total));
60
+ const {
61
+ columns,
62
+ headers
63
+ } = createHeader(props, {
64
+ enableSelect: toRef(props, 'enableSelect')
65
+ });
66
+ const {
67
+ items
68
+ } = useItems(props, columns);
69
+ const {
70
+ toggleSort
71
+ } = provideSorting({
72
+ sortBy,
73
+ multiSort,
74
+ page
75
+ });
76
+ const {
77
+ pageLength,
78
+ setPageSize
79
+ } = providePagination({
80
+ page,
81
+ pageSize,
82
+ total
83
+ });
84
+ const {
85
+ isSelected,
86
+ select,
87
+ selectAll,
88
+ toggleSelect,
89
+ someSelected,
90
+ allSelected
91
+ } = provideSelection(props, {
92
+ allItems: items,
93
+ pageItems: items
94
+ });
95
+ useOptions({
96
+ page,
97
+ pageSize,
98
+ search: toRef(props, 'search'),
99
+ sortBy
100
+ }, emit);
101
+ provide('y-data-table', {
102
+ toggleSort,
103
+ sortBy
104
+ });
39
105
  const slotProps = computed(() => {
40
- return {};
106
+ return {
107
+ // pagination
108
+ page: page.value,
109
+ pageSize: pageSize.value,
110
+ pageLength: pageLength.value,
111
+ setPageSize,
112
+ // sorting
113
+ sortBy: sortBy.value,
114
+ toggleSort,
115
+ // selection
116
+ someSelected: someSelected.value,
117
+ allSelected: allSelected.value,
118
+ isSelected,
119
+ select,
120
+ selectAll,
121
+ toggleSelect,
122
+ //
123
+ items: items.value,
124
+ columns: columns.value,
125
+ headers: headers.value
126
+ };
41
127
  });
42
128
  useRender(() => {
43
- return _createVNode(YTable, {
129
+ const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);
130
+ const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);
131
+ const yTableProps = chooseProps(props, YTable.props);
132
+ return _createVNode(YTable, _mergeProps({
44
133
  "class": ['y-data-table']
45
- }, {
134
+ }, yTableProps), {
46
135
  top: () => slots.top?.(slotProps.value),
47
136
  leading: () => slots.leading ? slots.leading(slotProps.value) : _createVNode(_Fragment, null, [_createVNode(YDataTableLayer, null, slots)]),
48
- default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [_createVNode("thead", null, [_createVNode(YDataTableHead, {
49
- "headers": props.headers
50
- }, slots)]), slots.thead?.(slotProps.value), _createVNode("tbody", null, [_createVNode(YDataTableBody, {
51
- "headers": props.headers
52
- }, slots)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
137
+ default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [_createVNode("thead", null, [_createVNode(YDataTableHead, yDataTableHeadProps, slots)]), slots.thead?.(slotProps.value), _createVNode("tbody", null, [_createVNode(YDataTableBody, _mergeProps(yDataTableBodyProps, {
138
+ "items": items.value
139
+ }), slots)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
53
140
  trailing: () => slots.trailing?.(slotProps.value),
54
141
  bottom: () => slots.bottom ? slots.bottom(slotProps.value) : _createVNode(YDataTableControl, null, {
55
142
  prepend: slots['control.prepend']
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableServer.mjs","names":["computed","defineComponent","useRender","propsFactory","pressDataTableProps","YDataTableBody","YDataTableControl","YDataTableHead","YDataTableLayer","YTable","pressDataTablePaginationProps","pressDataTableServerProps","total","type","Number","String","required","headers","Array","YDataTableServer","name","components","props","setup","_ref","slots","slotProps","_createVNode","top","value","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend"],"sources":["../../../src/components/table/YDataTableServer.tsx"],"sourcesContent":["import { PropType, computed, defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { propsFactory } from '../../util/vue-component';\nimport { pressDataTableProps } from './YDataTable';\nimport { YDataTableBody } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable } from './YTable';\nimport { pressDataTablePaginationProps } from './pagination';\n\nexport const pressDataTableServerProps = propsFactory(\n {\n total: {\n type: [Number, String] as PropType<number | string>,\n required: true,\n },\n headers: {\n type: [Array],\n },\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\n },\n 'YDataTableServer',\n);\n\nexport const YDataTableServer = defineComponent({\n name: 'YDataTableServer',\n components: {\n YTable,\n YDataTableLayer,\n YDataTableHead,\n YDataTableBody,\n YDataTableControl,\n },\n props: {\n ...pressDataTableServerProps(),\n },\n setup(props, { slots }) {\n const slotProps = computed(() => {\n return {};\n });\n useRender(() => {\n return (\n <YTable class={['y-data-table']}>\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer v-slots={slots}></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <>\n <thead>\n <YDataTableHead v-slots={slots} headers={props.headers}></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n <tbody>\n <YDataTableBody v-slots={slots} headers={props.headers}></YDataTableBody>\n </tbody>\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n v-slots={{\n prepend: slots['control.prepend'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n },\n});\n\nexport type YDataTableServer = InstanceType<typeof YDataTableServer>;\n"],"mappings":";AAAA,SAAmBA,QAAQ,EAAEC,eAAe,QAAQ,KAAK;AAAC,SAEjDC,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,mBAAmB;AAAA,SACnBC,cAAc;AAAA,SACdC,iBAAiB;AAAA,SACjBC,cAAc;AAAA,SACdC,eAAe;AAAA,SACfC,MAAM;AAAA,SACNC,6BAA6B;AAEtC,OAAO,MAAMC,yBAAyB,GAAGR,YAAY,CACnD;EACES,KAAK,EAAE;IACLC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAA8B;IACnDC,QAAQ,EAAE;EACZ,CAAC;EACDC,OAAO,EAAE;IACPJ,IAAI,EAAE,CAACK,KAAK;EACd,CAAC;EACD,GAAGR,6BAA6B,CAAC,CAAC;EAClC,GAAGN,mBAAmB,CAAC;AACzB,CAAC,EACD,kBACF,CAAC;AAED,OAAO,MAAMe,gBAAgB,GAAGlB,eAAe,CAAC;EAC9CmB,IAAI,EAAE,kBAAkB;EACxBC,UAAU,EAAE;IACVZ,MAAM;IACND,eAAe;IACfD,cAAc;IACdF,cAAc;IACdC;EACF,CAAC;EACDgB,KAAK,EAAE;IACL,GAAGX,yBAAyB,CAAC;EAC/B,CAAC;EACDY,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAME,SAAS,GAAG1B,QAAQ,CAAC,MAAM;MAC/B,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACFE,SAAS,CAAC,MAAM;MACd,OAAAyB,YAAA,CAAAlB,MAAA;QAAA,SACiB,CAAC,cAAc;MAAC;QAE3BmB,GAAG,EAAEA,CAAA,KAAMH,KAAK,CAACG,GAAG,GAAGF,SAAS,CAACG,KAAK,CAAC;QACvCC,OAAO,EAAEA,CAAA,KACPL,KAAK,CAACK,OAAO,GACXL,KAAK,CAACK,OAAO,CAACJ,SAAS,CAACG,KAAK,CAAC,GAAAF,YAAA,CAAAI,SAAA,SAAAJ,YAAA,CAAAnB,eAAA,QAGFiB,KAAK,GAElC;QACHO,OAAO,EAAEA,CAAA,KACPP,KAAK,CAACO,OAAO,GACXP,KAAK,CAACO,OAAO,CAACN,SAAS,CAACG,KAAK,CAAC,GAAAF,YAAA,CAAAI,SAAA,SAAAJ,YAAA,iBAAAA,YAAA,CAAApB,cAAA;UAAA,WAIee,KAAK,CAACL;QAAO,GAA7BQ,KAAK,KAE/BA,KAAK,CAACQ,KAAK,GAAGP,SAAS,CAACG,KAAK,CAAC,EAAAF,YAAA,iBAAAA,YAAA,CAAAtB,cAAA;UAAA,WAEYiB,KAAK,CAACL;QAAO,GAA7BQ,KAAK,KAE/BA,KAAK,CAACS,KAAK,GAAGR,SAAS,CAACG,KAAK,CAAC,EAC9BJ,KAAK,CAACU,KAAK,GAAGT,SAAS,CAACG,KAAK,CAAC,EAElC;QACHO,QAAQ,EAAEA,CAAA,KAAMX,KAAK,CAACW,QAAQ,GAAGV,SAAS,CAACG,KAAK,CAAC;QACjDQ,MAAM,EAAEA,CAAA,KACNZ,KAAK,CAACY,MAAM,GACVZ,KAAK,CAACY,MAAM,CAACX,SAAS,CAACG,KAAK,CAAC,GAAAF,YAAA,CAAArB,iBAAA,QAGlB;UACPgC,OAAO,EAAEb,KAAK,CAAC,iBAAiB;QAClC,CAAC;MAEJ;IAIX,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableServer.mjs","names":["toRef","computed","defineComponent","provide","useRender","chooseProps","propsFactory","pressDataTableProps","YDataTableBody","YDataTableControl","YDataTableHead","YDataTableLayer","YTable","createHeader","createPagination","pressDataTablePaginationProps","providePagination","provideSelection","createSorting","provideSorting","useItems","useOptions","pressDataTableServerProps","total","type","Number","String","required","YDataTableServer","name","components","props","emits","value","page","pageSize","sortBy","options","click:row","e","setup","_ref","slots","emit","multiSort","parseInt","columns","headers","enableSelect","items","toggleSort","pageLength","setPageSize","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","search","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend"],"sources":["../../../src/components/table/YDataTableServer.tsx"],"sourcesContent":["import { toRef } from '@vue/runtime-core';\nimport { PropType, computed, defineComponent, provide } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { pressDataTableProps } from './YDataTable';\nimport { YDataTableBody } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable } from './YTable';\nimport { createHeader } from './composibles/header';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n} from './composibles/pagination';\nimport { provideSelection } from './composibles/selection';\nimport { createSorting, provideSorting } from './composibles/sorting';\n\nimport { useItems } from './composibles/items';\nimport { useOptions } from './composibles/options';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableServerProps = propsFactory(\n {\n total: {\n type: [Number, String] as PropType<number | string>,\n required: true,\n },\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\n },\n 'YDataTableServer',\n);\n\nexport const YDataTableServer = defineComponent({\n name: 'YDataTableServer',\n components: {\n YTable,\n YDataTableLayer,\n YDataTableHead,\n YDataTableBody,\n YDataTableControl,\n },\n props: {\n ...pressDataTableServerProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n },\n setup(props, { slots, emit }) {\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const total = computed(() => parseInt(props.total as string));\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const { pageLength, setPageSize } = providePagination({\n page,\n pageSize,\n total,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n provide('y-data-table', {\n toggleSort,\n sortBy,\n });\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n //\n items: items.value,\n columns: columns.value,\n headers: headers.value,\n };\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable class={['y-data-table']} {...yTableProps}>\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer v-slots={slots}></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <>\n <thead>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n <tbody>\n <YDataTableBody\n v-slots={slots}\n {...yDataTableBodyProps}\n items={items.value}\n ></YDataTableBody>\n </tbody>\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n v-slots={{\n prepend: slots['control.prepend'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n },\n});\n\nexport type YDataTableServer = InstanceType<typeof YDataTableServer>;\n"],"mappings":";AAAA,SAASA,KAAK,QAAQ,mBAAmB;AACzC,SAAmBC,QAAQ,EAAEC,eAAe,EAAEC,OAAO,QAAQ,KAAK;AAAC,SAE1DC,SAAS;AAAA,SACTC,WAAW,EAAEC,YAAY;AAAA,SACzBC,mBAAmB;AAAA,SACnBC,cAAc;AAAA,SACdC,iBAAiB;AAAA,SACjBC,cAAc;AAAA,SACdC,eAAe;AAAA,SACfC,MAAM;AAAA,SACNC,YAAY;AAAA,SAEnBC,gBAAgB,EAChBC,6BAA6B,EAC7BC,iBAAiB;AAAA,SAEVC,gBAAgB;AAAA,SAChBC,aAAa,EAAEC,cAAc;AAAA,SAE7BC,QAAQ;AAAA,SACRC,UAAU;AAGnB,OAAO,MAAMC,yBAAyB,GAAGhB,YAAY,CACnD;EACEiB,KAAK,EAAE;IACLC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAA8B;IACnDC,QAAQ,EAAE;EACZ,CAAC;EACD,GAAGZ,6BAA6B,CAAC,CAAC;EAClC,GAAGR,mBAAmB,CAAC;AACzB,CAAC,EACD,kBACF,CAAC;AAED,OAAO,MAAMqB,gBAAgB,GAAG1B,eAAe,CAAC;EAC9C2B,IAAI,EAAE,kBAAkB;EACxBC,UAAU,EAAE;IACVlB,MAAM;IACND,eAAe;IACfD,cAAc;IACdF,cAAc;IACdC;EACF,CAAC;EACDsB,KAAK,EAAE;IACL,GAAGT,yBAAyB,CAAC;EAC/B,CAAC;EACDU,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAY,IAAK,IAAI;IAC3C,aAAa,EAAGC,IAAY,IAAK,IAAI;IACrC,iBAAiB,EAAGC,QAAgB,IAAK,IAAI;IAC7C,eAAe,EAAGC,MAAW,IAAK,IAAI;IACtC,gBAAgB,EAAGC,OAAY,IAAK,IAAI;IACxC,WAAW,EAAEC,CAACC,CAAQ,EAAEN,KAAmB,KAAK;EAClD,CAAC;EACDO,KAAKA,CAACT,KAAK,EAAAU,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC1B,MAAM;MAAEP,IAAI;MAAEC;IAAS,CAAC,GAAGrB,gBAAgB,CAACiB,KAAK,CAAC;IAClD,MAAM;MAAEK,MAAM;MAAEQ;IAAU,CAAC,GAAG1B,aAAa,CAACa,KAAK,CAAC;IAClD,MAAMR,KAAK,GAAGtB,QAAQ,CAAC,MAAM4C,QAAQ,CAACd,KAAK,CAACR,KAAe,CAAC,CAAC;IAC7D,MAAM;MAAEuB,OAAO;MAAEC;IAAQ,CAAC,GAAGlC,YAAY,CAACkB,KAAK,EAAE;MAC/CiB,YAAY,EAAEhD,KAAK,CAAC+B,KAAK,EAAE,cAAc;IAC3C,CAAC,CAAC;IACF,MAAM;MAAEkB;IAAM,CAAC,GAAG7B,QAAQ,CAACW,KAAK,EAAEe,OAAO,CAAC;IAE1C,MAAM;MAAEI;IAAW,CAAC,GAAG/B,cAAc,CAAC;MAAEiB,MAAM;MAAEQ,SAAS;MAAEV;IAAK,CAAC,CAAC;IAClE,MAAM;MAAEiB,UAAU;MAAEC;IAAY,CAAC,GAAGpC,iBAAiB,CAAC;MACpDkB,IAAI;MACJC,QAAQ;MACRZ;IACF,CAAC,CAAC;IACF,MAAM;MACJ8B,UAAU;MACVC,MAAM;MACNC,SAAS;MACTC,YAAY;MACZC,YAAY;MACZC;IACF,CAAC,GAAGzC,gBAAgB,CAACc,KAAK,EAAE;MAAE4B,QAAQ,EAAEV,KAAK;MAAEW,SAAS,EAAEX;IAAM,CAAC,CAAC;IAElE5B,UAAU,CACR;MACEa,IAAI;MACJC,QAAQ;MACR0B,MAAM,EAAE7D,KAAK,CAAC+B,KAAK,EAAE,QAAQ,CAAC;MAC9BK;IACF,CAAC,EACDO,IACF,CAAC;IAEDxC,OAAO,CAAC,cAAc,EAAE;MACtB+C,UAAU;MACVd;IACF,CAAC,CAAC;IAEF,MAAM0B,SAAS,GAAG7D,QAAQ,CAAsB,MAAM;MACpD,OAAO;QACL;QACAiC,IAAI,EAAEA,IAAI,CAACD,KAAK;QAChBE,QAAQ,EAAEA,QAAQ,CAACF,KAAK;QACxBkB,UAAU,EAAEA,UAAU,CAAClB,KAAK;QAC5BmB,WAAW;QACX;QACAhB,MAAM,EAAEA,MAAM,CAACH,KAAK;QACpBiB,UAAU;QACV;QACAO,YAAY,EAAEA,YAAY,CAACxB,KAAK;QAChCyB,WAAW,EAAEA,WAAW,CAACzB,KAAK;QAC9BoB,UAAU;QACVC,MAAM;QACNC,SAAS;QACTC,YAAY;QACZ;QACAP,KAAK,EAAEA,KAAK,CAAChB,KAAK;QAClBa,OAAO,EAAEA,OAAO,CAACb,KAAK;QACtBc,OAAO,EAAEA,OAAO,CAACd;MACnB,CAAC;IACH,CAAC,CAAC;IAEF7B,SAAS,CAAC,MAAM;MACd,MAAM2D,mBAAmB,GAAG1D,WAAW,CAAC0B,KAAK,EAAErB,cAAc,CAACqB,KAAK,CAAC;MACpE,MAAMiC,mBAAmB,GAAG3D,WAAW,CAAC0B,KAAK,EAAEvB,cAAc,CAACuB,KAAK,CAAC;MACpE,MAAMkC,WAAW,GAAG5D,WAAW,CAAC0B,KAAK,EAAEnB,MAAM,CAACmB,KAAK,CAAC;MACpD,OAAAmC,YAAA,CAAAtD,MAAA,EAAAuD,WAAA;QAAA,SACiB,CAAC,cAAc;MAAC,GAAMF,WAAW;QAE5CG,GAAG,EAAEA,CAAA,KAAM1B,KAAK,CAAC0B,GAAG,GAAGN,SAAS,CAAC7B,KAAK,CAAC;QACvCoC,OAAO,EAAEA,CAAA,KACP3B,KAAK,CAAC2B,OAAO,GACX3B,KAAK,CAAC2B,OAAO,CAACP,SAAS,CAAC7B,KAAK,CAAC,GAAAiC,YAAA,CAAAI,SAAA,SAAAJ,YAAA,CAAAvD,eAAA,QAGF+B,KAAK,GAElC;QACH6B,OAAO,EAAEA,CAAA,KACP7B,KAAK,CAAC6B,OAAO,GACX7B,KAAK,CAAC6B,OAAO,CAACT,SAAS,CAAC7B,KAAK,CAAC,GAAAiC,YAAA,CAAAI,SAAA,SAAAJ,YAAA,iBAAAA,YAAA,CAAAxD,cAAA,EAMpBqD,mBAAmB,EADdrB,KAAK,KAIjBA,KAAK,CAAC8B,KAAK,GAAGV,SAAS,CAAC7B,KAAK,CAAC,EAAAiC,YAAA,iBAAAA,YAAA,CAAA1D,cAAA,EAAA2D,WAAA,CAIvBH,mBAAmB;UAAA,SAChBf,KAAK,CAAChB;QAAK,IAFTS,KAAK,KAKjBA,KAAK,CAAC+B,KAAK,GAAGX,SAAS,CAAC7B,KAAK,CAAC,EAC9BS,KAAK,CAACgC,KAAK,GAAGZ,SAAS,CAAC7B,KAAK,CAAC,EAElC;QACH0C,QAAQ,EAAEA,CAAA,KAAMjC,KAAK,CAACiC,QAAQ,GAAGb,SAAS,CAAC7B,KAAK,CAAC;QACjD2C,MAAM,EAAEA,CAAA,KACNlC,KAAK,CAACkC,MAAM,GACVlC,KAAK,CAACkC,MAAM,CAACd,SAAS,CAAC7B,KAAK,CAAC,GAAAiC,YAAA,CAAAzD,iBAAA,QAGlB;UACPoE,OAAO,EAAEnC,KAAK,CAAC,iBAAiB;QAClC,CAAC;MAEJ;IAIX,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}