yuyeon 0.1.2-rc.2 → 0.2.1-rc.1

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 (171) hide show
  1. package/dist/yuyeon.js +2592 -2523
  2. package/dist/yuyeon.umd.cjs +11 -11
  3. package/lib/abstract/items.mjs +1 -1
  4. package/lib/abstract/items.mjs.map +1 -1
  5. package/lib/components/alert/YAlert.mjs +4 -3
  6. package/lib/components/alert/YAlert.mjs.map +1 -1
  7. package/lib/components/badge/YBadge.mjs +1 -1
  8. package/lib/components/badge/YBadge.mjs.map +1 -1
  9. package/lib/components/button/YButton.mjs +3 -3
  10. package/lib/components/button/YButton.mjs.map +1 -1
  11. package/lib/components/checkbox/YCheckbox.mjs +1 -1
  12. package/lib/components/checkbox/YCheckbox.mjs.map +1 -1
  13. package/lib/components/date-picker/YDateCalendar.mjs +1 -1
  14. package/lib/components/date-picker/YDateCalendar.mjs.map +1 -1
  15. package/lib/components/date-picker/YDatePicker.mjs +1 -1
  16. package/lib/components/date-picker/YDatePicker.mjs.map +1 -1
  17. package/lib/components/date-picker/YDatePickerControl.mjs +1 -1
  18. package/lib/components/date-picker/YDatePickerControl.mjs.map +1 -1
  19. package/lib/components/date-picker/YMonthPicker.mjs +1 -1
  20. package/lib/components/date-picker/YMonthPicker.mjs.map +1 -1
  21. package/lib/components/date-picker/YYearPicker.mjs +1 -1
  22. package/lib/components/date-picker/YYearPicker.mjs.map +1 -1
  23. package/lib/components/dialog/YDialog.mjs +1 -1
  24. package/lib/components/dialog/YDialog.mjs.map +1 -1
  25. package/lib/components/dropdown/YDropdown.mjs +1 -1
  26. package/lib/components/dropdown/YDropdown.mjs.map +1 -1
  27. package/lib/components/field-input/YFieldInput.mjs +1 -1
  28. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  29. package/lib/components/icon/YIcon.mjs +1 -1
  30. package/lib/components/icon/YIcon.mjs.map +1 -1
  31. package/lib/components/img/YImg.mjs +5 -5
  32. package/lib/components/img/YImg.mjs.map +1 -1
  33. package/lib/components/input/YInput.mjs +1 -1
  34. package/lib/components/input/YInput.mjs.map +1 -1
  35. package/lib/components/ip-field/YIpv4Field.mjs +1 -1
  36. package/lib/components/ip-field/YIpv4Field.mjs.map +1 -1
  37. package/lib/components/layer/YLayer.mjs +1 -1
  38. package/lib/components/layer/YLayer.mjs.map +1 -1
  39. package/lib/components/layer/base.mjs +1 -1
  40. package/lib/components/layer/base.mjs.map +1 -1
  41. package/lib/components/layer/content.mjs +1 -1
  42. package/lib/components/layer/content.mjs.map +1 -1
  43. package/lib/components/layer/scroll-strategies.mjs +1 -1
  44. package/lib/components/layer/scroll-strategies.mjs.map +1 -1
  45. package/lib/components/list/YList.mjs +1 -1
  46. package/lib/components/list/YList.mjs.map +1 -1
  47. package/lib/components/list/YListItem.mjs +1 -1
  48. package/lib/components/list/YListItem.mjs.map +1 -1
  49. package/lib/components/menu/YMenu.mjs +1 -1
  50. package/lib/components/menu/YMenu.mjs.map +1 -1
  51. package/lib/components/pagination/YPagination.mjs +1 -1
  52. package/lib/components/pagination/YPagination.mjs.map +1 -1
  53. package/lib/components/select/YSelect.mjs +1 -1
  54. package/lib/components/select/YSelect.mjs.map +1 -1
  55. package/lib/components/snackbar/YSnackbar.mjs +6 -6
  56. package/lib/components/snackbar/YSnackbar.mjs.map +1 -1
  57. package/lib/components/tab/YTabs.mjs +1 -1
  58. package/lib/components/tab/YTabs.mjs.map +1 -1
  59. package/lib/components/table/YDataTable.mjs +1 -1
  60. package/lib/components/table/YDataTable.mjs.map +1 -1
  61. package/lib/components/table/YDataTableBody.mjs +1 -1
  62. package/lib/components/table/YDataTableBody.mjs.map +1 -1
  63. package/lib/components/table/YDataTableHead.mjs +1 -1
  64. package/lib/components/table/YDataTableHead.mjs.map +1 -1
  65. package/lib/components/table/YDataTableRow.mjs +1 -1
  66. package/lib/components/table/YDataTableRow.mjs.map +1 -1
  67. package/lib/components/table/YDataTableServer.mjs +1 -1
  68. package/lib/components/table/YDataTableServer.mjs.map +1 -1
  69. package/lib/components/table/YTable.mjs +1 -1
  70. package/lib/components/table/YTable.mjs.map +1 -1
  71. package/lib/components/table/composibles/header.mjs +1 -1
  72. package/lib/components/table/composibles/header.mjs.map +1 -1
  73. package/lib/components/table/composibles/items.mjs +1 -1
  74. package/lib/components/table/composibles/items.mjs.map +1 -1
  75. package/lib/components/table/composibles/pagination.mjs +1 -1
  76. package/lib/components/table/composibles/pagination.mjs.map +1 -1
  77. package/lib/components/table/composibles/selection.mjs +1 -1
  78. package/lib/components/table/composibles/selection.mjs.map +1 -1
  79. package/lib/components/table/composibles/sorting.mjs +1 -1
  80. package/lib/components/table/composibles/sorting.mjs.map +1 -1
  81. package/lib/components/tooltip/YTooltip.mjs +1 -1
  82. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  83. package/lib/components/tree-view/YTreeView.mjs +1 -1
  84. package/lib/components/tree-view/YTreeView.mjs.map +1 -1
  85. package/lib/components/tree-view/YTreeViewNode.mjs +1 -1
  86. package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
  87. package/lib/composables/choice.mjs +1 -1
  88. package/lib/composables/choice.mjs.map +1 -1
  89. package/lib/composables/coordinate/index.mjs +1 -1
  90. package/lib/composables/coordinate/index.mjs.map +1 -1
  91. package/lib/composables/date/index.mjs +1 -1
  92. package/lib/composables/date/index.mjs.map +1 -1
  93. package/lib/composables/defaults/index.mjs +99 -0
  94. package/lib/composables/defaults/index.mjs.map +1 -0
  95. package/lib/composables/defaults/share.mjs +2 -0
  96. package/lib/composables/defaults/share.mjs.map +1 -0
  97. package/lib/composables/defaults/types.mjs +2 -0
  98. package/lib/composables/defaults/types.mjs.map +1 -0
  99. package/lib/composables/dimension.mjs +1 -1
  100. package/lib/composables/dimension.mjs.map +1 -1
  101. package/lib/composables/focus.mjs +1 -1
  102. package/lib/composables/focus.mjs.map +1 -1
  103. package/lib/composables/form.mjs +1 -1
  104. package/lib/composables/form.mjs.map +1 -1
  105. package/lib/composables/i18n/index.mjs +2 -2
  106. package/lib/composables/i18n/index.mjs.map +1 -1
  107. package/lib/composables/list-items.mjs +1 -1
  108. package/lib/composables/list-items.mjs.map +1 -1
  109. package/lib/composables/resize-observer.mjs +1 -1
  110. package/lib/composables/resize-observer.mjs.map +1 -1
  111. package/lib/composables/theme/index.mjs +2 -2
  112. package/lib/composables/theme/index.mjs.map +1 -1
  113. package/lib/index.mjs +6 -1
  114. package/lib/index.mjs.map +1 -1
  115. package/lib/util/component/component.mjs +21 -0
  116. package/lib/util/component/component.mjs.map +1 -0
  117. package/lib/util/component/index.mjs +64 -0
  118. package/lib/util/component/index.mjs.map +1 -0
  119. package/lib/util/component/inject-self.mjs +10 -0
  120. package/lib/util/component/inject-self.mjs.map +1 -0
  121. package/lib/util/component/props.mjs +41 -0
  122. package/lib/util/component/props.mjs.map +1 -0
  123. package/lib/util/component/types.mjs +2 -0
  124. package/lib/util/component/types.mjs.map +1 -0
  125. package/lib/util/index.mjs +1 -1
  126. package/lib/util/index.mjs.map +1 -1
  127. package/lib/util/vue-component/index.mjs +63 -0
  128. package/lib/util/vue-component/index.mjs.map +1 -0
  129. package/lib/util/vue-component/props.mjs +37 -0
  130. package/lib/util/vue-component/props.mjs.map +1 -0
  131. package/lib/util/vue-component/types.mjs +2 -0
  132. package/lib/util/vue-component/types.mjs.map +1 -0
  133. package/package.json +1 -1
  134. package/types/components/alert/YAlert.d.ts +2 -13
  135. package/types/components/badge/YBadge.d.ts +3 -3
  136. package/types/components/date-picker/YDateCalendar.d.ts +7 -7
  137. package/types/components/date-picker/YDatePicker.d.ts +22 -22
  138. package/types/components/date-picker/YMonthPicker.d.ts +3 -3
  139. package/types/components/date-picker/YYearPicker.d.ts +3 -3
  140. package/types/components/dialog/YDialog.d.ts +42 -42
  141. package/types/components/dropdown/YDropdown.d.ts +18 -18
  142. package/types/components/field-input/YFieldInput.d.ts +3 -3
  143. package/types/components/form/YForm.d.ts +1 -1
  144. package/types/components/hover/YHover.d.ts +1 -1
  145. package/types/components/icon/YIcon.d.ts +4 -4
  146. package/types/components/input/YInput.d.ts +3 -3
  147. package/types/components/ip-field/YIpv4Field.d.ts +2 -2
  148. package/types/components/layer/YLayer.d.ts +5 -5
  149. package/types/components/menu/YMenu.d.ts +7 -7
  150. package/types/components/pagination/YPagination.d.ts +20 -20
  151. package/types/components/select/YSelect.d.ts +93 -93
  152. package/types/components/snackbar/YSnackbar.d.ts +29 -9
  153. package/types/components/tab/YTabs.d.ts +1 -1
  154. package/types/components/textarea/YTextarea.d.ts +6 -6
  155. package/types/components/tooltip/YTooltip.d.ts +9 -9
  156. package/types/components/tree-view/YTreeView.d.ts +2 -2
  157. package/types/composables/coordinate/index.d.ts +2 -2
  158. package/types/composables/defaults/index.d.ts +11 -0
  159. package/types/composables/defaults/share.d.ts +4 -0
  160. package/types/composables/defaults/types.d.ts +12 -0
  161. package/types/composables/form.d.ts +1 -1
  162. package/types/globals.d.ts +1 -0
  163. package/types/util/component/component.d.ts +4 -0
  164. package/types/util/component/index.d.ts +11 -0
  165. package/types/util/component/inject-self.d.ts +3 -0
  166. package/types/util/component/props.d.ts +32 -0
  167. package/types/util/component/types.d.ts +21 -0
  168. package/types/util/index.d.ts +1 -1
  169. package/types/util/vue-component/index.d.ts +10 -0
  170. package/types/util/vue-component/props.d.ts +31 -0
  171. package/types/util/vue-component/types.d.ts +4 -0
