yuyeon 0.2.1-rc.9 → 0.2.2-rc.0

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 (192) hide show
  1. package/dist/yuyeon.js +1766 -1742
  2. package/dist/yuyeon.umd.cjs +3 -3
  3. package/lib/components/alert/YAlert.mjs +2 -2
  4. package/lib/components/alert/YAlert.mjs.map +1 -1
  5. package/lib/components/alert/YAlert.scss +75 -75
  6. package/lib/components/app/YApp.mjs +2 -2
  7. package/lib/components/app/YApp.mjs.map +1 -1
  8. package/lib/components/badge/YBadge.mjs.map +1 -1
  9. package/lib/components/bench/YBench.mjs +2 -2
  10. package/lib/components/bench/YBench.mjs.map +1 -1
  11. package/lib/components/button/YButton.mjs +2 -2
  12. package/lib/components/button/YButton.mjs.map +1 -1
  13. package/lib/components/button/YButton.scss +128 -128
  14. package/lib/components/card/YCard.mjs.map +1 -1
  15. package/lib/components/card/YCard.scss +45 -45
  16. package/lib/components/card/YCardBody.mjs.map +1 -1
  17. package/lib/components/card/YCardFooter.mjs.map +1 -1
  18. package/lib/components/card/YCardHeader.mjs.map +1 -1
  19. package/lib/components/checkbox/YCheckbox.mjs.map +1 -1
  20. package/lib/components/checkbox/YInputCheckbox.mjs.map +1 -1
  21. package/lib/components/checkbox/YInputCheckbox.scss +84 -84
  22. package/lib/components/checkbox/index.mjs.map +1 -1
  23. package/lib/components/chip/YChip.mjs.map +1 -1
  24. package/lib/components/chip/YChip.scss +36 -36
  25. package/lib/components/date-picker/YDateCalendar.mjs.map +1 -1
  26. package/lib/components/date-picker/YDateCalendar.scss +84 -84
  27. package/lib/components/date-picker/YDatePicker.mjs +8 -2
  28. package/lib/components/date-picker/YDatePicker.mjs.map +1 -1
  29. package/lib/components/date-picker/YDatePickerControl.mjs.map +1 -1
  30. package/lib/components/date-picker/YMonthPicker.mjs +8 -1
  31. package/lib/components/date-picker/YMonthPicker.mjs.map +1 -1
  32. package/lib/components/date-picker/YYearPicker.mjs +4 -0
  33. package/lib/components/date-picker/YYearPicker.mjs.map +1 -1
  34. package/lib/components/dialog/YDialog.mjs.map +1 -1
  35. package/lib/components/dialog/index.mjs.map +1 -1
  36. package/lib/components/divider/YDivider.mjs.map +1 -1
  37. package/lib/components/divider/YDivider.scss +2 -2
  38. package/lib/components/dropdown/YDropdown.mjs.map +1 -1
  39. package/lib/components/dropdown/YDropdown.scss +27 -27
  40. package/lib/components/field-input/YFieldInput.mjs +1 -10
  41. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  42. package/lib/components/field-input/index.mjs.map +1 -1
  43. package/lib/components/form/YForm.mjs.map +1 -1
  44. package/lib/components/hover/YHover.mjs.map +1 -1
  45. package/lib/components/icon/YIcon.mjs.map +1 -1
  46. package/lib/components/icon/YIcon.scss +18 -18
  47. package/lib/components/icons/YIconCheckbox.mjs.map +1 -1
  48. package/lib/components/icons/YIconClear.mjs.map +1 -1
  49. package/lib/components/icons/YIconDropdown.mjs.map +1 -1
  50. package/lib/components/icons/YIconExpand.mjs.map +1 -1
  51. package/lib/components/icons/YIconPageControl.mjs.map +1 -1
  52. package/lib/components/icons/YIconSort.mjs.map +1 -1
  53. package/lib/components/icons/YIconSort.scss +24 -24
  54. package/lib/components/icons/index.mjs.map +1 -1
  55. package/lib/components/img/YImg.mjs +4 -4
  56. package/lib/components/img/YImg.mjs.map +1 -1
  57. package/lib/components/input/YInput.mjs.map +1 -1
  58. package/lib/components/input/YInput.scss +258 -258
  59. package/lib/components/ip-field/YIpv4Field.mjs.map +1 -1
  60. package/lib/components/layer/YLayer.mjs +2 -1
  61. package/lib/components/layer/YLayer.mjs.map +1 -1
  62. package/lib/components/layer/active-stack.mjs.map +1 -1
  63. package/lib/components/layer/base.mjs.map +1 -1
  64. package/lib/components/layer/content.mjs.map +1 -1
  65. package/lib/components/layer/scroll-strategies.mjs.map +1 -1
  66. package/lib/components/list/YList.mjs.map +1 -1
  67. package/lib/components/list/YListItem.mjs.map +1 -1
  68. package/lib/components/loading/YSpinnerRing.mjs.map +1 -1
  69. package/lib/components/menu/YMenu.mjs +2 -2
  70. package/lib/components/menu/YMenu.mjs.map +1 -1
  71. package/lib/components/menu/YMenu.scss +25 -25
  72. package/lib/components/navigation/YNavigation.mjs.map +1 -1
  73. package/lib/components/pagination/YPagination.mjs.map +1 -1
  74. package/lib/components/pagination/YPagination.scss +52 -52
  75. package/lib/components/panel/YDividePanel.mjs.map +1 -1
  76. package/lib/components/plate/YPlate.mjs +2 -2
  77. package/lib/components/plate/YPlate.mjs.map +1 -1
  78. package/lib/components/progress-bar/YProgressBar.mjs.map +1 -1
  79. package/lib/components/progress-bar/YProgressBar.scss +120 -120
  80. package/lib/components/select/YSelect.mjs.map +1 -1
  81. package/lib/components/slider/YSlider.mjs.map +1 -1
  82. package/lib/components/snackbar/YSnackbar.mjs +5 -5
  83. package/lib/components/snackbar/YSnackbar.mjs.map +1 -1
  84. package/lib/components/switch/YSwitch.mjs.map +1 -1
  85. package/lib/components/switch/YSwitch.scss +204 -204
  86. package/lib/components/tab/YTab.mjs.map +1 -1
  87. package/lib/components/tab/YTab.scss +73 -73
  88. package/lib/components/tab/YTabs.mjs.map +1 -1
  89. package/lib/components/tab/YTabs.scss +8 -8
  90. package/lib/components/tab/index.mjs.map +1 -1
  91. package/lib/components/tab/types.mjs.map +1 -1
  92. package/lib/components/table/YDataTable.mjs.map +1 -1
  93. package/lib/components/table/YDataTableBody.mjs.map +1 -1
  94. package/lib/components/table/YDataTableCell.mjs.map +1 -1
  95. package/lib/components/table/YDataTableControl.mjs.map +1 -1
  96. package/lib/components/table/YDataTableHead.mjs +2 -1
  97. package/lib/components/table/YDataTableHead.mjs.map +1 -1
  98. package/lib/components/table/YDataTableLayer.mjs.map +1 -1
  99. package/lib/components/table/YDataTableRow.mjs +1 -1
  100. package/lib/components/table/YDataTableRow.mjs.map +1 -1
  101. package/lib/components/table/YDataTableServer.mjs.map +1 -1
  102. package/lib/components/table/YTable.mjs.map +1 -1
  103. package/lib/components/table/YTable.scss +157 -157
  104. package/lib/components/table/composibles/header.mjs.map +1 -1
  105. package/lib/components/table/composibles/items.mjs +6 -1
  106. package/lib/components/table/composibles/items.mjs.map +1 -1
  107. package/lib/components/table/composibles/options.mjs.map +1 -1
  108. package/lib/components/table/composibles/pagination.mjs.map +1 -1
  109. package/lib/components/table/composibles/selection.mjs +1 -1
  110. package/lib/components/table/composibles/selection.mjs.map +1 -1
  111. package/lib/components/table/composibles/sorted-items.mjs.map +1 -1
  112. package/lib/components/table/composibles/sorting.mjs.map +1 -1
  113. package/lib/components/table/types/header.mjs.map +1 -1
  114. package/lib/components/table/types/index.mjs.map +1 -1
  115. package/lib/components/table/types/row.mjs.map +1 -1
  116. package/lib/components/text-ellipsis/YTextEllipsis.mjs.map +1 -1
  117. package/lib/components/text-ellipsis/YTextEllipsis.scss +43 -43
  118. package/lib/components/text-highlighter/YTextHighlighter.mjs.map +1 -1
  119. package/lib/components/text-interpolation/YTi.mjs.map +1 -1
  120. package/lib/components/textarea/YTextarea.mjs.map +1 -1
  121. package/lib/components/toggle-button/YToggleButton.mjs.map +1 -1
  122. package/lib/components/tooltip/YTooltip.mjs +2 -2
  123. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  124. package/lib/components/transitions/expand-transition.mjs +26 -6
  125. package/lib/components/transitions/expand-transition.mjs.map +1 -1
  126. package/lib/components/tree-view/YTreeView.mjs.map +1 -1
  127. package/lib/components/tree-view/YTreeView.scss +81 -81
  128. package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
  129. package/lib/components/tree-view/types.mjs.map +1 -1
  130. package/lib/components/tree-view/util.mjs.map +1 -1
  131. package/lib/composables/choice.mjs.map +1 -1
  132. package/lib/composables/communication.mjs.map +1 -1
  133. package/lib/composables/component.mjs.map +1 -1
  134. package/lib/composables/coordinate/arrangement.mjs.map +1 -1
  135. package/lib/composables/coordinate/levitation.mjs +2 -2
  136. package/lib/composables/coordinate/levitation.mjs.map +1 -1
  137. package/lib/composables/coordinate/utils/point.mjs.map +1 -1
  138. package/lib/composables/date/factory.mjs.map +1 -1
  139. package/lib/composables/date/index.mjs.map +1 -1
  140. package/lib/composables/date/setting.mjs.map +1 -1
  141. package/lib/composables/date/types.mjs.map +1 -1
  142. package/lib/composables/defaults/index.mjs.map +1 -1
  143. package/lib/composables/defaults/share.mjs.map +1 -1
  144. package/lib/composables/dimension.mjs.map +1 -1
  145. package/lib/composables/focus.mjs.map +1 -1
  146. package/lib/composables/form.mjs.map +1 -1
  147. package/lib/composables/i18n/index.mjs.map +1 -1
  148. package/lib/composables/icon.mjs.map +1 -1
  149. package/lib/composables/layer-group.mjs +2 -2
  150. package/lib/composables/layer-group.mjs.map +1 -1
  151. package/lib/composables/layout.mjs.map +1 -1
  152. package/lib/composables/list-items.mjs.map +1 -1
  153. package/lib/composables/progress.mjs.map +1 -1
  154. package/lib/composables/ref.mjs.map +1 -1
  155. package/lib/composables/resize-observer.mjs.map +1 -1
  156. package/lib/composables/scope.mjs.map +1 -1
  157. package/lib/composables/theme/factory.mjs.map +1 -1
  158. package/lib/composables/theme/index.mjs.map +1 -1
  159. package/lib/composables/theme/setting.mjs.map +1 -1
  160. package/lib/composables/timing.mjs.map +1 -1
  161. package/lib/composables/transition.mjs.map +1 -1
  162. package/lib/composables/validation.mjs.map +1 -1
  163. package/lib/composables/vue-router.mjs.map +1 -1
  164. package/lib/index.mjs.map +1 -1
  165. package/lib/util/anchor.mjs.map +1 -1
  166. package/lib/util/component/component.mjs.map +1 -1
  167. package/lib/util/component/index.mjs.map +1 -1
  168. package/lib/util/component/inject-self.mjs.map +1 -1
  169. package/lib/util/component/props.mjs.map +1 -1
  170. package/lib/util/date/index.mjs.map +1 -1
  171. package/lib/util/reactivity.mjs +3 -3
  172. package/lib/util/reactivity.mjs.map +1 -1
  173. package/lib/util/rect.mjs.map +1 -1
  174. package/lib/util/validation.mjs.map +1 -1
  175. package/package.json +1 -1
  176. package/types/components/date-picker/YMonthPicker.d.ts +1 -1
  177. package/types/components/date-picker/YYearPicker.d.ts +1 -1
  178. package/types/components/dialog/YDialog.d.ts +7 -0
  179. package/types/components/dropdown/YDropdown.d.ts +6 -0
  180. package/types/components/layer/YLayer.d.ts +6 -0
  181. package/types/components/menu/YMenu.d.ts +3 -0
  182. package/types/components/select/YSelect.d.ts +31 -0
  183. package/types/components/snackbar/YSnackbar.d.ts +6 -0
  184. package/types/components/table/YDataTable.d.ts +10 -3
  185. package/types/components/table/YDataTableServer.d.ts +10 -3
  186. package/types/components/table/composibles/header.d.ts +8 -0
  187. package/types/components/table/composibles/selection.d.ts +2 -2
  188. package/types/components/table/types/header.d.ts +1 -0
  189. package/types/components/tooltip/YTooltip.d.ts +4 -0
  190. package/types/components/transitions/expand-transition.d.ts +3 -0
  191. package/types/components/transitions/index.d.ts +6 -0
  192. package/types/composables/layer-group.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableServer.mjs","names":["computed","provide","ref","toRef","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","toStyleSizeValue","pressDataTableProps","YDataTableBody","YDataTableControl","YDataTableHead","YDataTableLayer","YTable","createHeader","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","provideSelection","createSorting","provideSorting","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","setPage","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","headRect","resizeObservedRef","headObserveRef","entries","requestAnimationFrame","contentRect","search","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","length","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend"],"sources":["../../../src/components/table/YDataTableServer.tsx"],"sourcesContent":["import { type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\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 { useItems } from './composibles/items';\nimport { useOptions } from './composibles/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n} from './composibles/pagination';\nimport { provideSelection } from './composibles/selection';\nimport { createSorting, provideSorting } from './composibles/sorting';\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, setPage } = 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 const headRect = ref<DOMRectReadOnly>();\n const { resizeObservedRef: headObserveRef } = useResizeObserver(\n (entries) => {\n requestAnimationFrame(\n () => (headRect.value = entries?.[0].contentRect),\n );\n },\n );\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 headRect,\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 setPage,\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\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\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 ref={headObserveRef}>\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":"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"}
1
+ {"version":3,"file":"YDataTableServer.mjs","names":["computed","provide","ref","toRef","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","toStyleSizeValue","pressDataTableProps","YDataTableBody","YDataTableControl","YDataTableHead","YDataTableLayer","YTable","createHeader","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","provideSelection","createSorting","provideSorting","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","setPage","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","headRect","resizeObservedRef","headObserveRef","entries","requestAnimationFrame","contentRect","search","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","length","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend"],"sources":["../../../src/components/table/YDataTableServer.tsx"],"sourcesContent":["import { type PropType, computed, provide, ref, toRef } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { useResizeObserver } from '@/composables/resize-observer';\r\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\r\nimport { toStyleSizeValue } from '@/util/ui';\r\n\r\nimport { pressDataTableProps } from './YDataTable';\r\nimport { YDataTableBody } from './YDataTableBody';\r\nimport { YDataTableControl } from './YDataTableControl';\r\nimport { YDataTableHead } from './YDataTableHead';\r\nimport { YDataTableLayer } from './YDataTableLayer';\r\nimport { YTable } from './YTable';\r\nimport { createHeader } from './composibles/header';\r\nimport { useItems } from './composibles/items';\r\nimport { useOptions } from './composibles/options';\r\nimport {\r\n createPagination,\r\n pressDataTablePaginationProps,\r\n providePagination,\r\n} from './composibles/pagination';\r\nimport { provideSelection } from './composibles/selection';\r\nimport { createSorting, provideSorting } from './composibles/sorting';\r\nimport { YDataTableSlotProps } from './types';\r\n\r\nexport const pressDataTableServerProps = propsFactory(\r\n {\r\n total: {\r\n type: [Number, String] as PropType<number | string>,\r\n required: true,\r\n },\r\n ...pressDataTablePaginationProps(),\r\n ...pressDataTableProps(),\r\n },\r\n 'YDataTableServer',\r\n);\r\n\r\nexport const YDataTableServer = defineComponent({\r\n name: 'YDataTableServer',\r\n components: {\r\n YTable,\r\n YDataTableLayer,\r\n YDataTableHead,\r\n YDataTableBody,\r\n YDataTableControl,\r\n },\r\n props: {\r\n ...pressDataTableServerProps(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: any[]) => true,\r\n 'update:page': (page: number) => true,\r\n 'update:pageSize': (pageSize: number) => true,\r\n 'update:sortBy': (sortBy: any) => true,\r\n 'update:options': (options: any) => true,\r\n 'click:row': (e: Event, value: { row: any }) => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const { page, pageSize } = createPagination(props);\r\n const { sortBy, multiSort } = createSorting(props);\r\n const total = computed(() => parseInt(props.total as string));\r\n const { columns, headers } = createHeader(props, {\r\n enableSelect: toRef(props, 'enableSelect'),\r\n });\r\n const { items } = useItems(props, columns);\r\n\r\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\r\n const { pageLength, setPageSize, setPage } = providePagination({\r\n page,\r\n pageSize,\r\n total,\r\n });\r\n const {\r\n isSelected,\r\n select,\r\n selectAll,\r\n toggleSelect,\r\n someSelected,\r\n allSelected,\r\n } = provideSelection(props, { allItems: items, pageItems: items });\r\n\r\n const headRect = ref<DOMRectReadOnly>();\r\n const { resizeObservedRef: headObserveRef } = useResizeObserver(\r\n (entries) => {\r\n requestAnimationFrame(\r\n () => (headRect.value = entries?.[0].contentRect),\r\n );\r\n },\r\n );\r\n\r\n useOptions(\r\n {\r\n page,\r\n pageSize,\r\n search: toRef(props, 'search'),\r\n sortBy,\r\n },\r\n emit,\r\n );\r\n\r\n provide('y-data-table', {\r\n toggleSort,\r\n sortBy,\r\n headRect,\r\n });\r\n\r\n const slotProps = computed<YDataTableSlotProps>(() => {\r\n return {\r\n // pagination\r\n page: page.value,\r\n pageSize: pageSize.value,\r\n pageLength: pageLength.value,\r\n setPageSize,\r\n setPage,\r\n // sorting\r\n sortBy: sortBy.value,\r\n toggleSort,\r\n // selection\r\n someSelected: someSelected.value,\r\n allSelected: allSelected.value,\r\n isSelected,\r\n select,\r\n selectAll,\r\n toggleSelect,\r\n //\r\n items: items.value,\r\n columns: columns.value,\r\n headers: headers.value,\r\n };\r\n });\r\n\r\n useRender(() => {\r\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\r\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\r\n const yTableProps = chooseProps(props, YTable.props);\r\n return (\r\n <YTable\r\n class={[\r\n 'y-data-table',\r\n {\r\n 'y-data-table--no-data':\r\n !props.loading && props.items.length < 1 && !props.hideNoData,\r\n },\r\n ]}\r\n {...yTableProps}\r\n style={{\r\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\r\n }}\r\n >\r\n {{\r\n top: () => slots.top?.(slotProps.value),\r\n leading: () =>\r\n slots.leading ? (\r\n slots.leading(slotProps.value)\r\n ) : (\r\n <>\r\n <YDataTableLayer v-slots={slots}></YDataTableLayer>\r\n </>\r\n ),\r\n default: () =>\r\n slots.default ? (\r\n slots.default(slotProps.value)\r\n ) : (\r\n <>\r\n <thead ref={headObserveRef}>\r\n <YDataTableHead\r\n v-slots={slots}\r\n {...yDataTableHeadProps}\r\n ></YDataTableHead>\r\n </thead>\r\n {slots.thead?.(slotProps.value)}\r\n <tbody>\r\n <YDataTableBody\r\n v-slots={slots}\r\n {...yDataTableBodyProps}\r\n items={items.value}\r\n ></YDataTableBody>\r\n </tbody>\r\n {slots.tbody?.(slotProps.value)}\r\n {slots.tfoot?.(slotProps.value)}\r\n </>\r\n ),\r\n trailing: () => slots.trailing?.(slotProps.value),\r\n bottom: () =>\r\n slots.bottom ? (\r\n slots.bottom(slotProps.value)\r\n ) : (\r\n <YDataTableControl\r\n v-slots={{\r\n prepend: slots['control.prepend'],\r\n }}\r\n ></YDataTableControl>\r\n ),\r\n }}\r\n </YTable>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableServer = InstanceType<typeof YDataTableServer>;\r\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"YTable.mjs","names":["provide","useRectMeasure","useRender","defineComponent","propsFactory","toStyleSizeValue","pressYTableProps","tag","type","String","default","fixedHead","Boolean","height","Number","flexHeight","onScroll","Function","YTable","name","props","emits","setup","_ref","slots","emit","containerRef","wrapperRef","tableRef","containerRect","wrapperRect","e","ElTag","containerHeight","value","_createVNode","width","top","leading","trailing","container","bottom"],"sources":["../../../src/components/table/YTable.tsx"],"sourcesContent":["import { type PropType, provide } from 'vue';\n\nimport { useRectMeasure } from '@/components/table/composibles/measure';\nimport { useRender } from '@/composables/component';\nimport { defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport './YTable.scss';\n\nexport const pressYTableProps = propsFactory(\n {\n tag: {\n type: String as PropType<string>,\n default: 'div',\n },\n fixedHead: {\n type: Boolean as PropType<boolean>,\n },\n height: {\n type: [Number, String] as PropType<number | string>,\n },\n flexHeight: {\n type: Boolean as PropType<boolean>,\n },\n onScroll: Function as PropType<(e: Event) => void>,\n },\n 'YTable',\n);\n\nexport const YTable = defineComponent({\n name: 'YTable',\n props: {\n ...pressYTableProps(),\n },\n emits: ['scroll'],\n setup(props, { slots, emit }) {\n const { containerRef, wrapperRef, tableRef, containerRect, wrapperRect } =\n useRectMeasure();\n\n provide('YTable', { containerRect });\n\n function onScroll(e: Event) {\n emit('scroll', e);\n }\n\n useRender(() => {\n const ElTag = (props.tag as keyof HTMLElementTagNameMap) ?? 'div';\n const containerHeight = props.flexHeight\n ? containerRect.value?.height ?? props.height\n : props.height;\n return (\n <ElTag\n class={[\n 'y-table',\n {\n 'y-table--fixed-head': props.fixedHead,\n 'y-table--fixed-height': props.flexHeight || props.height,\n 'y-table--flex-height': props.flexHeight,\n },\n ]}\n style={{\n '--y-table-container-width': toStyleSizeValue(\n containerRect.value?.width,\n ),\n '--y-table-wrapper-width': toStyleSizeValue(\n wrapperRect.value?.width,\n ),\n }}\n >\n {slots.top?.()}\n {slots.default ? (\n <div ref={containerRef} class={['y-table__container']}>\n {slots.leading?.()}\n <div\n ref={wrapperRef}\n class={['y-table__wrapper']}\n style={{\n height: toStyleSizeValue(containerHeight),\n }}\n onScroll={onScroll}\n >\n <table ref={tableRef}>{slots.default()}</table>\n </div>\n {slots.trailing?.()}\n </div>\n ) : (\n slots.container?.(containerRef, containerRect)\n )}\n {slots.bottom?.()}\n </ElTag>\n );\n });\n },\n});\n\nexport type YTable = InstanceType<typeof YTable>;\n"],"mappings":";AAAA,SAAwBA,OAAO,QAAQ,KAAK;AAAC,SAEpCC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,eAAe,EAAEC,YAAY;AAAA,SAC7BC,gBAAgB;AAEzB;AAEA,OAAO,MAAMC,gBAAgB,GAAGF,YAAY,CAC1C;EACEG,GAAG,EAAE;IACHC,IAAI,EAAEC,MAA0B;IAChCC,OAAO,EAAE;EACX,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAEI;EACR,CAAC;EACDC,MAAM,EAAE;IACNL,IAAI,EAAE,CAACM,MAAM,EAAEL,MAAM;EACvB,CAAC;EACDM,UAAU,EAAE;IACVP,IAAI,EAAEI;EACR,CAAC;EACDI,QAAQ,EAAEC;AACZ,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAMC,MAAM,GAAGf,eAAe,CAAC;EACpCgB,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE;IACL,GAAGd,gBAAgB,CAAC;EACtB,CAAC;EACDe,KAAK,EAAE,CAAC,QAAQ,CAAC;EACjBC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC1B,MAAM;MAAEG,YAAY;MAAEC,UAAU;MAAEC,QAAQ;MAAEC,aAAa;MAAEC;IAAY,CAAC,GACtE7B,cAAc,CAAC,CAAC;IAElBD,OAAO,CAAC,QAAQ,EAAE;MAAE6B;IAAc,CAAC,CAAC;IAEpC,SAASb,QAAQA,CAACe,CAAQ,EAAE;MAC1BN,IAAI,CAAC,QAAQ,EAAEM,CAAC,CAAC;IACnB;IAEA7B,SAAS,CAAC,MAAM;MACd,MAAM8B,KAAK,GAAIZ,KAAK,CAACb,GAAG,IAAoC,KAAK;MACjE,MAAM0B,eAAe,GAAGb,KAAK,CAACL,UAAU,GACpCc,aAAa,CAACK,KAAK,EAAErB,MAAM,IAAIO,KAAK,CAACP,MAAM,GAC3CO,KAAK,CAACP,MAAM;MAChB,OAAAsB,YAAA,CAAAH,KAAA;QAAA,SAEW,CACL,SAAS,EACT;UACE,qBAAqB,EAAEZ,KAAK,CAACT,SAAS;UACtC,uBAAuB,EAAES,KAAK,CAACL,UAAU,IAAIK,KAAK,CAACP,MAAM;UACzD,sBAAsB,EAAEO,KAAK,CAACL;QAChC,CAAC,CACF;QAAA,SACM;UACL,2BAA2B,EAAEV,gBAAgB,CAC3CwB,aAAa,CAACK,KAAK,EAAEE,KACvB,CAAC;UACD,yBAAyB,EAAE/B,gBAAgB,CACzCyB,WAAW,CAACI,KAAK,EAAEE,KACrB;QACF;MAAC;QAAA1B,OAAA,EAAAA,CAAA,MAEAc,KAAK,CAACa,GAAG,GAAG,CAAC,EACbb,KAAK,CAACd,OAAO,GAAAyB,YAAA;UAAA,OACFT,YAAY;UAAA,SAAS,CAAC,oBAAoB;QAAC,IAClDF,KAAK,CAACc,OAAO,GAAG,CAAC,EAAAH,YAAA;UAAA,OAEXR,UAAU;UAAA,SACR,CAAC,kBAAkB,CAAC;UAAA,SACpB;YACLd,MAAM,EAAER,gBAAgB,CAAC4B,eAAe;UAC1C,CAAC;UAAA,YACSjB;QAAQ,IAAAmB,YAAA;UAAA,OAENP;QAAQ,IAAGJ,KAAK,CAACd,OAAO,CAAC,CAAC,MAEvCc,KAAK,CAACe,QAAQ,GAAG,CAAC,KAGrBf,KAAK,CAACgB,SAAS,GAAGd,YAAY,EAAEG,aAAa,CAC9C,EACAL,KAAK,CAACiB,MAAM,GAAG,CAAC;MAAA;IAGvB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YTable.mjs","names":["provide","useRectMeasure","useRender","defineComponent","propsFactory","toStyleSizeValue","pressYTableProps","tag","type","String","default","fixedHead","Boolean","height","Number","flexHeight","onScroll","Function","YTable","name","props","emits","setup","_ref","slots","emit","containerRef","wrapperRef","tableRef","containerRect","wrapperRect","e","ElTag","containerHeight","value","_createVNode","width","top","leading","trailing","container","bottom"],"sources":["../../../src/components/table/YTable.tsx"],"sourcesContent":["import { type PropType, provide } from 'vue';\r\n\r\nimport { useRectMeasure } from '@/components/table/composibles/measure';\r\nimport { useRender } from '@/composables/component';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\nimport { toStyleSizeValue } from '@/util/ui';\r\n\r\nimport './YTable.scss';\r\n\r\nexport const pressYTableProps = propsFactory(\r\n {\r\n tag: {\r\n type: String as PropType<string>,\r\n default: 'div',\r\n },\r\n fixedHead: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n height: {\r\n type: [Number, String] as PropType<number | string>,\r\n },\r\n flexHeight: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n onScroll: Function as PropType<(e: Event) => void>,\r\n },\r\n 'YTable',\r\n);\r\n\r\nexport const YTable = defineComponent({\r\n name: 'YTable',\r\n props: {\r\n ...pressYTableProps(),\r\n },\r\n emits: ['scroll'],\r\n setup(props, { slots, emit }) {\r\n const { containerRef, wrapperRef, tableRef, containerRect, wrapperRect } =\r\n useRectMeasure();\r\n\r\n provide('YTable', { containerRect });\r\n\r\n function onScroll(e: Event) {\r\n emit('scroll', e);\r\n }\r\n\r\n useRender(() => {\r\n const ElTag = (props.tag as keyof HTMLElementTagNameMap) ?? 'div';\r\n const containerHeight = props.flexHeight\r\n ? containerRect.value?.height ?? props.height\r\n : props.height;\r\n return (\r\n <ElTag\r\n class={[\r\n 'y-table',\r\n {\r\n 'y-table--fixed-head': props.fixedHead,\r\n 'y-table--fixed-height': props.flexHeight || props.height,\r\n 'y-table--flex-height': props.flexHeight,\r\n },\r\n ]}\r\n style={{\r\n '--y-table-container-width': toStyleSizeValue(\r\n containerRect.value?.width,\r\n ),\r\n '--y-table-wrapper-width': toStyleSizeValue(\r\n wrapperRect.value?.width,\r\n ),\r\n }}\r\n >\r\n {slots.top?.()}\r\n {slots.default ? (\r\n <div ref={containerRef} class={['y-table__container']}>\r\n {slots.leading?.()}\r\n <div\r\n ref={wrapperRef}\r\n class={['y-table__wrapper']}\r\n style={{\r\n height: toStyleSizeValue(containerHeight),\r\n }}\r\n onScroll={onScroll}\r\n >\r\n <table ref={tableRef}>{slots.default()}</table>\r\n </div>\r\n {slots.trailing?.()}\r\n </div>\r\n ) : (\r\n slots.container?.(containerRef, containerRect)\r\n )}\r\n {slots.bottom?.()}\r\n </ElTag>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YTable = InstanceType<typeof YTable>;\r\n"],"mappings":";AAAA,SAAwBA,OAAO,QAAQ,KAAK;AAAC,SAEpCC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,eAAe,EAAEC,YAAY;AAAA,SAC7BC,gBAAgB;AAEzB;AAEA,OAAO,MAAMC,gBAAgB,GAAGF,YAAY,CAC1C;EACEG,GAAG,EAAE;IACHC,IAAI,EAAEC,MAA0B;IAChCC,OAAO,EAAE;EACX,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAEI;EACR,CAAC;EACDC,MAAM,EAAE;IACNL,IAAI,EAAE,CAACM,MAAM,EAAEL,MAAM;EACvB,CAAC;EACDM,UAAU,EAAE;IACVP,IAAI,EAAEI;EACR,CAAC;EACDI,QAAQ,EAAEC;AACZ,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAMC,MAAM,GAAGf,eAAe,CAAC;EACpCgB,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE;IACL,GAAGd,gBAAgB,CAAC;EACtB,CAAC;EACDe,KAAK,EAAE,CAAC,QAAQ,CAAC;EACjBC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC1B,MAAM;MAAEG,YAAY;MAAEC,UAAU;MAAEC,QAAQ;MAAEC,aAAa;MAAEC;IAAY,CAAC,GACtE7B,cAAc,CAAC,CAAC;IAElBD,OAAO,CAAC,QAAQ,EAAE;MAAE6B;IAAc,CAAC,CAAC;IAEpC,SAASb,QAAQA,CAACe,CAAQ,EAAE;MAC1BN,IAAI,CAAC,QAAQ,EAAEM,CAAC,CAAC;IACnB;IAEA7B,SAAS,CAAC,MAAM;MACd,MAAM8B,KAAK,GAAIZ,KAAK,CAACb,GAAG,IAAoC,KAAK;MACjE,MAAM0B,eAAe,GAAGb,KAAK,CAACL,UAAU,GACpCc,aAAa,CAACK,KAAK,EAAErB,MAAM,IAAIO,KAAK,CAACP,MAAM,GAC3CO,KAAK,CAACP,MAAM;MAChB,OAAAsB,YAAA,CAAAH,KAAA;QAAA,SAEW,CACL,SAAS,EACT;UACE,qBAAqB,EAAEZ,KAAK,CAACT,SAAS;UACtC,uBAAuB,EAAES,KAAK,CAACL,UAAU,IAAIK,KAAK,CAACP,MAAM;UACzD,sBAAsB,EAAEO,KAAK,CAACL;QAChC,CAAC,CACF;QAAA,SACM;UACL,2BAA2B,EAAEV,gBAAgB,CAC3CwB,aAAa,CAACK,KAAK,EAAEE,KACvB,CAAC;UACD,yBAAyB,EAAE/B,gBAAgB,CACzCyB,WAAW,CAACI,KAAK,EAAEE,KACrB;QACF;MAAC;QAAA1B,OAAA,EAAAA,CAAA,MAEAc,KAAK,CAACa,GAAG,GAAG,CAAC,EACbb,KAAK,CAACd,OAAO,GAAAyB,YAAA;UAAA,OACFT,YAAY;UAAA,SAAS,CAAC,oBAAoB;QAAC,IAClDF,KAAK,CAACc,OAAO,GAAG,CAAC,EAAAH,YAAA;UAAA,OAEXR,UAAU;UAAA,SACR,CAAC,kBAAkB,CAAC;UAAA,SACpB;YACLd,MAAM,EAAER,gBAAgB,CAAC4B,eAAe;UAC1C,CAAC;UAAA,YACSjB;QAAQ,IAAAmB,YAAA;UAAA,OAENP;QAAQ,IAAGJ,KAAK,CAACd,OAAO,CAAC,CAAC,MAEvCc,KAAK,CAACe,QAAQ,GAAG,CAAC,KAGrBf,KAAK,CAACgB,SAAS,GAAGd,YAAY,EAAEG,aAAa,CAC9C,EACAL,KAAK,CAACiB,MAAM,GAAG,CAAC;MAAA;IAGvB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -1,157 +1,157 @@
1
- $table-cell-padding: 0 16px !default;
2
- $table-head-background: var(--y-theme-surface-variant, #dfe3eb) !default;
3
- $table-cell-border-bottom-color: rgba(
4
- var(--y-theme-outline-rgb),
5
- var(--y-theme-outline-opacity)
6
- ) !default;
7
-
8
- .y-table {
9
- --y-table-border-bottom-color: #{$table-cell-border-bottom-color};
10
-
11
- display: flex;
12
- flex-direction: column;
13
-
14
- &--fixed-height &__container > &__wrapper {
15
- overflow-y: auto;
16
- }
17
-
18
- &--flex-height {
19
- //flex-grow: 1;
20
- min-height: 0;
21
- }
22
-
23
- &--flex-height > &__container {
24
- flex: 1 1;
25
- min-height: 0;
26
- position: relative;
27
- }
28
-
29
- &__wrapper > table {
30
- width: 100%;
31
- border-spacing: 0;
32
- }
33
-
34
- &--fixed-head &__container > &__wrapper > table > thead > tr > th {
35
- position: sticky;
36
- top: 0;
37
- }
38
-
39
- &--fixed-head.y-table &__container &__wrapper > table > thead {
40
- background: $table-head-background;
41
-
42
- > tr > th {
43
- z-index: 1;
44
- background: $table-head-background;
45
- }
46
- }
47
-
48
- .y-table__wrapper {
49
- > table {
50
- font-size: 0.875rem;
51
-
52
- > thead,
53
- > tbody,
54
- > tfoot {
55
- > tr {
56
- > th,
57
- > td {
58
- padding: $table-cell-padding;
59
- }
60
- }
61
- }
62
-
63
- > thead > tr {
64
- > th {
65
- height: 56px;
66
- text-align: left;
67
- border-bottom: thin solid var(--y-table-border-bottom-color);
68
- user-select: none;
69
- }
70
- }
71
-
72
- > tbody > tr {
73
- &:not(:last-child) {
74
- > td {
75
- border-bottom: thin solid var(--y-table-border-bottom-color);
76
- }
77
- }
78
- > td {
79
- height: 54px;
80
- }
81
- }
82
- }
83
- }
84
- }
85
-
86
- .y-data-table-cell {
87
- &--align-end {
88
- text-align: end;
89
-
90
- .y-data-table-header__content {
91
- justify-content: flex-end;
92
- }
93
- }
94
- }
95
-
96
- .y-data-table-header {
97
- &__content {
98
- display: flex;
99
- align-items: center;
100
- }
101
-
102
- &__sorting-icon {
103
- display: inline-flex;
104
- width: 1em;
105
- height: 1em;
106
- margin-left: 4px;
107
- cursor: pointer;
108
-
109
- svg {
110
- width: 1em;
111
- height: 1em;
112
- }
113
-
114
- &--disabled {
115
- opacity: 0.08;
116
- cursor: default;
117
- }
118
- }
119
- }
120
-
121
- .y-data-table-header--select,
122
- .y-data-table-data--select {
123
- > .y-icon-checkbox {
124
- &:not(&--disabled) {
125
- cursor: pointer;
126
- }
127
- }
128
- }
129
-
130
- .y-data-table-layer {
131
- position: absolute;
132
- top: 0;
133
- right: 0;
134
- bottom: 0;
135
- left: 0;
136
- pointer-events: none;
137
- overflow-y: clip;
138
- overflow-x: visible;
139
- z-index: 50;
140
- margin-right: calc(100% - var(--y-table-wrapper-width, 100%));
141
-
142
- &__head {
143
- position: absolute;
144
- top: 0;
145
- right: 0;
146
- left: 0;
147
- height: var(--y-table-head-height, 48px);
148
- }
149
-
150
- &__body {
151
- position: absolute;
152
- top: var(--y-table-head-height, 48px);
153
- right: 0;
154
- left: 0;
155
- bottom: 0;
156
- }
157
- }
1
+ $table-cell-padding: 0 16px !default;
2
+ $table-head-background: var(--y-theme-surface-variant, #dfe3eb) !default;
3
+ $table-cell-border-bottom-color: rgba(
4
+ var(--y-theme-outline-rgb),
5
+ var(--y-theme-outline-opacity)
6
+ ) !default;
7
+
8
+ .y-table {
9
+ --y-table-border-bottom-color: #{$table-cell-border-bottom-color};
10
+
11
+ display: flex;
12
+ flex-direction: column;
13
+
14
+ &--fixed-height &__container > &__wrapper {
15
+ overflow-y: auto;
16
+ }
17
+
18
+ &--flex-height {
19
+ //flex-grow: 1;
20
+ min-height: 0;
21
+ }
22
+
23
+ &--flex-height > &__container {
24
+ flex: 1 1;
25
+ min-height: 0;
26
+ position: relative;
27
+ }
28
+
29
+ &__wrapper > table {
30
+ width: 100%;
31
+ border-spacing: 0;
32
+ }
33
+
34
+ &--fixed-head &__container > &__wrapper > table > thead > tr > th {
35
+ position: sticky;
36
+ top: 0;
37
+ }
38
+
39
+ &--fixed-head.y-table &__container &__wrapper > table > thead {
40
+ background: $table-head-background;
41
+
42
+ > tr > th {
43
+ z-index: 1;
44
+ background: $table-head-background;
45
+ }
46
+ }
47
+
48
+ .y-table__wrapper {
49
+ > table {
50
+ font-size: 0.875rem;
51
+
52
+ > thead,
53
+ > tbody,
54
+ > tfoot {
55
+ > tr {
56
+ > th,
57
+ > td {
58
+ padding: $table-cell-padding;
59
+ }
60
+ }
61
+ }
62
+
63
+ > thead > tr {
64
+ > th {
65
+ height: 56px;
66
+ text-align: left;
67
+ border-bottom: thin solid var(--y-table-border-bottom-color);
68
+ user-select: none;
69
+ }
70
+ }
71
+
72
+ > tbody > tr {
73
+ &:not(:last-child) {
74
+ > td {
75
+ border-bottom: thin solid var(--y-table-border-bottom-color);
76
+ }
77
+ }
78
+ > td {
79
+ height: 54px;
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+
86
+ .y-data-table-cell {
87
+ &--align-end {
88
+ text-align: end;
89
+
90
+ .y-data-table-header__content {
91
+ justify-content: flex-end;
92
+ }
93
+ }
94
+ }
95
+
96
+ .y-data-table-header {
97
+ &__content {
98
+ display: flex;
99
+ align-items: center;
100
+ }
101
+
102
+ &__sorting-icon {
103
+ display: inline-flex;
104
+ width: 1em;
105
+ height: 1em;
106
+ margin-left: 4px;
107
+ cursor: pointer;
108
+
109
+ svg {
110
+ width: 1em;
111
+ height: 1em;
112
+ }
113
+
114
+ &--disabled {
115
+ opacity: 0.08;
116
+ cursor: default;
117
+ }
118
+ }
119
+ }
120
+
121
+ .y-data-table-header--select,
122
+ .y-data-table-data--select {
123
+ > .y-icon-checkbox {
124
+ &:not(&--disabled) {
125
+ cursor: pointer;
126
+ }
127
+ }
128
+ }
129
+
130
+ .y-data-table-layer {
131
+ position: absolute;
132
+ top: 0;
133
+ right: 0;
134
+ bottom: 0;
135
+ left: 0;
136
+ pointer-events: none;
137
+ overflow-y: clip;
138
+ overflow-x: visible;
139
+ z-index: 50;
140
+ margin-right: calc(100% - var(--y-table-wrapper-width, 100%));
141
+
142
+ &__head {
143
+ position: absolute;
144
+ top: 0;
145
+ right: 0;
146
+ left: 0;
147
+ height: var(--y-table-head-height, 48px);
148
+ }
149
+
150
+ &__body {
151
+ position: absolute;
152
+ top: var(--y-table-head-height, 48px);
153
+ right: 0;
154
+ left: 0;
155
+ bottom: 0;
156
+ }
157
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"header.mjs","names":["inject","provide","ref","watchEffect","getRangeArr","propsFactory","pressDataTableHeader","headers","type","Array","default","Y_DATA_TABLE_HEADER_KEY","Symbol","for","createHeader","props","options","columns","rows","length","flat","flatMap","row","index","map","column","rowIndex","rowCount","defaultHeader","text","sortable","defaultActionHeader","width","enableSelect","value","foundIndex","findIndex","_ref","key","fixed","some","_ref2","unshift","rowspan","splice","fixedRows","fixedOffsets","fill","forEach","_ref3","i","push","fixedOffset","Number","lastFixed","seen","Set","filtered","has","add","at","data","useHeader","Error","description"],"sources":["../../../../src/components/table/composibles/header.ts"],"sourcesContent":["import { type DeepReadonly, type InjectionKey, type PropType, type Ref, inject, provide, ref, watchEffect } from 'vue';\n\n\n\nimport { getRangeArr } from '@/util/common';\nimport { propsFactory } from '@/util/component';\n\n\n\nimport { type DataTableHeader, type InternalDataTableHeader } from '../types';\n\n\nexport const pressDataTableHeader = propsFactory(\n {\n headers: {\n type: Array as PropType<DeepReadonly<DataTableHeader[]>>,\n default: () => [],\n },\n },\n 'YDataTable--header',\n);\n\nexport const Y_DATA_TABLE_HEADER_KEY: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>;\n columns: Ref<InternalDataTableHeader[]>;\n}> = Symbol.for('yuyeon.data-table.header');\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[]> | undefined;\n};\n\nexport function createHeader(\n props: HeaderProps,\n options?: {\n enableSelect?: Ref<boolean>;\n },\n) {\n const headers = ref<InternalDataTableHeader[][]>([]);\n const columns = ref<InternalDataTableHeader[]>([]);\n\n watchEffect(() => {\n const rows = props.headers?.length\n ? [props.headers as DataTableHeader[]]\n : [];\n const flat = rows.flatMap((row, index) =>\n row.map((column) => ({ column, rowIndex: index })),\n );\n const rowCount = rows.length;\n const defaultHeader = { text: '', sortable: false };\n const defaultActionHeader = { ...defaultHeader, width: 48 };\n\n if (options?.enableSelect?.value) {\n const foundIndex = flat.findIndex(\n ({ column }) => column.key === 'data-table-select',\n );\n if (foundIndex < 0) {\n const fixed = flat.some(({ column }) => !!column?.fixed);\n flat.unshift({\n column: {\n ...defaultActionHeader,\n key: 'data-table-select',\n rowspan: rowCount,\n fixed,\n },\n rowIndex: 0,\n });\n } else {\n flat.splice(foundIndex, 1, {\n column: {\n ...defaultActionHeader,\n ...flat[foundIndex].column,\n },\n rowIndex: flat[foundIndex].rowIndex,\n });\n }\n }\n\n const fixedRows: InternalDataTableHeader[][] = getRangeArr(rowCount).map(\n () => [],\n );\n const fixedOffsets = getRangeArr(rowCount).fill(0);\n\n flat.forEach(({ column, rowIndex }) => {\n const { key } = column;\n for (\n let i = rowIndex;\n i <= rowIndex + (column.rowspan ?? 1) - 1;\n i += 1\n ) {\n fixedRows[i].push({\n ...column,\n key,\n fixedOffset: fixedOffsets[i],\n sortable: column.sortable ?? !!key,\n });\n fixedOffsets[i] += Number(column.width ?? 0);\n }\n });\n\n fixedRows.forEach((row) => {\n for (let i = row.length; (i -= 1); i >= 0) {\n if (row[i].fixed) {\n row[i].lastFixed = true;\n return;\n }\n }\n });\n\n const seen = new Set();\n headers.value = fixedRows.map((row) => {\n const filtered = [];\n for (const column of row) {\n if (!seen.has(column.key)) {\n seen.add(column.key);\n filtered.push(column);\n }\n }\n return filtered;\n });\n\n columns.value = fixedRows.at(-1) ?? [];\n });\n\n const data = { headers, columns };\n\n provide(Y_DATA_TABLE_HEADER_KEY, data);\n\n return data;\n}\n\nexport function useHeader() {\n const data = inject(Y_DATA_TABLE_HEADER_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_HEADER_KEY.description}`);\n }\n return data;\n}\n"],"mappings":"AAAA,SAAwEA,MAAM,EAAEC,OAAO,EAAEC,GAAG,EAAEC,WAAW,QAAQ,KAAK;AAAC,SAI9GC,WAAW;AAAA,SACXC,YAAY;AAOrB,OAAO,MAAMC,oBAAoB,GAAGD,YAAY,CAC9C;EACEE,OAAO,EAAE;IACPC,IAAI,EAAEC,KAAkD;IACxDC,OAAO,EAAEA,CAAA,KAAM;EACjB;AACF,CAAC,EACD,oBACF,CAAC;AAED,OAAO,MAAMC,uBAGX,GAAGC,MAAM,CAACC,GAAG,CAAC,0BAA0B,CAAC;AAM3C,OAAO,SAASC,YAAYA,CAC1BC,KAAkB,EAClBC,OAEC,EACD;EACA,MAAMT,OAAO,GAAGL,GAAG,CAA8B,EAAE,CAAC;EACpD,MAAMe,OAAO,GAAGf,GAAG,CAA4B,EAAE,CAAC;EAElDC,WAAW,CAAC,MAAM;IAChB,MAAMe,IAAI,GAAGH,KAAK,CAACR,OAAO,EAAEY,MAAM,GAC9B,CAACJ,KAAK,CAACR,OAAO,CAAsB,GACpC,EAAE;IACN,MAAMa,IAAI,GAAGF,IAAI,CAACG,OAAO,CAAC,CAACC,GAAG,EAAEC,KAAK,KACnCD,GAAG,CAACE,GAAG,CAAEC,MAAM,KAAM;MAAEA,MAAM;MAAEC,QAAQ,EAAEH;IAAM,CAAC,CAAC,CACnD,CAAC;IACD,MAAMI,QAAQ,GAAGT,IAAI,CAACC,MAAM;IAC5B,MAAMS,aAAa,GAAG;MAAEC,IAAI,EAAE,EAAE;MAAEC,QAAQ,EAAE;IAAM,CAAC;IACnD,MAAMC,mBAAmB,GAAG;MAAE,GAAGH,aAAa;MAAEI,KAAK,EAAE;IAAG,CAAC;IAE3D,IAAIhB,OAAO,EAAEiB,YAAY,EAAEC,KAAK,EAAE;MAChC,MAAMC,UAAU,GAAGf,IAAI,CAACgB,SAAS,CAC/BC,IAAA;QAAA,IAAC;UAAEZ;QAAO,CAAC,GAAAY,IAAA;QAAA,OAAKZ,MAAM,CAACa,GAAG,KAAK,mBAAmB;MAAA,CACpD,CAAC;MACD,IAAIH,UAAU,GAAG,CAAC,EAAE;QAClB,MAAMI,KAAK,GAAGnB,IAAI,CAACoB,IAAI,CAACC,KAAA;UAAA,IAAC;YAAEhB;UAAO,CAAC,GAAAgB,KAAA;UAAA,OAAK,CAAC,CAAChB,MAAM,EAAEc,KAAK;QAAA,EAAC;QACxDnB,IAAI,CAACsB,OAAO,CAAC;UACXjB,MAAM,EAAE;YACN,GAAGM,mBAAmB;YACtBO,GAAG,EAAE,mBAAmB;YACxBK,OAAO,EAAEhB,QAAQ;YACjBY;UACF,CAAC;UACDb,QAAQ,EAAE;QACZ,CAAC,CAAC;MACJ,CAAC,MAAM;QACLN,IAAI,CAACwB,MAAM,CAACT,UAAU,EAAE,CAAC,EAAE;UACzBV,MAAM,EAAE;YACN,GAAGM,mBAAmB;YACtB,GAAGX,IAAI,CAACe,UAAU,CAAC,CAACV;UACtB,CAAC;UACDC,QAAQ,EAAEN,IAAI,CAACe,UAAU,CAAC,CAACT;QAC7B,CAAC,CAAC;MACJ;IACF;IAEA,MAAMmB,SAAsC,GAAGzC,WAAW,CAACuB,QAAQ,CAAC,CAACH,GAAG,CACtE,MAAM,EACR,CAAC;IACD,MAAMsB,YAAY,GAAG1C,WAAW,CAACuB,QAAQ,CAAC,CAACoB,IAAI,CAAC,CAAC,CAAC;IAElD3B,IAAI,CAAC4B,OAAO,CAACC,KAAA,IAA0B;MAAA,IAAzB;QAAExB,MAAM;QAAEC;MAAS,CAAC,GAAAuB,KAAA;MAChC,MAAM;QAAEX;MAAI,CAAC,GAAGb,MAAM;MACtB,KACE,IAAIyB,CAAC,GAAGxB,QAAQ,EAChBwB,CAAC,IAAIxB,QAAQ,IAAID,MAAM,CAACkB,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,EACzCO,CAAC,IAAI,CAAC,EACN;QACAL,SAAS,CAACK,CAAC,CAAC,CAACC,IAAI,CAAC;UAChB,GAAG1B,MAAM;UACTa,GAAG;UACHc,WAAW,EAAEN,YAAY,CAACI,CAAC,CAAC;UAC5BpB,QAAQ,EAAEL,MAAM,CAACK,QAAQ,IAAI,CAAC,CAACQ;QACjC,CAAC,CAAC;QACFQ,YAAY,CAACI,CAAC,CAAC,IAAIG,MAAM,CAAC5B,MAAM,CAACO,KAAK,IAAI,CAAC,CAAC;MAC9C;IACF,CAAC,CAAC;IAEFa,SAAS,CAACG,OAAO,CAAE1B,GAAG,IAAK;MACzB,KAAK,IAAI4B,CAAC,GAAG5B,GAAG,CAACH,MAAM,EAAG+B,CAAC,IAAI,CAAC,EAAGA,CAAC,IAAI,CAAC,EAAE;QACzC,IAAI5B,GAAG,CAAC4B,CAAC,CAAC,CAACX,KAAK,EAAE;UAChBjB,GAAG,CAAC4B,CAAC,CAAC,CAACI,SAAS,GAAG,IAAI;UACvB;QACF;MACF;IACF,CAAC,CAAC;IAEF,MAAMC,IAAI,GAAG,IAAIC,GAAG,CAAC,CAAC;IACtBjD,OAAO,CAAC2B,KAAK,GAAGW,SAAS,CAACrB,GAAG,CAAEF,GAAG,IAAK;MACrC,MAAMmC,QAAQ,GAAG,EAAE;MACnB,KAAK,MAAMhC,MAAM,IAAIH,GAAG,EAAE;QACxB,IAAI,CAACiC,IAAI,CAACG,GAAG,CAACjC,MAAM,CAACa,GAAG,CAAC,EAAE;UACzBiB,IAAI,CAACI,GAAG,CAAClC,MAAM,CAACa,GAAG,CAAC;UACpBmB,QAAQ,CAACN,IAAI,CAAC1B,MAAM,CAAC;QACvB;MACF;MACA,OAAOgC,QAAQ;IACjB,CAAC,CAAC;IAEFxC,OAAO,CAACiB,KAAK,GAAGW,SAAS,CAACe,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;EACxC,CAAC,CAAC;EAEF,MAAMC,IAAI,GAAG;IAAEtD,OAAO;IAAEU;EAAQ,CAAC;EAEjChB,OAAO,CAACU,uBAAuB,EAAEkD,IAAI,CAAC;EAEtC,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,SAASA,CAAA,EAAG;EAC1B,MAAMD,IAAI,GAAG7D,MAAM,CAACW,uBAAuB,CAAC;EAC5C,IAAI,CAACkD,IAAI,EAAE;IACT,MAAM,IAAIE,KAAK,CAAE,iBAAgBpD,uBAAuB,CAACqD,WAAY,EAAC,CAAC;EACzE;EACA,OAAOH,IAAI;AACb"}
1
+ {"version":3,"file":"header.mjs","names":["inject","provide","ref","watchEffect","getRangeArr","propsFactory","pressDataTableHeader","headers","type","Array","default","Y_DATA_TABLE_HEADER_KEY","Symbol","for","createHeader","props","options","columns","rows","length","flat","flatMap","row","index","map","column","rowIndex","rowCount","defaultHeader","text","sortable","defaultActionHeader","width","enableSelect","value","foundIndex","findIndex","_ref","key","fixed","some","_ref2","unshift","rowspan","splice","fixedRows","fixedOffsets","fill","forEach","_ref3","i","push","fixedOffset","Number","lastFixed","seen","Set","filtered","has","add","at","data","useHeader","Error","description"],"sources":["../../../../src/components/table/composibles/header.ts"],"sourcesContent":["import { type DeepReadonly, type InjectionKey, type PropType, type Ref, inject, provide, ref, watchEffect } from 'vue';\r\n\r\n\r\n\r\nimport { getRangeArr } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\n\r\n\r\nimport { type DataTableHeader, type InternalDataTableHeader } from '../types';\r\n\r\n\r\nexport const pressDataTableHeader = propsFactory(\r\n {\r\n headers: {\r\n type: Array as PropType<DeepReadonly<DataTableHeader[]>>,\r\n default: () => [],\r\n },\r\n },\r\n 'YDataTable--header',\r\n);\r\n\r\nexport const Y_DATA_TABLE_HEADER_KEY: InjectionKey<{\r\n headers: Ref<InternalDataTableHeader[][]>;\r\n columns: Ref<InternalDataTableHeader[]>;\r\n}> = Symbol.for('yuyeon.data-table.header');\r\n\r\ntype HeaderProps = {\r\n headers: DeepReadonly<DataTableHeader[]> | undefined;\r\n};\r\n\r\nexport function createHeader(\r\n props: HeaderProps,\r\n options?: {\r\n enableSelect?: Ref<boolean>;\r\n },\r\n) {\r\n const headers = ref<InternalDataTableHeader[][]>([]);\r\n const columns = ref<InternalDataTableHeader[]>([]);\r\n\r\n watchEffect(() => {\r\n const rows = props.headers?.length\r\n ? [props.headers as DataTableHeader[]]\r\n : [];\r\n const flat = rows.flatMap((row, index) =>\r\n row.map((column) => ({ column, rowIndex: index })),\r\n );\r\n const rowCount = rows.length;\r\n const defaultHeader = { text: '', sortable: false };\r\n const defaultActionHeader = { ...defaultHeader, width: 48 };\r\n\r\n if (options?.enableSelect?.value) {\r\n const foundIndex = flat.findIndex(\r\n ({ column }) => column.key === 'data-table-select',\r\n );\r\n if (foundIndex < 0) {\r\n const fixed = flat.some(({ column }) => !!column?.fixed);\r\n flat.unshift({\r\n column: {\r\n ...defaultActionHeader,\r\n key: 'data-table-select',\r\n rowspan: rowCount,\r\n fixed,\r\n },\r\n rowIndex: 0,\r\n });\r\n } else {\r\n flat.splice(foundIndex, 1, {\r\n column: {\r\n ...defaultActionHeader,\r\n ...flat[foundIndex].column,\r\n },\r\n rowIndex: flat[foundIndex].rowIndex,\r\n });\r\n }\r\n }\r\n\r\n const fixedRows: InternalDataTableHeader[][] = getRangeArr(rowCount).map(\r\n () => [],\r\n );\r\n const fixedOffsets = getRangeArr(rowCount).fill(0);\r\n\r\n flat.forEach(({ column, rowIndex }) => {\r\n const { key } = column;\r\n for (\r\n let i = rowIndex;\r\n i <= rowIndex + (column.rowspan ?? 1) - 1;\r\n i += 1\r\n ) {\r\n fixedRows[i].push({\r\n ...column,\r\n key,\r\n fixedOffset: fixedOffsets[i],\r\n sortable: column.sortable ?? !!key,\r\n });\r\n fixedOffsets[i] += Number(column.width ?? 0);\r\n }\r\n });\r\n\r\n fixedRows.forEach((row) => {\r\n for (let i = row.length; (i -= 1); i >= 0) {\r\n if (row[i].fixed) {\r\n row[i].lastFixed = true;\r\n return;\r\n }\r\n }\r\n });\r\n\r\n const seen = new Set();\r\n headers.value = fixedRows.map((row) => {\r\n const filtered = [];\r\n for (const column of row) {\r\n if (!seen.has(column.key)) {\r\n seen.add(column.key);\r\n filtered.push(column);\r\n }\r\n }\r\n return filtered;\r\n });\r\n\r\n columns.value = fixedRows.at(-1) ?? [];\r\n });\r\n\r\n const data = { headers, columns };\r\n\r\n provide(Y_DATA_TABLE_HEADER_KEY, data);\r\n\r\n return data;\r\n}\r\n\r\nexport function useHeader() {\r\n const data = inject(Y_DATA_TABLE_HEADER_KEY);\r\n if (!data) {\r\n throw new Error(`Not provided: ${Y_DATA_TABLE_HEADER_KEY.description}`);\r\n }\r\n return data;\r\n}\r\n"],"mappings":"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"}
@@ -19,7 +19,12 @@ export const pressDataTableItemsProps = propsFactory({
19
19
  export function updateItem(props, item, index, columns) {
20
20
  const key = getPropertyFromItem(item, props.itemKey);
21
21
  const value = props.returnItem ? item : key;
22
- const selectable = getPropertyFromItem(item, props.itemSelectable, true);
22
+ let selectable;
23
+ if (typeof props.itemSelectable === 'function') {
24
+ selectable = !!props.itemSelectable(item);
25
+ } else {
26
+ selectable = getPropertyFromItem(item, props.itemSelectable, true);
27
+ }
23
28
  const itemColumns = columns.reduce((acc, column) => {
24
29
  acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);
25
30
  return acc;
@@ -1 +1 @@
1
- {"version":3,"file":"items.mjs","names":["computed","getPropertyFromItem","propsFactory","pressDataTableItemsProps","items","type","Array","default","itemKey","String","Function","itemSelectable","returnItem","Boolean","updateItem","props","item","index","columns","key","value","selectable","itemColumns","reduce","acc","column","raw","updateItems","map","useItems"],"sources":["../../../../src/components/table/composibles/items.ts"],"sourcesContent":["import { type PropType, type Ref, computed } from 'vue';\n\nimport { getPropertyFromItem } from '@/util/common';\nimport { propsFactory } from '@/util/component';\n\nimport { DataTableItem, InternalDataTableHeader } from '../types';\n\nexport type DataTableItemsProps = {\n items: any[];\n itemKey: any;\n itemSelectable: any;\n returnItem: boolean;\n};\n\nexport const pressDataTableItemsProps = propsFactory(\n {\n items: {\n type: Array as PropType<DataTableItemsProps['items']>,\n default: () => [],\n },\n itemKey: {\n type: [String, Array, Function] as PropType<any>,\n default: 'id',\n },\n itemSelectable: {\n type: [String, Array, Function] as PropType<any>,\n default: null,\n },\n returnItem: Boolean,\n },\n 'YDataTable--items',\n);\n\nexport function updateItem(\n props: Omit<DataTableItemsProps, 'items'>,\n item: any,\n index: number,\n columns: InternalDataTableHeader[],\n): DataTableItem {\n const key = getPropertyFromItem(item, props.itemKey);\n const value = props.returnItem ? item : key;\n const selectable = getPropertyFromItem(item, props.itemSelectable, true);\n const itemColumns = columns.reduce(\n (acc, column) => {\n acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);\n return acc;\n },\n {} as Record<string, unknown>,\n );\n\n return {\n index,\n key,\n value,\n selectable,\n columns: itemColumns,\n raw: item,\n };\n}\n\nexport function updateItems(\n props: Omit<DataTableItemsProps, 'items'>,\n items: DataTableItemsProps['items'],\n columns: InternalDataTableHeader[],\n): DataTableItem[] {\n return items.map((item, index) => updateItem(props, item, index, columns));\n}\n\nexport function useItems(\n props: DataTableItemsProps,\n columns: Ref<InternalDataTableHeader[]>,\n) {\n const items = computed(() => {\n return updateItems(props, props.items, columns.value);\n });\n return { items };\n}\n"],"mappings":"AAAA,SAAkCA,QAAQ,QAAQ,KAAK;AAAC,SAE/CC,mBAAmB;AAAA,SACnBC,YAAY;AAWrB,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAClD;EACEE,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA+C;IACrDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE;IACPH,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDI,cAAc,EAAE;IACdN,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAEC;AACd,CAAC,EACD,mBACF,CAAC;AAED,OAAO,SAASC,UAAUA,CACxBC,KAAyC,EACzCC,IAAS,EACTC,KAAa,EACbC,OAAkC,EACnB;EACf,MAAMC,GAAG,GAAGlB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACP,OAAO,CAAC;EACpD,MAAMY,KAAK,GAAGL,KAAK,CAACH,UAAU,GAAGI,IAAI,GAAGG,GAAG;EAC3C,MAAME,UAAU,GAAGpB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACxE,MAAMW,WAAW,GAAGJ,OAAO,CAACK,MAAM,CAChC,CAACC,GAAG,EAAEC,MAAM,KAAK;IACfD,GAAG,CAACC,MAAM,CAACN,GAAG,CAAC,GAAGlB,mBAAmB,CAACe,IAAI,EAAES,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACN,GAAG,CAAC;IACvE,OAAOK,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;EAED,OAAO;IACLP,KAAK;IACLE,GAAG;IACHC,KAAK;IACLC,UAAU;IACVH,OAAO,EAAEI,WAAW;IACpBI,GAAG,EAAEV;EACP,CAAC;AACH;AAEA,OAAO,SAASW,WAAWA,CACzBZ,KAAyC,EACzCX,KAAmC,EACnCc,OAAkC,EACjB;EACjB,OAAOd,KAAK,CAACwB,GAAG,CAAC,CAACZ,IAAI,EAAEC,KAAK,KAAKH,UAAU,CAACC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;AAC5E;AAEA,OAAO,SAASW,QAAQA,CACtBd,KAA0B,EAC1BG,OAAuC,EACvC;EACA,MAAMd,KAAK,GAAGJ,QAAQ,CAAC,MAAM;IAC3B,OAAO2B,WAAW,CAACZ,KAAK,EAAEA,KAAK,CAACX,KAAK,EAAEc,OAAO,CAACE,KAAK,CAAC;EACvD,CAAC,CAAC;EACF,OAAO;IAAEhB;EAAM,CAAC;AAClB"}
1
+ {"version":3,"file":"items.mjs","names":["computed","getPropertyFromItem","propsFactory","pressDataTableItemsProps","items","type","Array","default","itemKey","String","Function","itemSelectable","returnItem","Boolean","updateItem","props","item","index","columns","key","value","selectable","itemColumns","reduce","acc","column","raw","updateItems","map","useItems"],"sources":["../../../../src/components/table/composibles/items.ts"],"sourcesContent":["import { type PropType, type Ref, computed } from 'vue';\r\n\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { DataTableItem, InternalDataTableHeader } from '../types';\r\n\r\nexport type DataTableItemsProps = {\r\n items: any[];\r\n itemKey: any;\r\n itemSelectable: any;\r\n returnItem: boolean;\r\n};\r\n\r\nexport const pressDataTableItemsProps = propsFactory(\r\n {\r\n items: {\r\n type: Array as PropType<DataTableItemsProps['items']>,\r\n default: () => [],\r\n },\r\n itemKey: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: 'id',\r\n },\r\n itemSelectable: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: null,\r\n },\r\n returnItem: Boolean,\r\n },\r\n 'YDataTable--items',\r\n);\r\n\r\nexport function updateItem(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n item: any,\r\n index: number,\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem {\r\n const key = getPropertyFromItem(item, props.itemKey);\r\n const value = props.returnItem ? item : key;\r\n let selectable;\r\n if (typeof props.itemSelectable === 'function') {\r\n selectable = !!props.itemSelectable(item);\r\n } else {\r\n selectable = getPropertyFromItem(item, props.itemSelectable, true);\r\n }\r\n\r\n const itemColumns = columns.reduce(\r\n (acc, column) => {\r\n acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);\r\n return acc;\r\n },\r\n {} as Record<string, unknown>,\r\n );\r\n\r\n return {\r\n index,\r\n key,\r\n value,\r\n selectable,\r\n columns: itemColumns,\r\n raw: item,\r\n };\r\n}\r\n\r\nexport function updateItems(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n items: DataTableItemsProps['items'],\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem[] {\r\n return items.map((item, index) => updateItem(props, item, index, columns));\r\n}\r\n\r\nexport function useItems(\r\n props: DataTableItemsProps,\r\n columns: Ref<InternalDataTableHeader[]>,\r\n) {\r\n const items = computed(() => {\r\n return updateItems(props, props.items, columns.value);\r\n });\r\n return { items };\r\n}\r\n"],"mappings":"AAAA,SAAkCA,QAAQ,QAAQ,KAAK;AAAC,SAE/CC,mBAAmB;AAAA,SACnBC,YAAY;AAWrB,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAClD;EACEE,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA+C;IACrDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE;IACPH,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDI,cAAc,EAAE;IACdN,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAEC;AACd,CAAC,EACD,mBACF,CAAC;AAED,OAAO,SAASC,UAAUA,CACxBC,KAAyC,EACzCC,IAAS,EACTC,KAAa,EACbC,OAAkC,EACnB;EACf,MAAMC,GAAG,GAAGlB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACP,OAAO,CAAC;EACpD,MAAMY,KAAK,GAAGL,KAAK,CAACH,UAAU,GAAGI,IAAI,GAAGG,GAAG;EAC3C,IAAIE,UAAU;EACd,IAAI,OAAON,KAAK,CAACJ,cAAc,KAAK,UAAU,EAAE;IAC9CU,UAAU,GAAG,CAAC,CAACN,KAAK,CAACJ,cAAc,CAACK,IAAI,CAAC;EAC3C,CAAC,MAAM;IACLK,UAAU,GAAGpB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACpE;EAEA,MAAMW,WAAW,GAAGJ,OAAO,CAACK,MAAM,CAChC,CAACC,GAAG,EAAEC,MAAM,KAAK;IACfD,GAAG,CAACC,MAAM,CAACN,GAAG,CAAC,GAAGlB,mBAAmB,CAACe,IAAI,EAAES,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACN,GAAG,CAAC;IACvE,OAAOK,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;EAED,OAAO;IACLP,KAAK;IACLE,GAAG;IACHC,KAAK;IACLC,UAAU;IACVH,OAAO,EAAEI,WAAW;IACpBI,GAAG,EAAEV;EACP,CAAC;AACH;AAEA,OAAO,SAASW,WAAWA,CACzBZ,KAAyC,EACzCX,KAAmC,EACnCc,OAAkC,EACjB;EACjB,OAAOd,KAAK,CAACwB,GAAG,CAAC,CAACZ,IAAI,EAAEC,KAAK,KAAKH,UAAU,CAACC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;AAC5E;AAEA,OAAO,SAASW,QAAQA,CACtBd,KAA0B,EAC1BG,OAAuC,EACvC;EACA,MAAMd,KAAK,GAAGJ,QAAQ,CAAC,MAAM;IAC3B,OAAO2B,WAAW,CAACZ,KAAK,EAAEA,KAAK,CAACX,KAAK,EAAEc,OAAO,CAACE,KAAK,CAAC;EACvD,CAAC,CAAC;EACF,OAAO;IAAEhB;EAAM,CAAC;AAClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"options.mjs","names":["computed","watch","deepEqual","useOptions","_ref","emit","page","pageSize","sortBy","search","options","value","optionsCache","deep","immediate"],"sources":["../../../../src/components/table/composibles/options.ts"],"sourcesContent":["import { type Ref, computed, watch } from 'vue';\n\nimport { deepEqual } from '@/util/common';\n\nimport { SortOption } from '../types';\n\ntype DataTableOptionsState = {\n page: Ref<number>;\n pageSize: Ref<number>;\n sortBy: Ref<readonly SortOption[]>;\n search: Ref<string | undefined>;\n};\n\nexport function useOptions(\n { page, pageSize, sortBy, search }: DataTableOptionsState,\n emit: Function,\n) {\n const options = computed(() => {\n return {\n page: page.value,\n pageSize: pageSize.value,\n sortBy: sortBy.value,\n search: search.value,\n };\n });\n\n watch(\n () => search?.value,\n () => {\n page.value = 1;\n },\n );\n\n let optionsCache = null as unknown;\n\n watch(\n options,\n () => {\n if (deepEqual(optionsCache, options.value)) {\n return;\n }\n emit('update:options', options.value);\n optionsCache = options.value;\n },\n { deep: true, immediate: true },\n );\n}\n"],"mappings":"AAAA,SAAmBA,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAEvCC,SAAS;AAWlB,OAAO,SAASC,UAAUA,CAAAC,IAAA,EAExBC,IAAc,EACd;EAAA,IAFA;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,MAAM;IAAEC;EAA8B,CAAC,GAAAL,IAAA;EAGzD,MAAMM,OAAO,GAAGV,QAAQ,CAAC,MAAM;IAC7B,OAAO;MACLM,IAAI,EAAEA,IAAI,CAACK,KAAK;MAChBJ,QAAQ,EAAEA,QAAQ,CAACI,KAAK;MACxBH,MAAM,EAAEA,MAAM,CAACG,KAAK;MACpBF,MAAM,EAAEA,MAAM,CAACE;IACjB,CAAC;EACH,CAAC,CAAC;EAEFV,KAAK,CACH,MAAMQ,MAAM,EAAEE,KAAK,EACnB,MAAM;IACJL,IAAI,CAACK,KAAK,GAAG,CAAC;EAChB,CACF,CAAC;EAED,IAAIC,YAAY,GAAG,IAAe;EAElCX,KAAK,CACHS,OAAO,EACP,MAAM;IACJ,IAAIR,SAAS,CAACU,YAAY,EAAEF,OAAO,CAACC,KAAK,CAAC,EAAE;MAC1C;IACF;IACAN,IAAI,CAAC,gBAAgB,EAAEK,OAAO,CAACC,KAAK,CAAC;IACrCC,YAAY,GAAGF,OAAO,CAACC,KAAK;EAC9B,CAAC,EACD;IAAEE,IAAI,EAAE,IAAI;IAAEC,SAAS,EAAE;EAAK,CAChC,CAAC;AACH"}
1
+ {"version":3,"file":"options.mjs","names":["computed","watch","deepEqual","useOptions","_ref","emit","page","pageSize","sortBy","search","options","value","optionsCache","deep","immediate"],"sources":["../../../../src/components/table/composibles/options.ts"],"sourcesContent":["import { type Ref, computed, watch } from 'vue';\r\n\r\nimport { deepEqual } from '@/util/common';\r\n\r\nimport { SortOption } from '../types';\r\n\r\ntype DataTableOptionsState = {\r\n page: Ref<number>;\r\n pageSize: Ref<number>;\r\n sortBy: Ref<readonly SortOption[]>;\r\n search: Ref<string | undefined>;\r\n};\r\n\r\nexport function useOptions(\r\n { page, pageSize, sortBy, search }: DataTableOptionsState,\r\n emit: Function,\r\n) {\r\n const options = computed(() => {\r\n return {\r\n page: page.value,\r\n pageSize: pageSize.value,\r\n sortBy: sortBy.value,\r\n search: search.value,\r\n };\r\n });\r\n\r\n watch(\r\n () => search?.value,\r\n () => {\r\n page.value = 1;\r\n },\r\n );\r\n\r\n let optionsCache = null as unknown;\r\n\r\n watch(\r\n options,\r\n () => {\r\n if (deepEqual(optionsCache, options.value)) {\r\n return;\r\n }\r\n emit('update:options', options.value);\r\n optionsCache = options.value;\r\n },\r\n { deep: true, immediate: true },\r\n );\r\n}\r\n"],"mappings":"AAAA,SAAmBA,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAEvCC,SAAS;AAWlB,OAAO,SAASC,UAAUA,CAAAC,IAAA,EAExBC,IAAc,EACd;EAAA,IAFA;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,MAAM;IAAEC;EAA8B,CAAC,GAAAL,IAAA;EAGzD,MAAMM,OAAO,GAAGV,QAAQ,CAAC,MAAM;IAC7B,OAAO;MACLM,IAAI,EAAEA,IAAI,CAACK,KAAK;MAChBJ,QAAQ,EAAEA,QAAQ,CAACI,KAAK;MACxBH,MAAM,EAAEA,MAAM,CAACG,KAAK;MACpBF,MAAM,EAAEA,MAAM,CAACE;IACjB,CAAC;EACH,CAAC,CAAC;EAEFV,KAAK,CACH,MAAMQ,MAAM,EAAEE,KAAK,EACnB,MAAM;IACJL,IAAI,CAACK,KAAK,GAAG,CAAC;EAChB,CACF,CAAC;EAED,IAAIC,YAAY,GAAG,IAAe;EAElCX,KAAK,CACHS,OAAO,EACP,MAAM;IACJ,IAAIR,SAAS,CAACU,YAAY,EAAEF,OAAO,CAACC,KAAK,CAAC,EAAE;MAC1C;IACF;IACAN,IAAI,CAAC,gBAAgB,EAAEK,OAAO,CAACC,KAAK,CAAC;IACrCC,YAAY,GAAGF,OAAO,CAACC,KAAK;EAC9B,CAAC,EACD;IAAEE,IAAI,EAAE,IAAI;IAAEC,SAAS,EAAE;EAAK,CAChC,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.mjs","names":["computed","inject","provide","watchEffect","useModelDuplex","clamp","propsFactory","Y_DATA_TABLE_PAGINATION_KEY","Symbol","for","pressDataTablePaginationProps","page","type","Number","String","default","pageSize","createPagination","props","undefined","value","providePagination","options","total","startIndex","endIndex","Math","min","pageLength","ceil","setPageSize","nextPage","prevPage","setPage","data","usePagination","Error","description","usePaginatedItems","items","paginatedItems","slice"],"sources":["../../../../src/components/table/composibles/pagination.ts"],"sourcesContent":["import type { InjectionKey, PropType, Ref } from 'vue';\nimport { computed, inject, provide, watchEffect } from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { clamp } from '@/util/common';\nimport { propsFactory } from '@/util/component';\n\nimport { DataTableProvidePaginationData } from '../types';\n\nexport const Y_DATA_TABLE_PAGINATION_KEY: InjectionKey<{\n page: Ref<number>;\n pageSize: Ref<number>;\n startIndex: Ref<number>;\n endIndex: Ref<number>;\n pageLength: Ref<number>;\n total: Ref<number>;\n prevPage: () => void;\n nextPage: () => void;\n setPage: (page: number) => void;\n setPageSize: (size: number) => void;\n}> = Symbol.for('yuyeon.data-table.pagination');\n\nexport const pressDataTablePaginationProps = propsFactory(\n {\n page: {\n type: [Number, String] as PropType<number | string>,\n default: 1,\n },\n pageSize: {\n type: [Number, String] as PropType<number | string>,\n default: 10,\n },\n },\n 'YDataTable--pagination',\n);\n\ntype PaginationProps = {\n page: number | string;\n 'onUpdate:page': ((v: any) => void) | undefined;\n pageSize: number | string;\n 'onUpdate:pageSize': ((v: any) => void) | undefined;\n total?: number | string;\n};\n\nexport function createPagination(props: PaginationProps) {\n const page = useModelDuplex(\n props,\n 'page',\n undefined,\n (value) => +(value ?? 1),\n );\n const pageSize = useModelDuplex(\n props,\n 'pageSize',\n undefined,\n (value) => +(value ?? 10),\n );\n return { page, pageSize };\n}\n\nexport function providePagination(options: {\n page: Ref<number>;\n pageSize: Ref<number>;\n total: Ref<number>;\n}) {\n const { page, pageSize, total } = options;\n const startIndex = computed(() => {\n if (pageSize.value === -1) return 0;\n\n return pageSize.value * (page.value - 1);\n });\n const endIndex = computed(() => {\n if (pageSize.value === -1) return total.value;\n\n return Math.min(total.value, startIndex.value + pageSize.value);\n });\n\n const pageLength = computed(() => {\n if (pageSize.value === -1 || total.value === 0) return 1;\n\n return Math.ceil(total.value / pageSize.value);\n });\n\n watchEffect(() => {\n if (page.value > pageLength.value) {\n page.value = pageLength.value;\n }\n });\n\n function setPageSize(value: number) {\n pageSize.value = value;\n page.value = 1;\n }\n\n function nextPage() {\n page.value = clamp(page.value + 1, 1, pageLength.value);\n }\n\n function prevPage() {\n page.value = clamp(page.value - 1, 1, pageLength.value);\n }\n\n function setPage(value: number) {\n page.value = clamp(value, 1, pageLength.value);\n }\n\n const data: DataTableProvidePaginationData = {\n page,\n pageSize,\n startIndex,\n endIndex,\n pageLength,\n total,\n nextPage,\n prevPage,\n setPage,\n setPageSize,\n };\n\n provide(Y_DATA_TABLE_PAGINATION_KEY, data);\n\n return data;\n}\n\nexport function usePagination() {\n const data = inject(Y_DATA_TABLE_PAGINATION_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_PAGINATION_KEY.description}`);\n }\n return data;\n}\n\nexport function usePaginatedItems<T>(options: {\n items: Ref<readonly T[]>;\n startIndex: Ref<number>;\n endIndex: Ref<number>;\n pageSize: Ref<number>;\n}) {\n const { items, startIndex, endIndex, pageSize } = options;\n const paginatedItems = computed(() => {\n if (pageSize.value <= 0) return items.value;\n\n return items.value.slice(startIndex.value, endIndex.value);\n });\n\n return { paginatedItems };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pagination.mjs","names":["computed","inject","provide","watchEffect","useModelDuplex","clamp","propsFactory","Y_DATA_TABLE_PAGINATION_KEY","Symbol","for","pressDataTablePaginationProps","page","type","Number","String","default","pageSize","createPagination","props","undefined","value","providePagination","options","total","startIndex","endIndex","Math","min","pageLength","ceil","setPageSize","nextPage","prevPage","setPage","data","usePagination","Error","description","usePaginatedItems","items","paginatedItems","slice"],"sources":["../../../../src/components/table/composibles/pagination.ts"],"sourcesContent":["import type { InjectionKey, PropType, Ref } from 'vue';\r\nimport { computed, inject, provide, watchEffect } from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { clamp } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { DataTableProvidePaginationData } from '../types';\r\n\r\nexport const Y_DATA_TABLE_PAGINATION_KEY: InjectionKey<{\r\n page: Ref<number>;\r\n pageSize: Ref<number>;\r\n startIndex: Ref<number>;\r\n endIndex: Ref<number>;\r\n pageLength: Ref<number>;\r\n total: Ref<number>;\r\n prevPage: () => void;\r\n nextPage: () => void;\r\n setPage: (page: number) => void;\r\n setPageSize: (size: number) => void;\r\n}> = Symbol.for('yuyeon.data-table.pagination');\r\n\r\nexport const pressDataTablePaginationProps = propsFactory(\r\n {\r\n page: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 1,\r\n },\r\n pageSize: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 10,\r\n },\r\n },\r\n 'YDataTable--pagination',\r\n);\r\n\r\ntype PaginationProps = {\r\n page: number | string;\r\n 'onUpdate:page': ((v: any) => void) | undefined;\r\n pageSize: number | string;\r\n 'onUpdate:pageSize': ((v: any) => void) | undefined;\r\n total?: number | string;\r\n};\r\n\r\nexport function createPagination(props: PaginationProps) {\r\n const page = useModelDuplex(\r\n props,\r\n 'page',\r\n undefined,\r\n (value) => +(value ?? 1),\r\n );\r\n const pageSize = useModelDuplex(\r\n props,\r\n 'pageSize',\r\n undefined,\r\n (value) => +(value ?? 10),\r\n );\r\n return { page, pageSize };\r\n}\r\n\r\nexport function providePagination(options: {\r\n page: Ref<number>;\r\n pageSize: Ref<number>;\r\n total: Ref<number>;\r\n}) {\r\n const { page, pageSize, total } = options;\r\n const startIndex = computed(() => {\r\n if (pageSize.value === -1) return 0;\r\n\r\n return pageSize.value * (page.value - 1);\r\n });\r\n const endIndex = computed(() => {\r\n if (pageSize.value === -1) return total.value;\r\n\r\n return Math.min(total.value, startIndex.value + pageSize.value);\r\n });\r\n\r\n const pageLength = computed(() => {\r\n if (pageSize.value === -1 || total.value === 0) return 1;\r\n\r\n return Math.ceil(total.value / pageSize.value);\r\n });\r\n\r\n watchEffect(() => {\r\n if (page.value > pageLength.value) {\r\n page.value = pageLength.value;\r\n }\r\n });\r\n\r\n function setPageSize(value: number) {\r\n pageSize.value = value;\r\n page.value = 1;\r\n }\r\n\r\n function nextPage() {\r\n page.value = clamp(page.value + 1, 1, pageLength.value);\r\n }\r\n\r\n function prevPage() {\r\n page.value = clamp(page.value - 1, 1, pageLength.value);\r\n }\r\n\r\n function setPage(value: number) {\r\n page.value = clamp(value, 1, pageLength.value);\r\n }\r\n\r\n const data: DataTableProvidePaginationData = {\r\n page,\r\n pageSize,\r\n startIndex,\r\n endIndex,\r\n pageLength,\r\n total,\r\n nextPage,\r\n prevPage,\r\n setPage,\r\n setPageSize,\r\n };\r\n\r\n provide(Y_DATA_TABLE_PAGINATION_KEY, data);\r\n\r\n return data;\r\n}\r\n\r\nexport function usePagination() {\r\n const data = inject(Y_DATA_TABLE_PAGINATION_KEY);\r\n if (!data) {\r\n throw new Error(`Not provided: ${Y_DATA_TABLE_PAGINATION_KEY.description}`);\r\n }\r\n return data;\r\n}\r\n\r\nexport function usePaginatedItems<T>(options: {\r\n items: Ref<readonly T[]>;\r\n startIndex: Ref<number>;\r\n endIndex: Ref<number>;\r\n pageSize: Ref<number>;\r\n}) {\r\n const { items, startIndex, endIndex, pageSize } = options;\r\n const paginatedItems = computed(() => {\r\n if (pageSize.value <= 0) return items.value;\r\n\r\n return items.value.slice(startIndex.value, endIndex.value);\r\n });\r\n\r\n return { paginatedItems };\r\n}\r\n"],"mappings":"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"}
@@ -15,7 +15,7 @@ export const pressDataTableSelectionProps = propsFactory({
15
15
  },
16
16
  itemComparator: {
17
17
  type: [Function, String],
18
- default: deepEqual
18
+ default: () => deepEqual
19
19
  }
20
20
  }, 'YDataTable--selection');
21
21
  const singleSelectStrategy = {