@@ -1 +1 @@
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","maxWidth","rowspan","colspan","headerSlotName","headerSlotProps","length","stopPropagation","text","_Fragment","head","map","row"],"sources":["../../../src/components/table/YDataTableHead.tsx"],"sourcesContent":["import { CSSProperties, defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { toStyleSizeValue } from '../../util/ui';\r\nimport { propsFactory } from '../../util/vue-component';\r\nimport { YIconSort } from '../icons/YIconSort';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from './composibles/header';\r\nimport { useSelection } from './composibles/selection';\r\nimport { useSorting } from './composibles/sorting';\r\n\r\nimport { YIconCheckbox } from '../icons';\r\nimport { InternalDataTableHeader } from './types';\r\n\r\nexport const pressYDataTableHeadProps = propsFactory(\r\n {\r\n multiSort: Boolean,\r\n sortAscIcon: {\r\n type: String,\r\n default: '@sortAsc',\r\n },\r\n sortDescIcon: {\r\n type: String,\r\n default: '@sortDesc',\r\n },\r\n dualSortIcon: Boolean,\r\n sticky: Boolean,\r\n },\r\n 'YDataTableHead',\r\n);\r\n\r\nexport const YDataTableHead = defineComponent({\r\n name: 'YDataTableHead',\r\n components: {\r\n YDataTableCell,\r\n },\r\n props: {\r\n ...pressYDataTableHeadProps(),\r\n },\r\n setup(props, { slots }) {\r\n const { toggleSort, sortBy, isSorted } = useSorting();\r\n const { someSelected, allSelected, selectAll, showSelectAll, selectables } =\r\n useSelection();\r\n const { columns, headers } = useHeader();\r\n\r\n const getFixedStyles = (\r\n column: InternalDataTableHeader,\r\n y: number,\r\n ): CSSProperties | undefined => {\r\n if (!props.sticky && !column.fixed) return undefined;\r\n\r\n return {\r\n position: 'sticky',\r\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,\r\n left: column.fixed ? toStyleSizeValue(column.fixedOffset) : undefined,\r\n top: props.sticky\r\n ? `calc(var(--v-table-header-height) * ${y})`\r\n : undefined,\r\n };\r\n };\r\n\r\n function onClick(e: Event) {\r\n //\r\n }\r\n\r\n function getSortDirection(column: InternalDataTableHeader) {\r\n const found = sortBy.value.find((by) => by.key === column.key);\r\n if (!found) {\r\n return undefined;\r\n }\r\n if (found.order === 'asc') {\r\n return 'asc';\r\n }\r\n if (found.order === 'desc') {\r\n return 'desc';\r\n }\r\n }\r\n\r\n const YDataTableTh = ({\r\n column,\r\n x,\r\n y,\r\n }: {\r\n column: InternalDataTableHeader;\r\n x: number;\r\n y: number;\r\n }) => {\r\n return (\r\n <YDataTableCell\r\n type=\"head\"\r\n align={column.align}\r\n fixed={\r\n column.fixed ? (column.lastFixed ? 'last' : 'lead') : undefined\r\n }\r\n class={[\r\n 'y-data-table-header',\r\n {\r\n 'y-data-table-header--sortable': column.sortable,\r\n 'y-data-table-header--sorted': isSorted(column),\r\n 'y-data-table-header--select': column.key === 'data-table-select',\r\n },\r\n ]}\r\n style={{\r\n width: toStyleSizeValue(column.width),\r\n minWidth: toStyleSizeValue(column.width),\r\n maxWidth: toStyleSizeValue(column.maxWidth),\r\n ...getFixedStyles(column, y),\r\n }}\r\n {...{ rowspan: column.rowspan, colspan: column.colspan }}\r\n onClick={onClick}\r\n >\r\n {{\r\n default: () => {\r\n const headerSlotName = `header.${column.key}` as const;\r\n const headerSlotProps = {\r\n column,\r\n selectAll,\r\n isSorted,\r\n toggleSort,\r\n sortBy: sortBy.value,\r\n someSelected: someSelected.value,\r\n allSelected: allSelected.value,\r\n selectables: selectables.value,\r\n getSortDirection,\r\n };\r\n\r\n if (slots[headerSlotName]) {\r\n return slots[headerSlotName]?.(headerSlotProps);\r\n }\r\n\r\n if (column.key === 'data-table-select') {\r\n return (\r\n slots['header.data-table-select']?.(headerSlotProps) ??\r\n (showSelectAll && (\r\n <YIconCheckbox\r\n checked={allSelected.value}\r\n indeterminate={!allSelected.value && someSelected.value}\r\n disabled={selectables.value.length < 1}\r\n {...{\r\n onClick: (e: MouseEvent) => {\r\n e.stopPropagation();\r\n selectAll(!allSelected.value);\r\n },\r\n }}\r\n ></YIconCheckbox>\r\n ))\r\n );\r\n }\r\n\r\n return (\r\n <div class=\"y-data-table-header__content\">\r\n <span class=\"y-data-table-header__text\">{column.text}</span>\r\n <span\r\n class={[\r\n 'y-data-table-header__sorting-icon',\r\n {\r\n 'y-data-table-header__sorting-icon--disabled':\r\n !column.sortable,\r\n },\r\n ]}\r\n onClick={\r\n column.sortable\r\n ? (e) => {\r\n e.stopPropagation();\r\n toggleSort(column);\r\n }\r\n : undefined\r\n }\r\n >\r\n <YIconSort\r\n disabled={!column.sortable}\r\n direction={getSortDirection(column)}\r\n ></YIconSort>\r\n </span>\r\n </div>\r\n );\r\n },\r\n }}\r\n </YDataTableCell>\r\n );\r\n };\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n {slots.head\r\n ? slots.head?.(props)\r\n : headers.value.map((row, y) => (\r\n <tr>\r\n {row.map((column, x) => (\r\n <YDataTableTh column={column} x={x} y={y} />\r\n ))}\r\n </tr>\r\n ))}\r\n </>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableHead = InstanceType<typeof YDataTableHead>;\r\n"],"mappings":"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"}
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","maxWidth","rowspan","colspan","headerSlotName","headerSlotProps","length","stopPropagation","text","_Fragment","head","map","row"],"sources":["../../../src/components/table/YDataTableHead.tsx"],"sourcesContent":["import { CSSProperties, defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { toStyleSizeValue } from '../../util/ui';\r\nimport { propsFactory } from '../../util/component';\r\nimport { YIconSort } from '../icons/YIconSort';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from './composibles/header';\r\nimport { useSelection } from './composibles/selection';\r\nimport { useSorting } from './composibles/sorting';\r\n\r\nimport { YIconCheckbox } from '../icons';\r\nimport { InternalDataTableHeader } from './types';\r\n\r\nexport const pressYDataTableHeadProps = propsFactory(\r\n {\r\n multiSort: Boolean,\r\n sortAscIcon: {\r\n type: String,\r\n default: '@sortAsc',\r\n },\r\n sortDescIcon: {\r\n type: String,\r\n default: '@sortDesc',\r\n },\r\n dualSortIcon: Boolean,\r\n sticky: Boolean,\r\n },\r\n 'YDataTableHead',\r\n);\r\n\r\nexport const YDataTableHead = defineComponent({\r\n name: 'YDataTableHead',\r\n components: {\r\n YDataTableCell,\r\n },\r\n props: {\r\n ...pressYDataTableHeadProps(),\r\n },\r\n setup(props, { slots }) {\r\n const { toggleSort, sortBy, isSorted } = useSorting();\r\n const { someSelected, allSelected, selectAll, showSelectAll, selectables } =\r\n useSelection();\r\n const { columns, headers } = useHeader();\r\n\r\n const getFixedStyles = (\r\n column: InternalDataTableHeader,\r\n y: number,\r\n ): CSSProperties | undefined => {\r\n if (!props.sticky && !column.fixed) return undefined;\r\n\r\n return {\r\n position: 'sticky',\r\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,\r\n left: column.fixed ? toStyleSizeValue(column.fixedOffset) : undefined,\r\n top: props.sticky\r\n ? `calc(var(--v-table-header-height) * ${y})`\r\n : undefined,\r\n };\r\n };\r\n\r\n function onClick(e: Event) {\r\n //\r\n }\r\n\r\n function getSortDirection(column: InternalDataTableHeader) {\r\n const found = sortBy.value.find((by) => by.key === column.key);\r\n if (!found) {\r\n return undefined;\r\n }\r\n if (found.order === 'asc') {\r\n return 'asc';\r\n }\r\n if (found.order === 'desc') {\r\n return 'desc';\r\n }\r\n }\r\n\r\n const YDataTableTh = ({\r\n column,\r\n x,\r\n y,\r\n }: {\r\n column: InternalDataTableHeader;\r\n x: number;\r\n y: number;\r\n }) => {\r\n return (\r\n <YDataTableCell\r\n type=\"head\"\r\n align={column.align}\r\n fixed={\r\n column.fixed ? (column.lastFixed ? 'last' : 'lead') : undefined\r\n }\r\n class={[\r\n 'y-data-table-header',\r\n {\r\n 'y-data-table-header--sortable': column.sortable,\r\n 'y-data-table-header--sorted': isSorted(column),\r\n 'y-data-table-header--select': column.key === 'data-table-select',\r\n },\r\n ]}\r\n style={{\r\n width: toStyleSizeValue(column.width),\r\n minWidth: toStyleSizeValue(column.width),\r\n maxWidth: toStyleSizeValue(column.maxWidth),\r\n ...getFixedStyles(column, y),\r\n }}\r\n {...{ rowspan: column.rowspan, colspan: column.colspan }}\r\n onClick={onClick}\r\n >\r\n {{\r\n default: () => {\r\n const headerSlotName = `header.${column.key}` as const;\r\n const headerSlotProps = {\r\n column,\r\n selectAll,\r\n isSorted,\r\n toggleSort,\r\n sortBy: sortBy.value,\r\n someSelected: someSelected.value,\r\n allSelected: allSelected.value,\r\n selectables: selectables.value,\r\n getSortDirection,\r\n };\r\n\r\n if (slots[headerSlotName]) {\r\n return slots[headerSlotName]?.(headerSlotProps);\r\n }\r\n\r\n if (column.key === 'data-table-select') {\r\n return (\r\n slots['header.data-table-select']?.(headerSlotProps) ??\r\n (showSelectAll && (\r\n <YIconCheckbox\r\n checked={allSelected.value}\r\n indeterminate={!allSelected.value && someSelected.value}\r\n disabled={selectables.value.length < 1}\r\n {...{\r\n onClick: (e: MouseEvent) => {\r\n e.stopPropagation();\r\n selectAll(!allSelected.value);\r\n },\r\n }}\r\n ></YIconCheckbox>\r\n ))\r\n );\r\n }\r\n\r\n return (\r\n <div class=\"y-data-table-header__content\">\r\n <span class=\"y-data-table-header__text\">{column.text}</span>\r\n <span\r\n class={[\r\n 'y-data-table-header__sorting-icon',\r\n {\r\n 'y-data-table-header__sorting-icon--disabled':\r\n !column.sortable,\r\n },\r\n ]}\r\n onClick={\r\n column.sortable\r\n ? (e) => {\r\n e.stopPropagation();\r\n toggleSort(column);\r\n }\r\n : undefined\r\n }\r\n >\r\n <YIconSort\r\n disabled={!column.sortable}\r\n direction={getSortDirection(column)}\r\n ></YIconSort>\r\n </span>\r\n </div>\r\n );\r\n },\r\n }}\r\n </YDataTableCell>\r\n );\r\n };\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n {slots.head\r\n ? slots.head?.(props)\r\n : headers.value.map((row, y) => (\r\n <tr>\r\n {row.map((column, x) => (\r\n <YDataTableTh column={column} x={x} y={y} />\r\n ))}\r\n </tr>\r\n ))}\r\n </>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableHead = InstanceType<typeof YDataTableHead>;\r\n"],"mappings":";AAAA,SAAwBA,eAAe,QAAQ,KAAK;AAAC,SAE5CC,SAAS;AAAA,SACTC,gBAAgB;AAAA,SAChBC,YAAY;AAAA,SACZC,SAAS;AAAA,SACTC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,UAAU;AAAA,SAEVC,aAAa;AAGtB,OAAO,MAAMC,wBAAwB,GAAGP,YAAY,CAClD;EACEQ,SAAS,EAAEC,OAAO;EAClBC,WAAW,EAAE;IACXC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,YAAY,EAAE;IACZH,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDE,YAAY,EAAEN,OAAO;EACrBO,MAAM,EAAEP;AACV,CAAC,EACD,gBACF,CAAC;AAED,OAAO,MAAMQ,cAAc,GAAGpB,eAAe,CAAC;EAC5CqB,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVjB;EACF,CAAC;EACDkB,KAAK,EAAE;IACL,GAAGb,wBAAwB,CAAC;EAC9B,CAAC;EACDc,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAM;MAAEE,UAAU;MAAEC,MAAM;MAAEC;IAAS,CAAC,GAAGrB,UAAU,CAAC,CAAC;IACrD,MAAM;MAAEsB,YAAY;MAAEC,WAAW;MAAEC,SAAS;MAAEC,aAAa;MAAEC;IAAY,CAAC,GACxE3B,YAAY,CAAC,CAAC;IAChB,MAAM;MAAE4B,OAAO;MAAEC;IAAQ,CAAC,GAAG9B,SAAS,CAAC,CAAC;IAExC,MAAM+B,cAAc,GAAGA,CACrBC,MAA+B,EAC/BC,CAAS,KACqB;MAC9B,IAAI,CAAChB,KAAK,CAACJ,MAAM,IAAI,CAACmB,MAAM,CAACE,KAAK,EAAE,OAAOC,SAAS;MAEpD,OAAO;QACLC,QAAQ,EAAE,QAAQ;QAClBC,MAAM,EAAEL,MAAM,CAACE,KAAK,GAAG,CAAC,GAAGjB,KAAK,CAACJ,MAAM,GAAG,CAAC,GAAGsB,SAAS;QACvDG,IAAI,EAAEN,MAAM,CAACE,KAAK,GAAGtC,gBAAgB,CAACoC,MAAM,CAACO,WAAW,CAAC,GAAGJ,SAAS;QACrEK,GAAG,EAAEvB,KAAK,CAACJ,MAAM,GACZ,uCAAsCoB,CAAE,GAAE,GAC3CE;MACN,CAAC;IACH,CAAC;IAED,SAASM,OAAOA,CAACC,CAAQ,EAAE;MACzB;IAAA;IAGF,SAASC,gBAAgBA,CAACX,MAA+B,EAAE;MACzD,MAAMY,KAAK,GAAGtB,MAAM,CAACuB,KAAK,CAACC,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACC,GAAG,KAAKhB,MAAM,CAACgB,GAAG,CAAC;MAC9D,IAAI,CAACJ,KAAK,EAAE;QACV,OAAOT,SAAS;MAClB;MACA,IAAIS,KAAK,CAACK,KAAK,KAAK,KAAK,EAAE;QACzB,OAAO,KAAK;MACd;MACA,IAAIL,KAAK,CAACK,KAAK,KAAK,MAAM,EAAE;QAC1B,OAAO,MAAM;MACf;IACF;IAEA,MAAMC,YAAY,GAAGC,KAAA,IAQf;MAAA,IARgB;QACpBnB,MAAM;QACNoB,CAAC;QACDnB;MAKF,CAAC,GAAAkB,KAAA;MACC,OAAAE,YAAA,CAAAtD,cAAA,EAAAuD,WAAA;QAAA;QAAA,SAGWtB,MAAM,CAACuB,KAAK;QAAA,SAEjBvB,MAAM,CAACE,KAAK,GAAIF,MAAM,CAACwB,SAAS,GAAG,MAAM,GAAG,MAAM,GAAIrB,SAAS;QAAA,SAE1D,CACL,qBAAqB,EACrB;UACE,+BAA+B,EAAEH,MAAM,CAACyB,QAAQ;UAChD,6BAA6B,EAAElC,QAAQ,CAACS,MAAM,CAAC;UAC/C,6BAA6B,EAAEA,MAAM,CAACgB,GAAG,KAAK;QAChD,CAAC,CACF;QAAA,SACM;UACLU,KAAK,EAAE9D,gBAAgB,CAACoC,MAAM,CAAC0B,KAAK,CAAC;UACrCC,QAAQ,EAAE/D,gBAAgB,CAACoC,MAAM,CAAC0B,KAAK,CAAC;UACxCE,QAAQ,EAAEhE,gBAAgB,CAACoC,MAAM,CAAC4B,QAAQ,CAAC;UAC3C,GAAG7B,cAAc,CAACC,MAAM,EAAEC,CAAC;QAC7B;MAAC;QACK4B,OAAO,EAAE7B,MAAM,CAAC6B,OAAO;QAAEC,OAAO,EAAE9B,MAAM,CAAC8B;MAAO;QAAA,WAC7CrB;MAAO;QAGd/B,OAAO,EAAEA,CAAA,KAAM;UACb,MAAMqD,cAAc,GAAI,UAAS/B,MAAM,CAACgB,GAAI,EAAU;UACtD,MAAMgB,eAAe,GAAG;YACtBhC,MAAM;YACNN,SAAS;YACTH,QAAQ;YACRF,UAAU;YACVC,MAAM,EAAEA,MAAM,CAACuB,KAAK;YACpBrB,YAAY,EAAEA,YAAY,CAACqB,KAAK;YAChCpB,WAAW,EAAEA,WAAW,CAACoB,KAAK;YAC9BjB,WAAW,EAAEA,WAAW,CAACiB,KAAK;YAC9BF;UACF,CAAC;UAED,IAAIvB,KAAK,CAAC2C,cAAc,CAAC,EAAE;YACzB,OAAO3C,KAAK,CAAC2C,cAAc,CAAC,GAAGC,eAAe,CAAC;UACjD;UAEA,IAAIhC,MAAM,CAACgB,GAAG,KAAK,mBAAmB,EAAE;YACtC,OACE5B,KAAK,CAAC,0BAA0B,CAAC,GAAG4C,eAAe,CAAC,KACnDrC,aAAa,IAAA0B,YAAA,CAAAlD,aAAA,EAAAmD,WAAA;cAAA,WAED7B,WAAW,CAACoB,KAAK;cAAA,iBACX,CAACpB,WAAW,CAACoB,KAAK,IAAIrB,YAAY,CAACqB,KAAK;cAAA,YAC7CjB,WAAW,CAACiB,KAAK,CAACoB,MAAM,GAAG;YAAC;cAEpCxB,OAAO,EAAGC,CAAa,IAAK;gBAC1BA,CAAC,CAACwB,eAAe,CAAC,CAAC;gBACnBxC,SAAS,CAAC,CAACD,WAAW,CAACoB,KAAK,CAAC;cAC/B;YAAC,SAGN,CAAC;UAEN;UAEA,OAAAQ,YAAA;YAAA;UAAA,IAAAA,YAAA;YAAA;UAAA,IAE6CrB,MAAM,CAACmC,IAAI,IAAAd,YAAA;YAAA,SAE3C,CACL,mCAAmC,EACnC;cACE,6CAA6C,EAC3C,CAACrB,MAAM,CAACyB;YACZ,CAAC,CACF;YAAA,WAECzB,MAAM,CAACyB,QAAQ,GACVf,CAAC,IAAK;cACLA,CAAC,CAACwB,eAAe,CAAC,CAAC;cACnB7C,UAAU,CAACW,MAAM,CAAC;YACpB,CAAC,GACDG;UAAS,IAAAkB,YAAA,CAAAvD,SAAA;YAAA,YAIH,CAACkC,MAAM,CAACyB,QAAQ;YAAA,aACfd,gBAAgB,CAACX,MAAM;UAAC;QAK7C;MAAC;IAIT,CAAC;IAEDrC,SAAS,CAAC,MAAM;MACd,OAAA0D,YAAA,CAAAe,SAAA,SAEKhD,KAAK,CAACiD,IAAI,GACPjD,KAAK,CAACiD,IAAI,GAAGpD,KAAK,CAAC,GACnBa,OAAO,CAACe,KAAK,CAACyB,GAAG,CAAC,CAACC,GAAG,EAAEtC,CAAC,KAAAoB,YAAA,cAEpBkB,GAAG,CAACD,GAAG,CAAC,CAACtC,MAAM,EAAEoB,CAAC,KAAAC,YAAA,CAAAH,YAAA;QAAA,UACKlB,MAAM;QAAA,KAAKoB,CAAC;QAAA,KAAKnB;MAAC,QACzC,CAAC,EAEL,CAAC;IAGZ,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
2
  import { computed, defineComponent } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
4
  import { getPropertyFromItem } from "../../util/common.mjs";
5
- import { propsFactory } from "../../util/vue-component.mjs";
5
+ import { propsFactory } from "../../util/component/index.mjs";
6
6
  import { YIconCheckbox } from "../icons/index.mjs";
7
7
  import { YDataTableCell } from "./YDataTableCell.mjs";
8
8
  import { useHeader } from "./composibles/header.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableRow.mjs","names":["computed","defineComponent","useRender","getPropertyFromItem","propsFactory","YIconCheckbox","YDataTableCell","useHeader","useSelection","pressYDataTableRowProps","index","Number","onClick","Function","onContextmenu","onDblclick","onHover","YDataTableRow","name","props","item","Object","cellProps","setup","_ref","emit","slots","isSelected","toggleSelect","columns","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","_createVNode","value","map","column","colIndex","slotProps","raw","internalItem","key","result","call","_mergeProps","align","fixed","lastFixed","undefined","fixedOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { PropType, computed, defineComponent, ref } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { getPropertyFromItem } from '../../util/common';\nimport { bindClasses, propsFactory } from '../../util/vue-component';\nimport { YIconCheckbox } from '../icons';\nimport { YDataTableCell } from './YDataTableCell';\nimport { useHeader } from './composibles/header';\nimport { useSelection } from './composibles/selection';\nimport { CellProps, DataTableItem } from './types';\n\nexport const pressYDataTableRowProps = propsFactory(\n {\n index: Number as PropType<number>,\n onClick: Function as PropType<(...args: any[]) => void>,\n onContextmenu: Function as PropType<(...args: any[]) => void>,\n onDblclick: Function as PropType<(...args: any[]) => void>,\n onHover: Function as PropType<(...args: any[]) => void>,\n },\n 'YDataTableRow',\n);\n\nexport const YDataTableRow = defineComponent({\n name: 'YDataTableRow',\n props: {\n item: Object as PropType<DataTableItem>,\n cellProps: [Object, Function] as PropType<CellProps>,\n ...pressYDataTableRowProps(),\n },\n setup(props, { emit, slots }) {\n const { isSelected, toggleSelect } = useSelection();\n const { columns } = useHeader();\n\n const selected = computed(() => props.item && isSelected(props.item));\n\n function arrayClasses(classes: string | string[]) {\n const ret: string[] = [];\n if (typeof classes === 'string') {\n ret.push(classes);\n }\n if (Array.isArray(classes)) {\n classes.forEach((c) => {\n if (typeof c === 'string') ret.push(c);\n });\n }\n return ret;\n }\n\n useRender(() => {\n return (\n <tr\n class={[\n 'y-data-table__row',\n { 'y-data-table__row--selected': selected.value },\n ]}\n onClick={props.onClick as any}\n onContextmenu={props.onContextmenu as any}\n onDblclick={props.onDblclick as any}\n >\n {props.item &&\n columns.value.map((column, colIndex) => {\n const item = props.item!;\n const slotProps = {\n index: props.index!,\n item: props.item!.raw,\n internalItem: props.item!,\n columns: columns.value,\n value: getPropertyFromItem(item.columns, column.key),\n selected: selected.value,\n toggleSelect,\n };\n\n const classes = computed(() => {\n const ret: string[] = [];\n if (typeof column.classes === 'function') {\n const result = column.classes.call(\n null,\n slotProps.item,\n slotProps.index,\n column,\n );\n if (result) {\n ret.push(...arrayClasses(result));\n }\n } else if (column.classes) {\n ret.push(...arrayClasses(column.classes));\n }\n\n return ret;\n });\n\n const cellProps =\n typeof props.cellProps === 'function'\n ? props.cellProps({\n index: slotProps.index,\n column,\n internalItem: slotProps.internalItem,\n item: slotProps.item,\n value: slotProps.value,\n selected: slotProps.selected,\n })\n : props.cellProps;\n\n return (\n <YDataTableCell\n align={column.align}\n fixed={\n column.fixed\n ? column.lastFixed\n ? 'last'\n : 'lead'\n : undefined\n }\n fixedOffset={column.fixedOffset}\n width={column.width}\n maxWidth={column.maxWidth}\n class={[\n 'y-data-table-data',\n {\n 'y-data-table-data--select':\n column.key === 'data-table-select',\n },\n ...classes.value,\n ]}\n {...cellProps}\n >\n {{\n default: () => {\n const slotName = `item.${column.key}`;\n\n if (slots[slotName]) {\n return slots[slotName]?.(slotProps);\n }\n\n if (column.key === 'data-table-select') {\n return (\n slots['item.data-table-select']?.(slotProps) ?? (\n <YIconCheckbox\n checked={isSelected(item)}\n disabled={!item.selectable}\n {...{\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n toggleSelect(item);\n },\n }}\n ></YIconCheckbox>\n )\n );\n }\n\n return slotProps.value;\n },\n }}\n </YDataTableCell>\n );\n })}\n </tr>\n );\n });\n },\n});\n\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\n"],"mappings":";AAAA,SAAmBA,QAAQ,EAAEC,eAAe,QAAa,KAAK;AAAC,SAEtDC,SAAS;AAAA,SACTC,mBAAmB;AAAA,SACNC,YAAY;AAAA,SACzBC,aAAa;AAAA,SACbC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,YAAY;AAGrB,OAAO,MAAMC,uBAAuB,GAAGL,YAAY,CACjD;EACEM,KAAK,EAAEC,MAA0B;EACjCC,OAAO,EAAEC,QAA8C;EACvDC,aAAa,EAAED,QAA8C;EAC7DE,UAAU,EAAEF,QAA8C;EAC1DG,OAAO,EAAEH;AACX,CAAC,EACD,eACF,CAAC;AAED,OAAO,MAAMI,aAAa,GAAGhB,eAAe,CAAC;EAC3CiB,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE;IACLC,IAAI,EAAEC,MAAiC;IACvCC,SAAS,EAAE,CAACD,MAAM,EAAER,QAAQ,CAAwB;IACpD,GAAGJ,uBAAuB,CAAC;EAC7B,CAAC;EACDc,KAAKA,CAACJ,KAAK,EAAAK,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC1B,MAAM;MAAEG,UAAU;MAAEC;IAAa,CAAC,GAAGpB,YAAY,CAAC,CAAC;IACnD,MAAM;MAAEqB;IAAQ,CAAC,GAAGtB,SAAS,CAAC,CAAC;IAE/B,MAAMuB,QAAQ,GAAG9B,QAAQ,CAAC,MAAMmB,KAAK,CAACC,IAAI,IAAIO,UAAU,CAACR,KAAK,CAACC,IAAI,CAAC,CAAC;IAErE,SAASW,YAAYA,CAACC,OAA0B,EAAE;MAChD,MAAMC,GAAa,GAAG,EAAE;MACxB,IAAI,OAAOD,OAAO,KAAK,QAAQ,EAAE;QAC/BC,GAAG,CAACC,IAAI,CAACF,OAAO,CAAC;MACnB;MACA,IAAIG,KAAK,CAACC,OAAO,CAACJ,OAAO,CAAC,EAAE;QAC1BA,OAAO,CAACK,OAAO,CAAEC,CAAC,IAAK;UACrB,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAEL,GAAG,CAACC,IAAI,CAACI,CAAC,CAAC;QACxC,CAAC,CAAC;MACJ;MACA,OAAOL,GAAG;IACZ;IAEA/B,SAAS,CAAC,MAAM;MACd,OAAAqC,YAAA;QAAA,SAEW,CACL,mBAAmB,EACnB;UAAE,6BAA6B,EAAET,QAAQ,CAACU;QAAM,CAAC,CAClD;QAAA,WACQrB,KAAK,CAACP,OAAO;QAAA,iBACPO,KAAK,CAACL,aAAa;QAAA,cACtBK,KAAK,CAACJ;MAAU,IAE3BI,KAAK,CAACC,IAAI,IACTS,OAAO,CAACW,KAAK,CAACC,GAAG,CAAC,CAACC,MAAM,EAAEC,QAAQ,KAAK;QACtC,MAAMvB,IAAI,GAAGD,KAAK,CAACC,IAAK;QACxB,MAAMwB,SAAS,GAAG;UAChBlC,KAAK,EAAES,KAAK,CAACT,KAAM;UACnBU,IAAI,EAAED,KAAK,CAACC,IAAI,CAAEyB,GAAG;UACrBC,YAAY,EAAE3B,KAAK,CAACC,IAAK;UACzBS,OAAO,EAAEA,OAAO,CAACW,KAAK;UACtBA,KAAK,EAAErC,mBAAmB,CAACiB,IAAI,CAACS,OAAO,EAAEa,MAAM,CAACK,GAAG,CAAC;UACpDjB,QAAQ,EAAEA,QAAQ,CAACU,KAAK;UACxBZ;QACF,CAAC;QAED,MAAMI,OAAO,GAAGhC,QAAQ,CAAC,MAAM;UAC7B,MAAMiC,GAAa,GAAG,EAAE;UACxB,IAAI,OAAOS,MAAM,CAACV,OAAO,KAAK,UAAU,EAAE;YACxC,MAAMgB,MAAM,GAAGN,MAAM,CAACV,OAAO,CAACiB,IAAI,CAChC,IAAI,EACJL,SAAS,CAACxB,IAAI,EACdwB,SAAS,CAAClC,KAAK,EACfgC,MACF,CAAC;YACD,IAAIM,MAAM,EAAE;cACVf,GAAG,CAACC,IAAI,CAAC,GAAGH,YAAY,CAACiB,MAAM,CAAC,CAAC;YACnC;UACF,CAAC,MAAM,IAAIN,MAAM,CAACV,OAAO,EAAE;YACzBC,GAAG,CAACC,IAAI,CAAC,GAAGH,YAAY,CAACW,MAAM,CAACV,OAAO,CAAC,CAAC;UAC3C;UAEA,OAAOC,GAAG;QACZ,CAAC,CAAC;QAEF,MAAMX,SAAS,GACb,OAAOH,KAAK,CAACG,SAAS,KAAK,UAAU,GACjCH,KAAK,CAACG,SAAS,CAAC;UACdZ,KAAK,EAAEkC,SAAS,CAAClC,KAAK;UACtBgC,MAAM;UACNI,YAAY,EAAEF,SAAS,CAACE,YAAY;UACpC1B,IAAI,EAAEwB,SAAS,CAACxB,IAAI;UACpBoB,KAAK,EAAEI,SAAS,CAACJ,KAAK;UACtBV,QAAQ,EAAEc,SAAS,CAACd;QACtB,CAAC,CAAC,GACFX,KAAK,CAACG,SAAS;QAErB,OAAAiB,YAAA,CAAAjC,cAAA,EAAA4C,WAAA;UAAA,SAEWR,MAAM,CAACS,KAAK;UAAA,SAEjBT,MAAM,CAACU,KAAK,GACRV,MAAM,CAACW,SAAS,GACd,MAAM,GACN,MAAM,GACRC,SAAS;UAAA,eAEFZ,MAAM,CAACa,WAAW;UAAA,SACxBb,MAAM,CAACc,KAAK;UAAA,YACTd,MAAM,CAACe,QAAQ;UAAA,SAClB,CACL,mBAAmB,EACnB;YACE,2BAA2B,EACzBf,MAAM,CAACK,GAAG,KAAK;UACnB,CAAC,EACD,GAAGf,OAAO,CAACQ,KAAK;QACjB,GACGlB,SAAS;UAGXoC,OAAO,EAAEA,CAAA,KAAM;YACb,MAAMC,QAAQ,GAAI,QAAOjB,MAAM,CAACK,GAAI,EAAC;YAErC,IAAIrB,KAAK,CAACiC,QAAQ,CAAC,EAAE;cACnB,OAAOjC,KAAK,CAACiC,QAAQ,CAAC,GAAGf,SAAS,CAAC;YACrC;YAEA,IAAIF,MAAM,CAACK,GAAG,KAAK,mBAAmB,EAAE;cACtC,OACErB,KAAK,CAAC,wBAAwB,CAAC,GAAGkB,SAAS,CAAC,IAAAL,YAAA,CAAAlC,aAAA,EAAA6C,WAAA;gBAAA,WAE/BvB,UAAU,CAACP,IAAI,CAAC;gBAAA,YACf,CAACA,IAAI,CAACwC;cAAU;gBAExBhD,OAAO,EAAGiD,CAAa,IAAK;kBAC1BA,CAAC,CAACC,eAAe,CAAC,CAAC;kBACnBlC,YAAY,CAACR,IAAI,CAAC;gBACpB;cAAC,SAGN;YAEL;YAEA,OAAOwB,SAAS,CAACJ,KAAK;UACxB;QAAC;MAIT,CAAC,CAAC;IAGV,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableRow.mjs","names":["computed","defineComponent","useRender","getPropertyFromItem","propsFactory","YIconCheckbox","YDataTableCell","useHeader","useSelection","pressYDataTableRowProps","index","Number","onClick","Function","onContextmenu","onDblclick","onHover","YDataTableRow","name","props","item","Object","cellProps","setup","_ref","emit","slots","isSelected","toggleSelect","columns","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","_createVNode","value","map","column","colIndex","slotProps","raw","internalItem","key","result","call","_mergeProps","align","fixed","lastFixed","undefined","fixedOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { PropType, computed, defineComponent, ref } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { getPropertyFromItem } from '../../util/common';\r\nimport { bindClasses, propsFactory } from '../../util/component';\r\nimport { YIconCheckbox } from '../icons';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from './composibles/header';\r\nimport { useSelection } from './composibles/selection';\r\nimport { CellProps, DataTableItem } from './types';\r\n\r\nexport const pressYDataTableRowProps = propsFactory(\r\n {\r\n index: Number as PropType<number>,\r\n onClick: Function as PropType<(...args: any[]) => void>,\r\n onContextmenu: Function as PropType<(...args: any[]) => void>,\r\n onDblclick: Function as PropType<(...args: any[]) => void>,\r\n onHover: Function as PropType<(...args: any[]) => void>,\r\n },\r\n 'YDataTableRow',\r\n);\r\n\r\nexport const YDataTableRow = defineComponent({\r\n name: 'YDataTableRow',\r\n props: {\r\n item: Object as PropType<DataTableItem>,\r\n cellProps: [Object, Function] as PropType<CellProps>,\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 const selected = computed(() => props.item && isSelected(props.item));\r\n\r\n function arrayClasses(classes: string | string[]) {\r\n const ret: string[] = [];\r\n if (typeof classes === 'string') {\r\n ret.push(classes);\r\n }\r\n if (Array.isArray(classes)) {\r\n classes.forEach((c) => {\r\n if (typeof c === 'string') ret.push(c);\r\n });\r\n }\r\n return ret;\r\n }\r\n\r\n useRender(() => {\r\n return (\r\n <tr\r\n class={[\r\n 'y-data-table__row',\r\n { 'y-data-table__row--selected': selected.value },\r\n ]}\r\n onClick={props.onClick as any}\r\n onContextmenu={props.onContextmenu as any}\r\n onDblclick={props.onDblclick as any}\r\n >\r\n {props.item &&\r\n columns.value.map((column, colIndex) => {\r\n const item = props.item!;\r\n const slotProps = {\r\n index: props.index!,\r\n item: props.item!.raw,\r\n internalItem: props.item!,\r\n columns: columns.value,\r\n value: getPropertyFromItem(item.columns, column.key),\r\n selected: selected.value,\r\n toggleSelect,\r\n };\r\n\r\n const classes = computed(() => {\r\n const ret: string[] = [];\r\n if (typeof column.classes === 'function') {\r\n const result = column.classes.call(\r\n null,\r\n slotProps.item,\r\n slotProps.index,\r\n column,\r\n );\r\n if (result) {\r\n ret.push(...arrayClasses(result));\r\n }\r\n } else if (column.classes) {\r\n ret.push(...arrayClasses(column.classes));\r\n }\r\n\r\n return ret;\r\n });\r\n\r\n const cellProps =\r\n typeof props.cellProps === 'function'\r\n ? props.cellProps({\r\n index: slotProps.index,\r\n column,\r\n internalItem: slotProps.internalItem,\r\n item: slotProps.item,\r\n value: slotProps.value,\r\n selected: slotProps.selected,\r\n })\r\n : props.cellProps;\r\n\r\n return (\r\n <YDataTableCell\r\n align={column.align}\r\n fixed={\r\n column.fixed\r\n ? column.lastFixed\r\n ? 'last'\r\n : 'lead'\r\n : undefined\r\n }\r\n fixedOffset={column.fixedOffset}\r\n width={column.width}\r\n maxWidth={column.maxWidth}\r\n class={[\r\n 'y-data-table-data',\r\n {\r\n 'y-data-table-data--select':\r\n column.key === 'data-table-select',\r\n },\r\n ...classes.value,\r\n ]}\r\n {...cellProps}\r\n >\r\n {{\r\n default: () => {\r\n const slotName = `item.${column.key}`;\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 slotProps.value;\r\n },\r\n }}\r\n </YDataTableCell>\r\n );\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":"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"}
@@ -4,7 +4,7 @@ import { computed, defineComponent, provide } from 'vue';
4
4
  import { useRender } from "../../composables/component.mjs";
5
5
  import { useResizeObserver } from "../../composables/resize-observer.mjs";
6
6
  import { toStyleSizeValue } from "../../util/index.mjs";
7
- import { chooseProps, propsFactory } from "../../util/vue-component.mjs";
7
+ import { chooseProps, propsFactory } from "../../util/component/index.mjs";
8
8
  import { pressDataTableProps } from "./YDataTable.mjs";
9
9
  import { YDataTableBody } from "./YDataTableBody.mjs";
10
10
  import { YDataTableControl } from "./YDataTableControl.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableServer.mjs","names":["toRef","computed","defineComponent","provide","useRender","useResizeObserver","toStyleSizeValue","chooseProps","propsFactory","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","resizeObservedRef","headObserveRef","contentRect","headRect","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 { toRef } from '@vue/runtime-core';\nimport { PropType, computed, defineComponent, provide } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { useResizeObserver } from '../../composables/resize-observer';\nimport { toStyleSizeValue } from '../../util';\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 { 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 { resizeObservedRef: headObserveRef, contentRect: headRect } =\n useResizeObserver();\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":["toRef","computed","defineComponent","provide","useRender","useResizeObserver","toStyleSizeValue","chooseProps","propsFactory","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","resizeObservedRef","headObserveRef","contentRect","headRect","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 { toRef } from '@vue/runtime-core';\r\nimport { PropType, computed, defineComponent, provide } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { useResizeObserver } from '../../composables/resize-observer';\r\nimport { toStyleSizeValue } from '../../util';\r\nimport { chooseProps, propsFactory } from '../../util/component';\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 { resizeObservedRef: headObserveRef, contentRect: headRect } =\r\n useResizeObserver();\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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"}
@@ -3,7 +3,7 @@ import { defineComponent, provide } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
4
  import { useResizeObserver } from "../../composables/resize-observer.mjs";
5
5
  import { toStyleSizeValue } from "../../util/ui.mjs";
6
- import { propsFactory } from "../../util/vue-component.mjs";
6
+ import { propsFactory } from "../../util/component/index.mjs";
7
7
  import "./YTable.scss";
8
8
  export const pressYTableProps = propsFactory({
9
9
  tag: {
@@ -1 +1 @@
1
- {"version":3,"file":"YTable.mjs","names":["defineComponent","provide","useRender","useResizeObserver","toStyleSizeValue","propsFactory","pressYTableProps","tag","type","String","default","fixedHead","Boolean","height","Number","flexHeight","onScroll","Function","YTable","name","props","emits","setup","_ref","slots","emit","resizeObservedRef","contentRect","wrapperRef","wrapperRect","tableRef","tableRect","containerRect","e","ElTag","containerHeight","value","_createVNode","width","top","leading","trailing","container","bottom"],"sources":["../../../src/components/table/YTable.tsx"],"sourcesContent":["import { PropType, defineComponent, provide } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { useResizeObserver } from '../../composables/resize-observer';\nimport { toStyleSizeValue } from '../../util/ui';\nimport { propsFactory } from '../../util/vue-component';\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 { resizeObservedRef, contentRect } = useResizeObserver();\n const { resizeObservedRef: wrapperRef, contentRect: wrapperRect } =\n useResizeObserver();\n const { resizeObservedRef: tableRef, contentRect: tableRect } =\n useResizeObserver();\n provide('YTable', { containerRect: contentRect });\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 ? contentRect.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 contentRect.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={resizeObservedRef} 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?.(resizeObservedRef, contentRect)\n )}\n {slots.bottom?.()}\n </ElTag>\n );\n });\n },\n});\n\nexport type YTable = InstanceType<typeof YTable>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YTable.mjs","names":["defineComponent","provide","useRender","useResizeObserver","toStyleSizeValue","propsFactory","pressYTableProps","tag","type","String","default","fixedHead","Boolean","height","Number","flexHeight","onScroll","Function","YTable","name","props","emits","setup","_ref","slots","emit","resizeObservedRef","contentRect","wrapperRef","wrapperRect","tableRef","tableRect","containerRect","e","ElTag","containerHeight","value","_createVNode","width","top","leading","trailing","container","bottom"],"sources":["../../../src/components/table/YTable.tsx"],"sourcesContent":["import { PropType, defineComponent, provide } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { useResizeObserver } from '../../composables/resize-observer';\r\nimport { toStyleSizeValue } from '../../util/ui';\r\nimport { propsFactory } from '../../util/component';\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 { resizeObservedRef, contentRect } = useResizeObserver();\r\n const { resizeObservedRef: wrapperRef, contentRect: wrapperRect } =\r\n useResizeObserver();\r\n const { resizeObservedRef: tableRef, contentRect: tableRect } =\r\n useResizeObserver();\r\n provide('YTable', { containerRect: contentRect });\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 ? contentRect.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 contentRect.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={resizeObservedRef} 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?.(resizeObservedRef, contentRect)\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":"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"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide, ref, watchEffect } from 'vue';
2
2
  import { getRangeArr } from "../../../util/common.mjs";
3
- import { propsFactory } from "../../../util/vue-component.mjs";
3
+ import { propsFactory } from "../../../util/component/index.mjs";
4
4
  export const pressDataTableHeader = propsFactory({
5
5
  headers: {
6
6
  type: Array,
@@ -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","unshift","rowspan","splice","fixedRows","fixedOffsets","fill","forEach","_ref2","i","push","fixedOffset","Number","fixed","lastFixed","seen","Set","filtered","has","add","at","data","useHeader","Error","description"],"sources":["../../../../src/components/table/composibles/header.ts"],"sourcesContent":["import {\n type DeepReadonly,\n type InjectionKey,\n type PropType,\n type Ref,\n inject,\n provide,\n ref,\n watchEffect,\n} from 'vue';\n\nimport { getRangeArr } from '../../../util/common';\nimport { propsFactory } from '../../../util/vue-component';\nimport { type DataTableHeader, type InternalDataTableHeader } from '../types';\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 flat.unshift({\n column: {\n ...defaultActionHeader,\n key: 'data-table-select',\n rowspan: rowCount,\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":"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"}
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","unshift","rowspan","splice","fixedRows","fixedOffsets","fill","forEach","_ref2","i","push","fixedOffset","Number","fixed","lastFixed","seen","Set","filtered","has","add","at","data","useHeader","Error","description"],"sources":["../../../../src/components/table/composibles/header.ts"],"sourcesContent":["import {\r\n type DeepReadonly,\r\n type InjectionKey,\r\n type PropType,\r\n type Ref,\r\n inject,\r\n provide,\r\n ref,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { getRangeArr } from '../../../util/common';\r\nimport { propsFactory } from '../../../util/component';\r\nimport { type DataTableHeader, type InternalDataTableHeader } from '../types';\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 flat.unshift({\r\n column: {\r\n ...defaultActionHeader,\r\n key: 'data-table-select',\r\n rowspan: rowCount,\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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"}
@@ -1,6 +1,6 @@
1
1
  import { computed } from 'vue';
2
2
  import { getPropertyFromItem } from "../../../util/common.mjs";
3
- import { propsFactory } from "../../../util/vue-component.mjs";
3
+ import { propsFactory } from "../../../util/component/index.mjs";
4
4
  export const pressDataTableItemsProps = propsFactory({
5
5
  items: {
6
6
  type: Array,
@@ -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 { PropType, Ref, computed } from 'vue';\n\nimport { getPropertyFromItem } from '../../../util/common';\nimport { propsFactory } from '../../../util/vue-component';\n\nimport { CandidateKey } from '../../../types';\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\n ? item\n : key;\n const selectable = getPropertyFromItem(item, props.itemSelectable, true);\n const itemColumns = columns.reduce((acc, column) => {\n acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);\n return acc;\n }, {} as Record<string, unknown>);\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,SAAwBA,QAAQ,QAAQ,KAAK;AAAC,SAErCC,mBAAmB;AAAA,SACnBC,YAAY;AAYrB,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,GAC1BI,IAAI,GACJG,GAAG;EACP,MAAME,UAAU,GAAGpB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACxE,MAAMW,WAAW,GAAGJ,OAAO,CAACK,MAAM,CAAC,CAACC,GAAG,EAAEC,MAAM,KAAK;IAClDD,GAAG,CAACC,MAAM,CAACN,GAAG,CAAC,GAAGlB,mBAAmB,CAACe,IAAI,EAAES,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACN,GAAG,CAAC;IACvE,OAAOK,GAAG;EACZ,CAAC,EAAE,CAAC,CAA4B,CAAC;EAEjC,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 { PropType, Ref, computed } from 'vue';\r\n\r\nimport { getPropertyFromItem } from '../../../util/common';\r\nimport { propsFactory } from '../../../util/component';\r\n\r\nimport { CandidateKey } from '../../../types';\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\r\n ? item\r\n : key;\r\n const selectable = getPropertyFromItem(item, props.itemSelectable, true);\r\n const itemColumns = columns.reduce((acc, column) => {\r\n acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);\r\n return acc;\r\n }, {} as Record<string, unknown>);\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,SAAwBA,QAAQ,QAAQ,KAAK;AAAC,SAErCC,mBAAmB;AAAA,SACnBC,YAAY;AAYrB,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,GAC1BI,IAAI,GACJG,GAAG;EACP,MAAME,UAAU,GAAGpB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACxE,MAAMW,WAAW,GAAGJ,OAAO,CAACK,MAAM,CAAC,CAACC,GAAG,EAAEC,MAAM,KAAK;IAClDD,GAAG,CAACC,MAAM,CAACN,GAAG,CAAC,GAAGlB,mBAAmB,CAACe,IAAI,EAAES,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACN,GAAG,CAAC;IACvE,OAAOK,GAAG;EACZ,CAAC,EAAE,CAAC,CAA4B,CAAC;EAEjC,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,7 +1,7 @@
1
1
  import { computed, inject, provide, watchEffect } from 'vue';
2
2
  import { useModelDuplex } from "../../../composables/communication.mjs";
3
3
  import { clamp } from "../../../util/common.mjs";
4
- import { propsFactory } from "../../../util/vue-component.mjs";
4
+ import { propsFactory } from "../../../util/component/index.mjs";
5
5
  export const Y_DATA_TABLE_PAGINATION_KEY = Symbol.for('yuyeon.data-table.pagination');
6
6
  export const pressDataTablePaginationProps = propsFactory({
7
7
  page: {
@@ -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';\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/vue-component';\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":"AACA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,OAAO,EAAEC,WAAW,QAAQ,KAAK;AAAC,SAEpDC,cAAc;AAAA,SACdC,KAAK;AAAA,SACLC,YAAY;AAGrB,OAAO,MAAMC,2BAWX,GAAGC,MAAM,CAACC,GAAG,CAAC,8BAA8B,CAAC;AAE/C,OAAO,MAAMC,6BAA6B,GAAGJ,YAAY,CACvD;EACEK,IAAI,EAAE;IACJC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAA8B;IACnDC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRJ,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAA8B;IACnDC,OAAO,EAAE;EACX;AACF,CAAC,EACD,wBACF,CAAC;AAUD,OAAO,SAASE,gBAAgBA,CAACC,KAAsB,EAAE;EACvD,MAAMP,IAAI,GAAGP,cAAc,CACzBc,KAAK,EACL,MAAM,EACNC,SAAS,EACRC,KAAK,IAAK,EAAEA,KAAK,IAAI,CAAC,CACzB,CAAC;EACD,MAAMJ,QAAQ,GAAGZ,cAAc,CAC7Bc,KAAK,EACL,UAAU,EACVC,SAAS,EACRC,KAAK,IAAK,EAAEA,KAAK,IAAI,EAAE,CAC1B,CAAC;EACD,OAAO;IAAET,IAAI;IAAEK;EAAS,CAAC;AAC3B;AAEA,OAAO,SAASK,iBAAiBA,CAACC,OAIjC,EAAE;EACD,MAAM;IAAEX,IAAI;IAAEK,QAAQ;IAAEO;EAAM,CAAC,GAAGD,OAAO;EACzC,MAAME,UAAU,GAAGxB,QAAQ,CAAC,MAAM;IAChC,IAAIgB,QAAQ,CAACI,KAAK,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;IAEnC,OAAOJ,QAAQ,CAACI,KAAK,IAAIT,IAAI,CAACS,KAAK,GAAG,CAAC,CAAC;EAC1C,CAAC,CAAC;EACF,MAAMK,QAAQ,GAAGzB,QAAQ,CAAC,MAAM;IAC9B,IAAIgB,QAAQ,CAACI,KAAK,KAAK,CAAC,CAAC,EAAE,OAAOG,KAAK,CAACH,KAAK;IAE7C,OAAOM,IAAI,CAACC,GAAG,CAACJ,KAAK,CAACH,KAAK,EAAEI,UAAU,CAACJ,KAAK,GAAGJ,QAAQ,CAACI,KAAK,CAAC;EACjE,CAAC,CAAC;EAEF,MAAMQ,UAAU,GAAG5B,QAAQ,CAAC,MAAM;IAChC,IAAIgB,QAAQ,CAACI,KAAK,KAAK,CAAC,CAAC,IAAIG,KAAK,CAACH,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC;IAExD,OAAOM,IAAI,CAACG,IAAI,CAACN,KAAK,CAACH,KAAK,GAAGJ,QAAQ,CAACI,KAAK,CAAC;EAChD,CAAC,CAAC;EAEFjB,WAAW,CAAC,MAAM;IAChB,IAAIQ,IAAI,CAACS,KAAK,GAAGQ,UAAU,CAACR,KAAK,EAAE;MACjCT,IAAI,CAACS,KAAK,GAAGQ,UAAU,CAACR,KAAK;IAC/B;EACF,CAAC,CAAC;EAEF,SAASU,WAAWA,CAACV,KAAa,EAAE;IAClCJ,QAAQ,CAACI,KAAK,GAAGA,KAAK;IACtBT,IAAI,CAACS,KAAK,GAAG,CAAC;EAChB;EAEA,SAASW,QAAQA,CAAA,EAAG;IAClBpB,IAAI,CAACS,KAAK,GAAGf,KAAK,CAACM,IAAI,CAACS,KAAK,GAAG,CAAC,EAAE,CAAC,EAAEQ,UAAU,CAACR,KAAK,CAAC;EACzD;EAEA,SAASY,QAAQA,CAAA,EAAG;IAClBrB,IAAI,CAACS,KAAK,GAAGf,KAAK,CAACM,IAAI,CAACS,KAAK,GAAG,CAAC,EAAE,CAAC,EAAEQ,UAAU,CAACR,KAAK,CAAC;EACzD;EAEA,SAASa,OAAOA,CAACb,KAAa,EAAE;IAC9BT,IAAI,CAACS,KAAK,GAAGf,KAAK,CAACe,KAAK,EAAE,CAAC,EAAEQ,UAAU,CAACR,KAAK,CAAC;EAChD;EAEA,MAAMc,IAAoC,GAAG;IAC3CvB,IAAI;IACJK,QAAQ;IACRQ,UAAU;IACVC,QAAQ;IACRG,UAAU;IACVL,KAAK;IACLQ,QAAQ;IACRC,QAAQ;IACRC,OAAO;IACPH;EACF,CAAC;EAED5B,OAAO,CAACK,2BAA2B,EAAE2B,IAAI,CAAC;EAE1C,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC9B,MAAMD,IAAI,GAAGjC,MAAM,CAACM,2BAA2B,CAAC;EAChD,IAAI,CAAC2B,IAAI,EAAE;IACT,MAAM,IAAIE,KAAK,CAAE,iBAAgB7B,2BAA2B,CAAC8B,WAAY,EAAC,CAAC;EAC7E;EACA,OAAOH,IAAI;AACb;AAEA,OAAO,SAASI,iBAAiBA,CAAMhB,OAKtC,EAAE;EACD,MAAM;IAAEiB,KAAK;IAAEf,UAAU;IAAEC,QAAQ;IAAET;EAAS,CAAC,GAAGM,OAAO;EACzD,MAAMkB,cAAc,GAAGxC,QAAQ,CAAC,MAAM;IACpC,IAAIgB,QAAQ,CAACI,KAAK,IAAI,CAAC,EAAE,OAAOmB,KAAK,CAACnB,KAAK;IAE3C,OAAOmB,KAAK,CAACnB,KAAK,CAACqB,KAAK,CAACjB,UAAU,CAACJ,KAAK,EAAEK,QAAQ,CAACL,KAAK,CAAC;EAC5D,CAAC,CAAC;EAEF,OAAO;IAAEoB;EAAe,CAAC;AAC3B"}
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\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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"}
@@ -2,7 +2,7 @@ import { computed, inject, provide } from 'vue';
2
2
  import { useModelDuplex } from "../../../composables/communication.mjs";
3
3
  import { deepEqual } from "../../../util/index.mjs";
4
4
  import { wrapInArray } from "../../../util/array.mjs";
5
- import { propsFactory } from "../../../util/vue-component.mjs";
5
+ import { propsFactory } from "../../../util/component/index.mjs";
6
6
  export const pressDataTableSelectionProps = propsFactory({
7
7
  enableSelect: Boolean,
8
8
  selectStrategy: {
@@ -1 +1 @@
1
- {"version":3,"file":"selection.mjs","names":["computed","inject","provide","useModelDuplex","deepEqual","wrapInArray","propsFactory","pressDataTableSelectionProps","enableSelect","Boolean","selectStrategy","type","String","Object","default","modelValue","Array","valueEqual","Function","singleSelectStrategy","showSelectAll","allSelected","select","_ref","items","value","Set","selectAll","_ref2","selected","pageSelectStrategy","_ref3","pageItems","_ref4","item","add","delete","_ref5","allSelectStrategy","_ref6","allItems","_ref7","_ref8","Y_DATA_TABLE_SELECTION_KEY","Symbol","for","provideSelection","props","_ref9","v","map","find","values","allSelectables","filter","selectable","pageSelectables","isSelected","every","has","isSomeSelected","some","toggleSelect","selectables","someSelected","data","useSelection","Error","description"],"sources":["../../../../src/components/table/composibles/selection.ts"],"sourcesContent":["import { InjectionKey, PropType, Ref, computed, inject, provide } from 'vue';\n\nimport { useModelDuplex } from '../../../composables/communication';\nimport { deepEqual } from '../../../util';\nimport { wrapInArray } from '../../../util/array';\nimport { propsFactory } from '../../../util/vue-component';\nimport { DataTableProvideSelectionData } from '../types';\nimport { DataTableItemsProps } from './items';\n\nexport interface SelectableItem {\n key: string;\n value: any;\n selectable: boolean;\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean;\n allSelected: (data: {\n allItems: SelectableItem[];\n pageItems: SelectableItem[];\n }) => SelectableItem[];\n select: (data: {\n items: SelectableItem[];\n value: boolean;\n selected: Set<unknown>;\n }) => Set<unknown>;\n selectAll: (data: {\n value: boolean;\n allItems: SelectableItem[];\n pageItems: SelectableItem[];\n selected: Set<unknown>;\n }) => Set<unknown>;\n}\n\nexport const pressDataTableSelectionProps = propsFactory(\n {\n enableSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType<readonly any[]>,\n default: () => [],\n },\n valueEqual: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n },\n 'YDataTable--selection',\n);\n\ntype DataTableSelectionProps = Pick<DataTableItemsProps, 'itemKey'> & {\n modelValue: readonly any[];\n selectStrategy: 'single' | 'page' | 'all';\n 'onUpdate:modelValue': ((value: any[]) => void) | undefined;\n valueEqual: (a: any, b: any) => boolean;\n};\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items, value }) => {\n return new Set(value ? [items[0]?.value] : []);\n },\n selectAll: ({ selected }) => selected,\n};\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ pageItems }) => pageItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value);\n else selected.delete(item.value);\n }\n\n return selected;\n },\n selectAll: ({ value, pageItems, selected }) =>\n pageSelectStrategy.select({ items: pageItems, value, selected }),\n};\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value);\n else selected.delete(item.value);\n }\n\n return selected;\n },\n selectAll: ({ value, allItems, selected }) =>\n allSelectStrategy.select({ items: allItems, value, selected }),\n};\n\nexport const Y_DATA_TABLE_SELECTION_KEY: InjectionKey<\n ReturnType<typeof provideSelection>\n> = Symbol.for('yuyeon.data-table.selection');\n\nexport function provideSelection(\n props: DataTableSelectionProps,\n {\n allItems,\n pageItems,\n }: { allItems: Ref<SelectableItem[]>; pageItems: Ref<SelectableItem[]> },\n) {\n const selected = useModelDuplex(\n props,\n 'modelValue',\n props.modelValue,\n (v) => {\n return new Set(\n wrapInArray(v).map((v) => {\n return (\n allItems.value.find((item) => props.valueEqual(v, item.value))\n ?.value ?? v\n );\n }),\n );\n },\n (v) => {\n return [...v.values()];\n },\n );\n\n const allSelectables = computed(() =>\n allItems.value.filter((item) => item.selectable),\n );\n\n const pageSelectables = computed(() =>\n pageItems.value.filter((item) => item.selectable),\n );\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') {\n return props.selectStrategy;\n }\n switch (props.selectStrategy) {\n case 'single':\n return singleSelectStrategy;\n case 'all':\n return allSelectStrategy;\n case 'page':\n default:\n return pageSelectStrategy;\n }\n });\n\n function isSelected(items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every((item) => selected.value.has(item.value));\n }\n\n function isSomeSelected(items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some((item) => selected.value.has(item.value));\n }\n\n function select(items: SelectableItem[], value: boolean) {\n selected.value = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n });\n }\n\n function toggleSelect(item: SelectableItem) {\n select([item], !isSelected([item]));\n }\n\n function selectAll(value: boolean) {\n selected.value = selectStrategy.value.selectAll({\n value,\n allItems: allSelectables.value,\n pageItems: pageSelectables.value,\n selected: new Set(selected.value),\n });\n }\n\n const selectables = computed(() => {\n return selectStrategy.value.allSelected({\n allItems: allSelectables.value,\n pageItems: pageSelectables.value,\n });\n });\n\n const someSelected = computed(() => {\n return isSomeSelected(pageSelectables.value);\n });\n\n const allSelected = computed(() => {\n return isSelected(selectables.value);\n });\n\n const data: DataTableProvideSelectionData = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll: selectStrategy.value.showSelectAll,\n selectables,\n };\n\n provide(Y_DATA_TABLE_SELECTION_KEY, data);\n\n return data;\n}\n\nexport function useSelection() {\n const data = inject(Y_DATA_TABLE_SELECTION_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_SELECTION_KEY.description}`);\n }\n\n return data;\n}\n"],"mappings":"AAAA,SAAsCA,QAAQ,EAAEC,MAAM,EAAEC,OAAO,QAAQ,KAAK;AAAC,SAEpEC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,WAAW;AAAA,SACXC,YAAY;AA6BrB,OAAO,MAAMC,4BAA4B,GAAGD,YAAY,CACtD;EACEE,YAAY,EAAEC,OAAO;EACrBC,cAAc,EAAE;IACdC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAwC;IAC7DC,OAAO,EAAE;EACX,CAAC;EACDC,UAAU,EAAE;IACVJ,IAAI,EAAEK,KAAiC;IACvCF,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDG,UAAU,EAAE;IACVN,IAAI,EAAEO,QAAsC;IAC5CJ,OAAO,EAAEV;EACX;AACF,CAAC,EACD,uBACF,CAAC;AASD,MAAMe,oBAA6C,GAAG;EACpDC,aAAa,EAAE,KAAK;EACpBC,WAAW,EAAEA,CAAA,KAAM,EAAE;EACrBC,MAAM,EAAEC,IAAA,IAAsB;IAAA,IAArB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IACvB,OAAO,IAAIG,GAAG,CAACD,KAAK,GAAG,CAACD,KAAK,CAAC,CAAC,CAAC,EAAEC,KAAK,CAAC,GAAG,EAAE,CAAC;EAChD,CAAC;EACDE,SAAS,EAAEC,KAAA;IAAA,IAAC;MAAEC;IAAS,CAAC,GAAAD,KAAA;IAAA,OAAKC,QAAQ;EAAA;AACvC,CAAC;AAED,MAAMC,kBAA2C,GAAG;EAClDV,aAAa,EAAE,IAAI;EACnBC,WAAW,EAAEU,KAAA;IAAA,IAAC;MAAEC;IAAU,CAAC,GAAAD,KAAA;IAAA,OAAKC,SAAS;EAAA;EACzCV,MAAM,EAAEW,KAAA,IAAgC;IAAA,IAA/B;MAAET,KAAK;MAAEC,KAAK;MAAEI;IAAS,CAAC,GAAAI,KAAA;IACjC,KAAK,MAAMC,IAAI,IAAIV,KAAK,EAAE;MACxB,IAAIC,KAAK,EAAEI,QAAQ,CAACM,GAAG,CAACD,IAAI,CAACT,KAAK,CAAC,CAAC,KAC/BI,QAAQ,CAACO,MAAM,CAACF,IAAI,CAACT,KAAK,CAAC;IAClC;IAEA,OAAOI,QAAQ;EACjB,CAAC;EACDF,SAAS,EAAEU,KAAA;IAAA,IAAC;MAAEZ,KAAK;MAAEO,SAAS;MAAEH;IAAS,CAAC,GAAAQ,KAAA;IAAA,OACxCP,kBAAkB,CAACR,MAAM,CAAC;MAAEE,KAAK,EAAEQ,SAAS;MAAEP,KAAK;MAAEI;IAAS,CAAC,CAAC;EAAA;AACpE,CAAC;AAED,MAAMS,iBAA0C,GAAG;EACjDlB,aAAa,EAAE,IAAI;EACnBC,WAAW,EAAEkB,KAAA;IAAA,IAAC;MAAEC;IAAS,CAAC,GAAAD,KAAA;IAAA,OAAKC,QAAQ;EAAA;EACvClB,MAAM,EAAEmB,KAAA,IAAgC;IAAA,IAA/B;MAAEjB,KAAK;MAAEC,KAAK;MAAEI;IAAS,CAAC,GAAAY,KAAA;IACjC,KAAK,MAAMP,IAAI,IAAIV,KAAK,EAAE;MACxB,IAAIC,KAAK,EAAEI,QAAQ,CAACM,GAAG,CAACD,IAAI,CAACT,KAAK,CAAC,CAAC,KAC/BI,QAAQ,CAACO,MAAM,CAACF,IAAI,CAACT,KAAK,CAAC;IAClC;IAEA,OAAOI,QAAQ;EACjB,CAAC;EACDF,SAAS,EAAEe,KAAA;IAAA,IAAC;MAAEjB,KAAK;MAAEe,QAAQ;MAAEX;IAAS,CAAC,GAAAa,KAAA;IAAA,OACvCJ,iBAAiB,CAAChB,MAAM,CAAC;MAAEE,KAAK,EAAEgB,QAAQ;MAAEf,KAAK;MAAEI;IAAS,CAAC,CAAC;EAAA;AAClE,CAAC;AAED,OAAO,MAAMc,0BAEZ,GAAGC,MAAM,CAACC,GAAG,CAAC,6BAA6B,CAAC;AAE7C,OAAO,SAASC,gBAAgBA,CAC9BC,KAA8B,EAAAC,KAAA,EAK9B;EAAA,IAJA;IACER,QAAQ;IACRR;EACqE,CAAC,GAAAgB,KAAA;EAExE,MAAMnB,QAAQ,GAAG1B,cAAc,CAC7B4C,KAAK,EACL,YAAY,EACZA,KAAK,CAAChC,UAAU,EACfkC,CAAC,IAAK;IACL,OAAO,IAAIvB,GAAG,CACZrB,WAAW,CAAC4C,CAAC,CAAC,CAACC,GAAG,CAAED,CAAC,IAAK;MACxB,OACET,QAAQ,CAACf,KAAK,CAAC0B,IAAI,CAAEjB,IAAI,IAAKa,KAAK,CAAC9B,UAAU,CAACgC,CAAC,EAAEf,IAAI,CAACT,KAAK,CAAC,CAAC,EAC1DA,KAAK,IAAIwB,CAAC;IAElB,CAAC,CACH,CAAC;EACH,CAAC,EACAA,CAAC,IAAK;IACL,OAAO,CAAC,GAAGA,CAAC,CAACG,MAAM,CAAC,CAAC,CAAC;EACxB,CACF,CAAC;EAED,MAAMC,cAAc,GAAGrD,QAAQ,CAAC,MAC9BwC,QAAQ,CAACf,KAAK,CAAC6B,MAAM,CAAEpB,IAAI,IAAKA,IAAI,CAACqB,UAAU,CACjD,CAAC;EAED,MAAMC,eAAe,GAAGxD,QAAQ,CAAC,MAC/BgC,SAAS,CAACP,KAAK,CAAC6B,MAAM,CAAEpB,IAAI,IAAKA,IAAI,CAACqB,UAAU,CAClD,CAAC;EAED,MAAM7C,cAAc,GAAGV,QAAQ,CAAC,MAAM;IACpC,IAAI,OAAO+C,KAAK,CAACrC,cAAc,KAAK,QAAQ,EAAE;MAC5C,OAAOqC,KAAK,CAACrC,cAAc;IAC7B;IACA,QAAQqC,KAAK,CAACrC,cAAc;MAC1B,KAAK,QAAQ;QACX,OAAOS,oBAAoB;MAC7B,KAAK,KAAK;QACR,OAAOmB,iBAAiB;MAC1B,KAAK,MAAM;MACX;QACE,OAAOR,kBAAkB;IAC7B;EACF,CAAC,CAAC;EAEF,SAAS2B,UAAUA,CAACjC,KAAwC,EAAE;IAC5D,OAAOnB,WAAW,CAACmB,KAAK,CAAC,CAACkC,KAAK,CAAExB,IAAI,IAAKL,QAAQ,CAACJ,KAAK,CAACkC,GAAG,CAACzB,IAAI,CAACT,KAAK,CAAC,CAAC;EAC3E;EAEA,SAASmC,cAAcA,CAACpC,KAAwC,EAAE;IAChE,OAAOnB,WAAW,CAACmB,KAAK,CAAC,CAACqC,IAAI,CAAE3B,IAAI,IAAKL,QAAQ,CAACJ,KAAK,CAACkC,GAAG,CAACzB,IAAI,CAACT,KAAK,CAAC,CAAC;EAC1E;EAEA,SAASH,MAAMA,CAACE,KAAuB,EAAEC,KAAc,EAAE;IACvDI,QAAQ,CAACJ,KAAK,GAAGf,cAAc,CAACe,KAAK,CAACH,MAAM,CAAC;MAC3CE,KAAK;MACLC,KAAK;MACLI,QAAQ,EAAE,IAAIH,GAAG,CAACG,QAAQ,CAACJ,KAAK;IAClC,CAAC,CAAC;EACJ;EAEA,SAASqC,YAAYA,CAAC5B,IAAoB,EAAE;IAC1CZ,MAAM,CAAC,CAACY,IAAI,CAAC,EAAE,CAACuB,UAAU,CAAC,CAACvB,IAAI,CAAC,CAAC,CAAC;EACrC;EAEA,SAASP,SAASA,CAACF,KAAc,EAAE;IACjCI,QAAQ,CAACJ,KAAK,GAAGf,cAAc,CAACe,KAAK,CAACE,SAAS,CAAC;MAC9CF,KAAK;MACLe,QAAQ,EAAEa,cAAc,CAAC5B,KAAK;MAC9BO,SAAS,EAAEwB,eAAe,CAAC/B,KAAK;MAChCI,QAAQ,EAAE,IAAIH,GAAG,CAACG,QAAQ,CAACJ,KAAK;IAClC,CAAC,CAAC;EACJ;EAEA,MAAMsC,WAAW,GAAG/D,QAAQ,CAAC,MAAM;IACjC,OAAOU,cAAc,CAACe,KAAK,CAACJ,WAAW,CAAC;MACtCmB,QAAQ,EAAEa,cAAc,CAAC5B,KAAK;MAC9BO,SAAS,EAAEwB,eAAe,CAAC/B;IAC7B,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMuC,YAAY,GAAGhE,QAAQ,CAAC,MAAM;IAClC,OAAO4D,cAAc,CAACJ,eAAe,CAAC/B,KAAK,CAAC;EAC9C,CAAC,CAAC;EAEF,MAAMJ,WAAW,GAAGrB,QAAQ,CAAC,MAAM;IACjC,OAAOyD,UAAU,CAACM,WAAW,CAACtC,KAAK,CAAC;EACtC,CAAC,CAAC;EAEF,MAAMwC,IAAmC,GAAG;IAC1CH,YAAY;IACZxC,MAAM;IACNK,SAAS;IACT8B,UAAU;IACVG,cAAc;IACdI,YAAY;IACZ3C,WAAW;IACXD,aAAa,EAAEV,cAAc,CAACe,KAAK,CAACL,aAAa;IACjD2C;EACF,CAAC;EAED7D,OAAO,CAACyC,0BAA0B,EAAEsB,IAAI,CAAC;EAEzC,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,YAAYA,CAAA,EAAG;EAC7B,MAAMD,IAAI,GAAGhE,MAAM,CAAC0C,0BAA0B,CAAC;EAC/C,IAAI,CAACsB,IAAI,EAAE;IACT,MAAM,IAAIE,KAAK,CAAE,iBAAgBxB,0BAA0B,CAACyB,WAAY,EAAC,CAAC;EAC5E;EAEA,OAAOH,IAAI;AACb"}
1
+ {"version":3,"file":"selection.mjs","names":["computed","inject","provide","useModelDuplex","deepEqual","wrapInArray","propsFactory","pressDataTableSelectionProps","enableSelect","Boolean","selectStrategy","type","String","Object","default","modelValue","Array","valueEqual","Function","singleSelectStrategy","showSelectAll","allSelected","select","_ref","items","value","Set","selectAll","_ref2","selected","pageSelectStrategy","_ref3","pageItems","_ref4","item","add","delete","_ref5","allSelectStrategy","_ref6","allItems","_ref7","_ref8","Y_DATA_TABLE_SELECTION_KEY","Symbol","for","provideSelection","props","_ref9","v","map","find","values","allSelectables","filter","selectable","pageSelectables","isSelected","every","has","isSomeSelected","some","toggleSelect","selectables","someSelected","data","useSelection","Error","description"],"sources":["../../../../src/components/table/composibles/selection.ts"],"sourcesContent":["import { InjectionKey, PropType, Ref, computed, inject, provide } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../../composables/communication';\r\nimport { deepEqual } from '../../../util';\r\nimport { wrapInArray } from '../../../util/array';\r\nimport { propsFactory } from '../../../util/component';\r\nimport { DataTableProvideSelectionData } from '../types';\r\nimport { DataTableItemsProps } from './items';\r\n\r\nexport interface SelectableItem {\r\n key: string;\r\n value: any;\r\n selectable: boolean;\r\n}\r\n\r\nexport interface DataTableSelectStrategy {\r\n showSelectAll: boolean;\r\n allSelected: (data: {\r\n allItems: SelectableItem[];\r\n pageItems: SelectableItem[];\r\n }) => SelectableItem[];\r\n select: (data: {\r\n items: SelectableItem[];\r\n value: boolean;\r\n selected: Set<unknown>;\r\n }) => Set<unknown>;\r\n selectAll: (data: {\r\n value: boolean;\r\n allItems: SelectableItem[];\r\n pageItems: SelectableItem[];\r\n selected: Set<unknown>;\r\n }) => Set<unknown>;\r\n}\r\n\r\nexport const pressDataTableSelectionProps = propsFactory(\r\n {\r\n enableSelect: Boolean,\r\n selectStrategy: {\r\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\r\n default: 'page',\r\n },\r\n modelValue: {\r\n type: Array as PropType<readonly any[]>,\r\n default: () => [],\r\n },\r\n valueEqual: {\r\n type: Function as PropType<typeof deepEqual>,\r\n default: deepEqual,\r\n },\r\n },\r\n 'YDataTable--selection',\r\n);\r\n\r\ntype DataTableSelectionProps = Pick<DataTableItemsProps, 'itemKey'> & {\r\n modelValue: readonly any[];\r\n selectStrategy: 'single' | 'page' | 'all';\r\n 'onUpdate:modelValue': ((value: any[]) => void) | undefined;\r\n valueEqual: (a: any, b: any) => boolean;\r\n};\r\n\r\nconst singleSelectStrategy: DataTableSelectStrategy = {\r\n showSelectAll: false,\r\n allSelected: () => [],\r\n select: ({ items, value }) => {\r\n return new Set(value ? [items[0]?.value] : []);\r\n },\r\n selectAll: ({ selected }) => selected,\r\n};\r\n\r\nconst pageSelectStrategy: DataTableSelectStrategy = {\r\n showSelectAll: true,\r\n allSelected: ({ pageItems }) => pageItems,\r\n select: ({ items, value, selected }) => {\r\n for (const item of items) {\r\n if (value) selected.add(item.value);\r\n else selected.delete(item.value);\r\n }\r\n\r\n return selected;\r\n },\r\n selectAll: ({ value, pageItems, selected }) =>\r\n pageSelectStrategy.select({ items: pageItems, value, selected }),\r\n};\r\n\r\nconst allSelectStrategy: DataTableSelectStrategy = {\r\n showSelectAll: true,\r\n allSelected: ({ allItems }) => allItems,\r\n select: ({ items, value, selected }) => {\r\n for (const item of items) {\r\n if (value) selected.add(item.value);\r\n else selected.delete(item.value);\r\n }\r\n\r\n return selected;\r\n },\r\n selectAll: ({ value, allItems, selected }) =>\r\n allSelectStrategy.select({ items: allItems, value, selected }),\r\n};\r\n\r\nexport const Y_DATA_TABLE_SELECTION_KEY: InjectionKey<\r\n ReturnType<typeof provideSelection>\r\n> = Symbol.for('yuyeon.data-table.selection');\r\n\r\nexport function provideSelection(\r\n props: DataTableSelectionProps,\r\n {\r\n allItems,\r\n pageItems,\r\n }: { allItems: Ref<SelectableItem[]>; pageItems: Ref<SelectableItem[]> },\r\n) {\r\n const selected = useModelDuplex(\r\n props,\r\n 'modelValue',\r\n props.modelValue,\r\n (v) => {\r\n return new Set(\r\n wrapInArray(v).map((v) => {\r\n return (\r\n allItems.value.find((item) => props.valueEqual(v, item.value))\r\n ?.value ?? v\r\n );\r\n }),\r\n );\r\n },\r\n (v) => {\r\n return [...v.values()];\r\n },\r\n );\r\n\r\n const allSelectables = computed(() =>\r\n allItems.value.filter((item) => item.selectable),\r\n );\r\n\r\n const pageSelectables = computed(() =>\r\n pageItems.value.filter((item) => item.selectable),\r\n );\r\n\r\n const selectStrategy = computed(() => {\r\n if (typeof props.selectStrategy === 'object') {\r\n return props.selectStrategy;\r\n }\r\n switch (props.selectStrategy) {\r\n case 'single':\r\n return singleSelectStrategy;\r\n case 'all':\r\n return allSelectStrategy;\r\n case 'page':\r\n default:\r\n return pageSelectStrategy;\r\n }\r\n });\r\n\r\n function isSelected(items: SelectableItem | SelectableItem[]) {\r\n return wrapInArray(items).every((item) => selected.value.has(item.value));\r\n }\r\n\r\n function isSomeSelected(items: SelectableItem | SelectableItem[]) {\r\n return wrapInArray(items).some((item) => selected.value.has(item.value));\r\n }\r\n\r\n function select(items: SelectableItem[], value: boolean) {\r\n selected.value = selectStrategy.value.select({\r\n items,\r\n value,\r\n selected: new Set(selected.value),\r\n });\r\n }\r\n\r\n function toggleSelect(item: SelectableItem) {\r\n select([item], !isSelected([item]));\r\n }\r\n\r\n function selectAll(value: boolean) {\r\n selected.value = selectStrategy.value.selectAll({\r\n value,\r\n allItems: allSelectables.value,\r\n pageItems: pageSelectables.value,\r\n selected: new Set(selected.value),\r\n });\r\n }\r\n\r\n const selectables = computed(() => {\r\n return selectStrategy.value.allSelected({\r\n allItems: allSelectables.value,\r\n pageItems: pageSelectables.value,\r\n });\r\n });\r\n\r\n const someSelected = computed(() => {\r\n return isSomeSelected(pageSelectables.value);\r\n });\r\n\r\n const allSelected = computed(() => {\r\n return isSelected(selectables.value);\r\n });\r\n\r\n const data: DataTableProvideSelectionData = {\r\n toggleSelect,\r\n select,\r\n selectAll,\r\n isSelected,\r\n isSomeSelected,\r\n someSelected,\r\n allSelected,\r\n showSelectAll: selectStrategy.value.showSelectAll,\r\n selectables,\r\n };\r\n\r\n provide(Y_DATA_TABLE_SELECTION_KEY, data);\r\n\r\n return data;\r\n}\r\n\r\nexport function useSelection() {\r\n const data = inject(Y_DATA_TABLE_SELECTION_KEY);\r\n if (!data) {\r\n throw new Error(`Not provided: ${Y_DATA_TABLE_SELECTION_KEY.description}`);\r\n }\r\n\r\n return data;\r\n}\r\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { toRef } from '@vue/runtime-core';
2
2
  import { inject, provide } from 'vue';
3
3
  import { useModelDuplex } from "../../../composables/communication.mjs";
4
- import { propsFactory } from "../../../util/vue-component.mjs";
4
+ import { propsFactory } from "../../../util/component/index.mjs";
5
5
  const Y_DATA_TABLE_SORTING_KEY = Symbol.for('yuyeon.data-table.sorting');
6
6
  export const pressDataTableSortProps = propsFactory({
7
7
  sortBy: {
@@ -1 +1 @@
1
- {"version":3,"file":"sorting.mjs","names":["toRef","inject","provide","useModelDuplex","propsFactory","Y_DATA_TABLE_SORTING_KEY","Symbol","for","pressDataTableSortProps","sortBy","type","Array","default","multiSort","Boolean","createSorting","props","provideSorting","options","page","toggleSort","column","neo","value","map","v","target","find","key","sortOption","order","mustSort","filter","isSorted","option","data","useSorting","Error","description"],"sources":["../../../../src/components/table/composibles/sorting.ts"],"sourcesContent":["import { toRef } from '@vue/runtime-core';\nimport {\n DeepReadonly,\n InjectionKey,\n PropType,\n Ref,\n inject,\n provide,\n} from 'vue';\n\nimport { useModelDuplex } from '../../../composables/communication';\nimport { propsFactory } from '../../../util/vue-component';\nimport type {\n DataTableProvideSortingData,\n InternalDataTableHeader,\n SortOption,\n} from '../types';\n\nconst Y_DATA_TABLE_SORTING_KEY: InjectionKey<{\n sortBy: Ref<readonly SortOption[]>;\n toggleSort: (col: InternalDataTableHeader) => void;\n isSorted: (col: InternalDataTableHeader) => boolean;\n}> = Symbol.for('yuyeon.data-table.sorting');\n\nexport const pressDataTableSortProps = propsFactory(\n {\n sortBy: {\n type: Array as PropType<DeepReadonly<SortOption[]>>,\n default: () => [],\n },\n multiSort: Boolean,\n },\n 'YDataTable--sorting',\n);\n\ntype SortProps = {\n sortBy: readonly SortOption[];\n 'onUpdate:sortBy': ((value: any) => void) | undefined;\n multiSort: boolean;\n};\n\nexport function createSorting(props: SortProps) {\n const sortBy = useModelDuplex(props, 'sortBy');\n const multiSort = toRef(props, 'multiSort');\n\n return { sortBy, multiSort };\n}\n\nexport function provideSorting(options: {\n sortBy: Ref<readonly SortOption[]>;\n page?: Ref<number>;\n multiSort?: Ref<boolean>;\n}) {\n const { sortBy, multiSort, page } = options;\n\n const toggleSort = (column: InternalDataTableHeader) => {\n let neo = sortBy.value?.map((v) => ({ ...v })) ?? [];\n const target = neo.find((v) => v.key === column.key);\n const sortOption: SortOption = { key: column.key, order: 'asc' };\n\n if (!target) {\n if (multiSort?.value) {\n neo = [...neo, sortOption];\n } else {\n neo = [sortOption];\n }\n } else if (target.order === 'desc') {\n if (column.mustSort) {\n target.order = 'asc';\n } else {\n neo = neo.filter((v) => v.key !== column.key);\n }\n } else {\n target.order = 'desc';\n }\n sortBy.value = neo;\n if (page) {\n page.value = 1;\n }\n };\n\n function isSorted(column: InternalDataTableHeader) {\n return !!sortBy.value.find((option) => option.key === column.key);\n }\n\n const data: DataTableProvideSortingData = { sortBy, toggleSort, isSorted };\n\n provide(Y_DATA_TABLE_SORTING_KEY, data);\n\n return data;\n}\n\nexport function useSorting() {\n const data = inject(Y_DATA_TABLE_SORTING_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_SORTING_KEY.description}`);\n }\n return data;\n}\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,mBAAmB;AACzC,SAKEC,MAAM,EACNC,OAAO,QACF,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,YAAY;AAOrB,MAAMC,wBAIJ,GAAGC,MAAM,CAACC,GAAG,CAAC,2BAA2B,CAAC;AAE5C,OAAO,MAAMC,uBAAuB,GAAGJ,YAAY,CACjD;EACEK,MAAM,EAAE;IACNC,IAAI,EAAEC,KAA6C;IACnDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,SAAS,EAAEC;AACb,CAAC,EACD,qBACF,CAAC;AAQD,OAAO,SAASC,aAAaA,CAACC,KAAgB,EAAE;EAC9C,MAAMP,MAAM,GAAGN,cAAc,CAACa,KAAK,EAAE,QAAQ,CAAC;EAC9C,MAAMH,SAAS,GAAGb,KAAK,CAACgB,KAAK,EAAE,WAAW,CAAC;EAE3C,OAAO;IAAEP,MAAM;IAAEI;EAAU,CAAC;AAC9B;AAEA,OAAO,SAASI,cAAcA,CAACC,OAI9B,EAAE;EACD,MAAM;IAAET,MAAM;IAAEI,SAAS;IAAEM;EAAK,CAAC,GAAGD,OAAO;EAE3C,MAAME,UAAU,GAAIC,MAA+B,IAAK;IACtD,IAAIC,GAAG,GAAGb,MAAM,CAACc,KAAK,EAAEC,GAAG,CAAEC,CAAC,KAAM;MAAE,GAAGA;IAAE,CAAC,CAAC,CAAC,IAAI,EAAE;IACpD,MAAMC,MAAM,GAAGJ,GAAG,CAACK,IAAI,CAAEF,CAAC,IAAKA,CAAC,CAACG,GAAG,KAAKP,MAAM,CAACO,GAAG,CAAC;IACpD,MAAMC,UAAsB,GAAG;MAAED,GAAG,EAAEP,MAAM,CAACO,GAAG;MAAEE,KAAK,EAAE;IAAM,CAAC;IAEhE,IAAI,CAACJ,MAAM,EAAE;MACX,IAAIb,SAAS,EAAEU,KAAK,EAAE;QACpBD,GAAG,GAAG,CAAC,GAAGA,GAAG,EAAEO,UAAU,CAAC;MAC5B,CAAC,MAAM;QACLP,GAAG,GAAG,CAACO,UAAU,CAAC;MACpB;IACF,CAAC,MAAM,IAAIH,MAAM,CAACI,KAAK,KAAK,MAAM,EAAE;MAClC,IAAIT,MAAM,CAACU,QAAQ,EAAE;QACnBL,MAAM,CAACI,KAAK,GAAG,KAAK;MACtB,CAAC,MAAM;QACLR,GAAG,GAAGA,GAAG,CAACU,MAAM,CAAEP,CAAC,IAAKA,CAAC,CAACG,GAAG,KAAKP,MAAM,CAACO,GAAG,CAAC;MAC/C;IACF,CAAC,MAAM;MACLF,MAAM,CAACI,KAAK,GAAG,MAAM;IACvB;IACArB,MAAM,CAACc,KAAK,GAAGD,GAAG;IAClB,IAAIH,IAAI,EAAE;MACRA,IAAI,CAACI,KAAK,GAAG,CAAC;IAChB;EACF,CAAC;EAED,SAASU,QAAQA,CAACZ,MAA+B,EAAE;IACjD,OAAO,CAAC,CAACZ,MAAM,CAACc,KAAK,CAACI,IAAI,CAAEO,MAAM,IAAKA,MAAM,CAACN,GAAG,KAAKP,MAAM,CAACO,GAAG,CAAC;EACnE;EAEA,MAAMO,IAAiC,GAAG;IAAE1B,MAAM;IAAEW,UAAU;IAAEa;EAAS,CAAC;EAE1E/B,OAAO,CAACG,wBAAwB,EAAE8B,IAAI,CAAC;EAEvC,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3B,MAAMD,IAAI,GAAGlC,MAAM,CAACI,wBAAwB,CAAC;EAC7C,IAAI,CAAC8B,IAAI,EAAE;IACT,MAAM,IAAIE,KAAK,CAAE,iBAAgBhC,wBAAwB,CAACiC,WAAY,EAAC,CAAC;EAC1E;EACA,OAAOH,IAAI;AACb"}
1
+ {"version":3,"file":"sorting.mjs","names":["toRef","inject","provide","useModelDuplex","propsFactory","Y_DATA_TABLE_SORTING_KEY","Symbol","for","pressDataTableSortProps","sortBy","type","Array","default","multiSort","Boolean","createSorting","props","provideSorting","options","page","toggleSort","column","neo","value","map","v","target","find","key","sortOption","order","mustSort","filter","isSorted","option","data","useSorting","Error","description"],"sources":["../../../../src/components/table/composibles/sorting.ts"],"sourcesContent":["import { toRef } from '@vue/runtime-core';\r\nimport {\r\n DeepReadonly,\r\n InjectionKey,\r\n PropType,\r\n Ref,\r\n inject,\r\n provide,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../../composables/communication';\r\nimport { propsFactory } from '../../../util/component';\r\nimport type {\r\n DataTableProvideSortingData,\r\n InternalDataTableHeader,\r\n SortOption,\r\n} from '../types';\r\n\r\nconst Y_DATA_TABLE_SORTING_KEY: InjectionKey<{\r\n sortBy: Ref<readonly SortOption[]>;\r\n toggleSort: (col: InternalDataTableHeader) => void;\r\n isSorted: (col: InternalDataTableHeader) => boolean;\r\n}> = Symbol.for('yuyeon.data-table.sorting');\r\n\r\nexport const pressDataTableSortProps = propsFactory(\r\n {\r\n sortBy: {\r\n type: Array as PropType<DeepReadonly<SortOption[]>>,\r\n default: () => [],\r\n },\r\n multiSort: Boolean,\r\n },\r\n 'YDataTable--sorting',\r\n);\r\n\r\ntype SortProps = {\r\n sortBy: readonly SortOption[];\r\n 'onUpdate:sortBy': ((value: any) => void) | undefined;\r\n multiSort: boolean;\r\n};\r\n\r\nexport function createSorting(props: SortProps) {\r\n const sortBy = useModelDuplex(props, 'sortBy');\r\n const multiSort = toRef(props, 'multiSort');\r\n\r\n return { sortBy, multiSort };\r\n}\r\n\r\nexport function provideSorting(options: {\r\n sortBy: Ref<readonly SortOption[]>;\r\n page?: Ref<number>;\r\n multiSort?: Ref<boolean>;\r\n}) {\r\n const { sortBy, multiSort, page } = options;\r\n\r\n const toggleSort = (column: InternalDataTableHeader) => {\r\n let neo = sortBy.value?.map((v) => ({ ...v })) ?? [];\r\n const target = neo.find((v) => v.key === column.key);\r\n const sortOption: SortOption = { key: column.key, order: 'asc' };\r\n\r\n if (!target) {\r\n if (multiSort?.value) {\r\n neo = [...neo, sortOption];\r\n } else {\r\n neo = [sortOption];\r\n }\r\n } else if (target.order === 'desc') {\r\n if (column.mustSort) {\r\n target.order = 'asc';\r\n } else {\r\n neo = neo.filter((v) => v.key !== column.key);\r\n }\r\n } else {\r\n target.order = 'desc';\r\n }\r\n sortBy.value = neo;\r\n if (page) {\r\n page.value = 1;\r\n }\r\n };\r\n\r\n function isSorted(column: InternalDataTableHeader) {\r\n return !!sortBy.value.find((option) => option.key === column.key);\r\n }\r\n\r\n const data: DataTableProvideSortingData = { sortBy, toggleSort, isSorted };\r\n\r\n provide(Y_DATA_TABLE_SORTING_KEY, data);\r\n\r\n return data;\r\n}\r\n\r\nexport function useSorting() {\r\n const data = inject(Y_DATA_TABLE_SORTING_KEY);\r\n if (!data) {\r\n throw new Error(`Not provided: ${Y_DATA_TABLE_SORTING_KEY.description}`);\r\n }\r\n return data;\r\n}\r\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,mBAAmB;AACzC,SAKEC,MAAM,EACNC,OAAO,QACF,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,YAAY;AAOrB,MAAMC,wBAIJ,GAAGC,MAAM,CAACC,GAAG,CAAC,2BAA2B,CAAC;AAE5C,OAAO,MAAMC,uBAAuB,GAAGJ,YAAY,CACjD;EACEK,MAAM,EAAE;IACNC,IAAI,EAAEC,KAA6C;IACnDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,SAAS,EAAEC;AACb,CAAC,EACD,qBACF,CAAC;AAQD,OAAO,SAASC,aAAaA,CAACC,KAAgB,EAAE;EAC9C,MAAMP,MAAM,GAAGN,cAAc,CAACa,KAAK,EAAE,QAAQ,CAAC;EAC9C,MAAMH,SAAS,GAAGb,KAAK,CAACgB,KAAK,EAAE,WAAW,CAAC;EAE3C,OAAO;IAAEP,MAAM;IAAEI;EAAU,CAAC;AAC9B;AAEA,OAAO,SAASI,cAAcA,CAACC,OAI9B,EAAE;EACD,MAAM;IAAET,MAAM;IAAEI,SAAS;IAAEM;EAAK,CAAC,GAAGD,OAAO;EAE3C,MAAME,UAAU,GAAIC,MAA+B,IAAK;IACtD,IAAIC,GAAG,GAAGb,MAAM,CAACc,KAAK,EAAEC,GAAG,CAAEC,CAAC,KAAM;MAAE,GAAGA;IAAE,CAAC,CAAC,CAAC,IAAI,EAAE;IACpD,MAAMC,MAAM,GAAGJ,GAAG,CAACK,IAAI,CAAEF,CAAC,IAAKA,CAAC,CAACG,GAAG,KAAKP,MAAM,CAACO,GAAG,CAAC;IACpD,MAAMC,UAAsB,GAAG;MAAED,GAAG,EAAEP,MAAM,CAACO,GAAG;MAAEE,KAAK,EAAE;IAAM,CAAC;IAEhE,IAAI,CAACJ,MAAM,EAAE;MACX,IAAIb,SAAS,EAAEU,KAAK,EAAE;QACpBD,GAAG,GAAG,CAAC,GAAGA,GAAG,EAAEO,UAAU,CAAC;MAC5B,CAAC,MAAM;QACLP,GAAG,GAAG,CAACO,UAAU,CAAC;MACpB;IACF,CAAC,MAAM,IAAIH,MAAM,CAACI,KAAK,KAAK,MAAM,EAAE;MAClC,IAAIT,MAAM,CAACU,QAAQ,EAAE;QACnBL,MAAM,CAACI,KAAK,GAAG,KAAK;MACtB,CAAC,MAAM;QACLR,GAAG,GAAGA,GAAG,CAACU,MAAM,CAAEP,CAAC,IAAKA,CAAC,CAACG,GAAG,KAAKP,MAAM,CAACO,GAAG,CAAC;MAC/C;IACF,CAAC,MAAM;MACLF,MAAM,CAACI,KAAK,GAAG,MAAM;IACvB;IACArB,MAAM,CAACc,KAAK,GAAGD,GAAG;IAClB,IAAIH,IAAI,EAAE;MACRA,IAAI,CAACI,KAAK,GAAG,CAAC;IAChB;EACF,CAAC;EAED,SAASU,QAAQA,CAACZ,MAA+B,EAAE;IACjD,OAAO,CAAC,CAACZ,MAAM,CAACc,KAAK,CAACI,IAAI,CAAEO,MAAM,IAAKA,MAAM,CAACN,GAAG,KAAKP,MAAM,CAACO,GAAG,CAAC;EACnE;EAEA,MAAMO,IAAiC,GAAG;IAAE1B,MAAM;IAAEW,UAAU;IAAEa;EAAS,CAAC;EAE1E/B,OAAO,CAACG,wBAAwB,EAAE8B,IAAI,CAAC;EAEvC,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3B,MAAMD,IAAI,GAAGlC,MAAM,CAACI,wBAAwB,CAAC;EAC7C,IAAI,CAAC8B,IAAI,EAAE;IACT,MAAM,IAAIE,KAAK,CAAE,iBAAgBhC,wBAAwB,CAACiC,WAAY,EAAC,CAAC;EAC1E;EACA,OAAOH,IAAI;AACb"}
@@ -4,7 +4,7 @@ import { useModelDuplex } from "../../composables/communication.mjs";
4
4
  import { useRender } from "../../composables/component.mjs";
5
5
  import { pressPolyTransitionPropsOptions } from "../../composables/transition.mjs";
6
6
  import { omit } from "../../util/index.mjs";
7
- import { bindClasses, chooseProps } from "../../util/vue-component.mjs";
7
+ import { bindClasses, chooseProps } from "../../util/component/index.mjs";
8
8
  import { YLayer, pressYLayerProps } from "../layer/index.mjs";
9
9
  import { useDelay } from "../layer/active-delay.mjs";
10
10
  import { YPlate } from "../plate/index.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"YTooltip.mjs","names":["computed","defineComponent","nextTick","ref","watch","useModelDuplex","useRender","pressPolyTransitionPropsOptions","omit","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","YPlate","NAME","YTooltipPropOptions","tooltipClasses","type","Array","String","Object","preventClip","Boolean","default","YTooltip","name","props","coordinateStrategy","scrollStrategy","openOnHover","align","offset","transition","emits","setup","_ref","slots","emit","expose","layer$","contentEl","baseEl","value","classes","boundClasses","model","active","get","set","v","disabled","hovered","neo","$content","content$","startOpenDelay","startCloseDelay","changeActive","onMouseenter","e","onMouseleave","bindHover","el","addEventListener","unbindHover","removeEventListener","old","_createVNode","_Fragment","_mergeProps","$event","_len","arguments","length","args","_key","base","_len2","_key2","el$"],"sources":["../../../src/components/tooltip/YTooltip.tsx"],"sourcesContent":["import type { PropType } from 'vue';\r\nimport {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n ref,\r\n watch,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressPolyTransitionPropsOptions } from '../../composables/transition';\r\nimport { omit } from '../../util';\r\nimport { bindClasses, chooseProps } from '../../util/vue-component';\r\nimport { YLayer, pressYLayerProps } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { YPlate } from '../plate';\r\n\r\nimport './YTooltip.scss';\r\n\r\nconst NAME = 'YTooltip';\r\n\r\nconst YTooltipPropOptions = {\r\n tooltipClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YTooltip = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YTooltipPropOptions,\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation' as const,\r\n scrollStrategy: 'reposition' as const,\r\n openOnHover: true,\r\n align: 'center',\r\n offset: 8,\r\n }),\r\n ...pressPolyTransitionPropsOptions({\r\n transition: 'fade'\r\n }),\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { slots, emit, expose }) {\r\n const layer$ = ref<typeof YLayer>();\r\n const contentEl = ref<HTMLElement>();\r\n const baseEl = computed(() => {\r\n return layer$.value?.baseEl;\r\n });\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.tooltipClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-tooltip': true,\r\n };\r\n });\r\n\r\n const model = useModelDuplex(props);\r\n\r\n const active = computed({\r\n get: (): boolean => {\r\n return !!model.value;\r\n },\r\n set: (v: boolean) => {\r\n if (!(v && props.disabled)) model.value = v;\r\n },\r\n });\r\n\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n\r\n watch(active, (neo) => {\r\n if (neo) {\r\n nextTick(() => {\r\n const $content = layer$.value?.content$;\r\n contentEl.value = $content;\r\n });\r\n }\r\n });\r\n\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (!changeActive && props.openOnHover && !hovered.value) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener?.('mouseenter', onMouseenter);\r\n el.addEventListener?.('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener?.('mouseenter', onMouseenter);\r\n el.removeEventListener?.('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n } else if (old) {\r\n unbindHover(old);\r\n }\r\n },\r\n );\r\n\r\n\r\n expose({\r\n layer$,\r\n baseEl,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n ref={layer$}\r\n {...omit(chooseProps(props, YLayer.props), ['scrim'])}\r\n classes={classes.value}\r\n scrim={false}\r\n transition={props.transition}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return (\r\n <>\r\n <YPlate></YPlate>\r\n <div class=\"y-tooltip__content\">\r\n {slots.default?.(...args) ?? ''}\r\n </div>\r\n </>\r\n );\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n layer$,\r\n el$: layer$,\r\n baseEl,\r\n active,\r\n };\r\n },\r\n});\r\n\r\nexport type YTooltip = InstanceType<typeof YTooltip>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YTooltip.mjs","names":["computed","defineComponent","nextTick","ref","watch","useModelDuplex","useRender","pressPolyTransitionPropsOptions","omit","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","YPlate","NAME","YTooltipPropOptions","tooltipClasses","type","Array","String","Object","preventClip","Boolean","default","YTooltip","name","props","coordinateStrategy","scrollStrategy","openOnHover","align","offset","transition","emits","setup","_ref","slots","emit","expose","layer$","contentEl","baseEl","value","classes","boundClasses","model","active","get","set","v","disabled","hovered","neo","$content","content$","startOpenDelay","startCloseDelay","changeActive","onMouseenter","e","onMouseleave","bindHover","el","addEventListener","unbindHover","removeEventListener","old","_createVNode","_Fragment","_mergeProps","$event","_len","arguments","length","args","_key","base","_len2","_key2","el$"],"sources":["../../../src/components/tooltip/YTooltip.tsx"],"sourcesContent":["import type { PropType } from 'vue';\r\nimport {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n ref,\r\n watch,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressPolyTransitionPropsOptions } from '../../composables/transition';\r\nimport { omit } from '../../util';\r\nimport { bindClasses, chooseProps } from '../../util/component';\r\nimport { YLayer, pressYLayerProps } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { YPlate } from '../plate';\r\n\r\nimport './YTooltip.scss';\r\n\r\nconst NAME = 'YTooltip';\r\n\r\nconst YTooltipPropOptions = {\r\n tooltipClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YTooltip = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YTooltipPropOptions,\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation' as const,\r\n scrollStrategy: 'reposition' as const,\r\n openOnHover: true,\r\n align: 'center',\r\n offset: 8,\r\n }),\r\n ...pressPolyTransitionPropsOptions({\r\n transition: 'fade'\r\n }),\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { slots, emit, expose }) {\r\n const layer$ = ref<typeof YLayer>();\r\n const contentEl = ref<HTMLElement>();\r\n const baseEl = computed(() => {\r\n return layer$.value?.baseEl;\r\n });\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.tooltipClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-tooltip': true,\r\n };\r\n });\r\n\r\n const model = useModelDuplex(props);\r\n\r\n const active = computed({\r\n get: (): boolean => {\r\n return !!model.value;\r\n },\r\n set: (v: boolean) => {\r\n if (!(v && props.disabled)) model.value = v;\r\n },\r\n });\r\n\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n\r\n watch(active, (neo) => {\r\n if (neo) {\r\n nextTick(() => {\r\n const $content = layer$.value?.content$;\r\n contentEl.value = $content;\r\n });\r\n }\r\n });\r\n\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (!changeActive && props.openOnHover && !hovered.value) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener?.('mouseenter', onMouseenter);\r\n el.addEventListener?.('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener?.('mouseenter', onMouseenter);\r\n el.removeEventListener?.('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n } else if (old) {\r\n unbindHover(old);\r\n }\r\n },\r\n );\r\n\r\n\r\n expose({\r\n layer$,\r\n baseEl,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n ref={layer$}\r\n {...omit(chooseProps(props, YLayer.props), ['scrim'])}\r\n classes={classes.value}\r\n scrim={false}\r\n transition={props.transition}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return (\r\n <>\r\n <YPlate></YPlate>\r\n <div class=\"y-tooltip__content\">\r\n {slots.default?.(...args) ?? ''}\r\n </div>\r\n </>\r\n );\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n layer$,\r\n el$: layer$,\r\n baseEl,\r\n active,\r\n };\r\n },\r\n});\r\n\r\nexport type YTooltip = InstanceType<typeof YTooltip>;\r\n"],"mappings":"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"}