yuyeon 0.0.30 → 0.0.32

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.
@@ -1,4 +1,6 @@
1
1
  export * from "./YIconExpand.mjs";
2
2
  export * from "./YIconClear.mjs";
3
3
  export * from "./YIconCheckbox.mjs";
4
+ export * from "./YIconPageControl.mjs";
5
+ export * from "./YIconSort.mjs";
4
6
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/icons/index.ts"],"sourcesContent":["export * from './YIconExpand';\nexport * from './YIconClear';\nexport * from './YIconCheckbox';\n"],"mappings":""}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/icons/index.ts"],"sourcesContent":["export * from './YIconExpand';\nexport * from './YIconClear';\nexport * from './YIconCheckbox';\nexport * from './YIconPageControl';\nexport * from './YIconSort';\n"],"mappings":""}
@@ -28,6 +28,7 @@ export const pressSelectPropsOptions = propsFactory({
28
28
  type: Function,
29
29
  default: deepEqual
30
30
  },
31
+ defaultSelect: Boolean,
31
32
  ...pressListItemsPropsOptions()
32
33
  }, 'Select');
33
34
  export const pressYSelectPropsOptions = propsFactory({
@@ -1 +1 @@
1
- {"version":3,"file":"YSelect.mjs","names":["shallowRef","computed","defineComponent","mergeProps","ref","useModelDuplex","useRender","pressCoordinateProps","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIconDropdown","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","pressYSelectPropsOptions","maxHeight","Number","String","position","YSelect","name","props","emits","value","setup","_ref","slots","fieldInputRef","menuRef","listRef","focused","items","toRefineItems","toEmitItems","model","v","emitValue","selections","map","find","item","selected","selection","onMousedownDisplay","event","disabled","onBlur","$el","contains","relatedTarget","onClickItem","select","onAfterLeave","focus","displayText","text","join","fieldInputProps","_createVNode","$event","offset","origin","base","_len","args","Array","_key","_mergeProps","leading","_len2","_key2","trailing","menu","e","_createTextVNode"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\r\nimport type { PropType } from 'vue';\r\nimport { computed, defineComponent, mergeProps, ref } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressCoordinateProps } from '../../composables/coordinate';\r\nimport {\r\n ListItem,\r\n pressListItemsPropsOptions,\r\n useItems,\r\n} from '../../composables/list-items';\r\nimport { wrapInArray } from '../../util/array';\r\nimport { deepEqual, getObjectValueByPath, omit } from '../../util/common';\r\nimport { chooseProps, propsFactory } from '../../util/vue-component';\r\nimport { YCard } from '../card';\r\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\r\nimport { YIconDropdown } from '../icons/YIconDropdown';\r\nimport { YList, YListItem } from '../list';\r\nimport { YMenu } from '../menu';\r\n\r\nimport './YSelect.scss';\r\n\r\nexport type SelectEquals = (\r\n optionsItem: any,\r\n valueItem: any,\r\n valueKey?: string,\r\n) => boolean;\r\n\r\nexport function returnItemEquals(\r\n optionsItem: any,\r\n valueItem: any,\r\n valueKey = 'value',\r\n) {\r\n const valueItemType = typeof valueItem;\r\n const itemValue =\r\n valueItemType === 'string' || valueItemType === 'number'\r\n ? getObjectValueByPath(optionsItem, valueKey)\r\n : optionsItem;\r\n return deepEqual(itemValue, valueItem);\r\n}\r\n\r\nexport const pressSelectPropsOptions = propsFactory(\r\n {\r\n opened: Boolean as PropType<boolean>,\r\n multiple: Boolean,\r\n weakEquals: Boolean,\r\n valueEquals: {\r\n type: Function as PropType<SelectEquals>,\r\n default: deepEqual,\r\n },\r\n ...pressListItemsPropsOptions(),\r\n },\r\n 'Select',\r\n);\r\n\r\nexport const pressYSelectPropsOptions = propsFactory(\r\n {\r\n maxHeight: {\r\n type: [Number, String],\r\n default: 310,\r\n },\r\n ...pressSelectPropsOptions(),\r\n ...pressYFieldInputPropsOptions(),\r\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\r\n 'coordinateStrategy',\r\n ]),\r\n },\r\n 'YSelect',\r\n);\r\n\r\nexport const YSelect = defineComponent({\r\n name: 'YSelect',\r\n props: {\r\n ...pressYSelectPropsOptions(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: any) => true,\r\n 'update:opened': (opened: boolean) => true,\r\n },\r\n setup(props, { slots }) {\r\n const fieldInputRef = ref();\r\n const menuRef = ref();\r\n const listRef = ref<InstanceType<typeof YList>>();\r\n\r\n const opened = useModelDuplex(props, 'opened');\r\n const focused = shallowRef(false);\r\n\r\n const { items, toRefineItems, toEmitItems } = useItems(props);\r\n const model = useModelDuplex(\r\n props,\r\n 'modelValue',\r\n [],\r\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\r\n (v) => {\r\n const emitValue = toEmitItems(wrapInArray(v));\r\n return props.multiple ? emitValue : emitValue[0] ?? null;\r\n },\r\n );\r\n\r\n const selections = computed<ListItem[]>(() => {\r\n return model.value.map((v: any) => {\r\n return items.value.find((item) => {\r\n return props.valueEquals(item.value, v.value);\r\n });\r\n });\r\n });\r\n\r\n const selected = computed(() => {\r\n return selections.value.map((selection) => selection.props.value);\r\n });\r\n\r\n // Field\r\n function onMousedownDisplay(event: MouseEvent) {\r\n if (props.disabled) {\r\n return;\r\n }\r\n opened.value = !opened.value;\r\n }\r\n\r\n function onBlur(event: FocusEvent) {\r\n if (listRef.value?.$el.contains(event.relatedTarget)) {\r\n opened.value = false;\r\n }\r\n }\r\n\r\n // Menu Contents\r\n function onClickItem(item: ListItem) {\r\n select(item);\r\n if (!props.multiple) {\r\n opened.value = false;\r\n }\r\n }\r\n\r\n function onAfterLeave() {\r\n if (focused.value) {\r\n fieldInputRef.value?.focus();\r\n }\r\n }\r\n\r\n function select(item: ListItem) {\r\n if (props.multiple) {\r\n //\r\n } else {\r\n model.value = [item];\r\n }\r\n }\r\n\r\n const displayText = computed(() => {\r\n if (props.multiple) {\r\n return selections.value.map((item) => item.text).join(', ');\r\n }\r\n return selections.value?.[0]?.text ?? '';\r\n });\r\n\r\n useRender(() => {\r\n const fieldInputProps = chooseProps(props, YFieldInput.props);\r\n return (\r\n <YMenu\r\n v-model={opened.value}\r\n ref={menuRef}\r\n offset={props.offset}\r\n position={props.position}\r\n origin={props.origin}\r\n content-classes={['y-select__content']}\r\n maxHeight={props.maxHeight}\r\n open-on-click-base={false}\r\n onAfterLeave={onAfterLeave}\r\n >\r\n {{\r\n base: (...args: any[]) =>\r\n slots.base ? (\r\n slots.base?.(...args)\r\n ) : (\r\n <YFieldInput\r\n {...{\r\n ...fieldInputProps,\r\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\r\n }}\r\n onMousedown:display={onMousedownDisplay}\r\n onBlur={onBlur}\r\n readonly\r\n class={['y-select', { 'y-select--opened': opened.value }]}\r\n v-model:focused={focused.value}\r\n >\r\n {{\r\n default: () => {\r\n return (\r\n <div class={['y-select__selection']}>\r\n {slots.selection\r\n ? slots.selection?.()\r\n : displayText.value}\r\n </div>\r\n );\r\n },\r\n leading: slots.leading\r\n ? (...args: any[]) => slots.leading?.(...args)\r\n : undefined,\r\n trailing: (...args: any[]) => {\r\n return slots['expand-icon'] ? (\r\n slots['expand-icon']()\r\n ) : (\r\n <i class=\"y-select__icon\">\r\n <YIconDropdown></YIconDropdown>\r\n </i>\r\n );\r\n },\r\n 'helper-text': slots['helper-text']\r\n ? slots['helper-text']?.()\r\n : undefined,\r\n }}\r\n </YFieldInput>\r\n ),\r\n default: () =>\r\n slots.menu ? (\r\n slots.menu()\r\n ) : (\r\n <YCard>\r\n {items.value.length > 0 ? (\r\n <YList ref={listRef}>\r\n {items.value.map((item) => {\r\n return (\r\n <YListItem onClick={(e) => onClickItem(item)}>\r\n {item.text}\r\n </YListItem>\r\n );\r\n })}\r\n </YList>\r\n ) : (\r\n <div class=\"y-select__no-options\">항목이 없습니다.</div>\r\n )}\r\n </YCard>\r\n ),\r\n }}\r\n </YMenu>\r\n );\r\n });\r\n\r\n return {\r\n fieldInputRef,\r\n model,\r\n selections,\r\n };\r\n },\r\n});\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YSelect.mjs","names":["shallowRef","computed","defineComponent","mergeProps","ref","useModelDuplex","useRender","pressCoordinateProps","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIconDropdown","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","pressYSelectPropsOptions","maxHeight","Number","String","position","YSelect","name","props","emits","value","setup","_ref","slots","fieldInputRef","menuRef","listRef","focused","items","toRefineItems","toEmitItems","model","v","emitValue","selections","map","find","item","selected","selection","onMousedownDisplay","event","disabled","onBlur","$el","contains","relatedTarget","onClickItem","select","onAfterLeave","focus","displayText","text","join","fieldInputProps","_createVNode","$event","offset","origin","base","_len","args","Array","_key","_mergeProps","leading","_len2","_key2","trailing","menu","e","_createTextVNode"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\r\nimport type { PropType } from 'vue';\r\nimport { computed, defineComponent, mergeProps, ref } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressCoordinateProps } from '../../composables/coordinate';\r\nimport {\r\n ListItem,\r\n pressListItemsPropsOptions,\r\n useItems,\r\n} from '../../composables/list-items';\r\nimport { wrapInArray } from '../../util/array';\r\nimport { deepEqual, getObjectValueByPath, omit } from '../../util/common';\r\nimport { chooseProps, propsFactory } from '../../util/vue-component';\r\nimport { YCard } from '../card';\r\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\r\nimport { YIconDropdown } from '../icons/YIconDropdown';\r\nimport { YList, YListItem } from '../list';\r\nimport { YMenu } from '../menu';\r\n\r\nimport './YSelect.scss';\r\n\r\nexport type SelectEquals = (\r\n optionsItem: any,\r\n valueItem: any,\r\n valueKey?: string,\r\n) => boolean;\r\n\r\nexport function returnItemEquals(\r\n optionsItem: any,\r\n valueItem: any,\r\n valueKey = 'value',\r\n) {\r\n const valueItemType = typeof valueItem;\r\n const itemValue =\r\n valueItemType === 'string' || valueItemType === 'number'\r\n ? getObjectValueByPath(optionsItem, valueKey)\r\n : optionsItem;\r\n return deepEqual(itemValue, valueItem);\r\n}\r\n\r\nexport const pressSelectPropsOptions = propsFactory(\r\n {\r\n opened: Boolean as PropType<boolean>,\r\n multiple: Boolean,\r\n weakEquals: Boolean,\r\n valueEquals: {\r\n type: Function as PropType<SelectEquals>,\r\n default: deepEqual,\r\n },\r\n defaultSelect: Boolean,\r\n ...pressListItemsPropsOptions(),\r\n },\r\n 'Select',\r\n);\r\n\r\nexport const pressYSelectPropsOptions = propsFactory(\r\n {\r\n maxHeight: {\r\n type: [Number, String],\r\n default: 310,\r\n },\r\n ...pressSelectPropsOptions(),\r\n ...pressYFieldInputPropsOptions(),\r\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\r\n 'coordinateStrategy',\r\n ]),\r\n },\r\n 'YSelect',\r\n);\r\n\r\nexport const YSelect = defineComponent({\r\n name: 'YSelect',\r\n props: {\r\n ...pressYSelectPropsOptions(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: any) => true,\r\n 'update:opened': (opened: boolean) => true,\r\n },\r\n setup(props, { slots }) {\r\n const fieldInputRef = ref();\r\n const menuRef = ref();\r\n const listRef = ref<InstanceType<typeof YList>>();\r\n\r\n const opened = useModelDuplex(props, 'opened');\r\n const focused = shallowRef(false);\r\n\r\n const { items, toRefineItems, toEmitItems } = useItems(props);\r\n const model = useModelDuplex(\r\n props,\r\n 'modelValue',\r\n [],\r\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\r\n (v) => {\r\n const emitValue = toEmitItems(wrapInArray(v));\r\n return props.multiple ? emitValue : emitValue[0] ?? null;\r\n },\r\n );\r\n\r\n const selections = computed<ListItem[]>(() => {\r\n return model.value.map((v: any) => {\r\n return items.value.find((item) => {\r\n return props.valueEquals(item.value, v.value);\r\n });\r\n });\r\n });\r\n\r\n const selected = computed(() => {\r\n return selections.value.map((selection) => selection.props.value);\r\n });\r\n\r\n // Field\r\n function onMousedownDisplay(event: MouseEvent) {\r\n if (props.disabled) {\r\n return;\r\n }\r\n opened.value = !opened.value;\r\n }\r\n\r\n function onBlur(event: FocusEvent) {\r\n if (listRef.value?.$el.contains(event.relatedTarget)) {\r\n opened.value = false;\r\n }\r\n }\r\n\r\n // Menu Contents\r\n function onClickItem(item: ListItem) {\r\n select(item);\r\n if (!props.multiple) {\r\n opened.value = false;\r\n }\r\n }\r\n\r\n function onAfterLeave() {\r\n if (focused.value) {\r\n fieldInputRef.value?.focus();\r\n }\r\n }\r\n\r\n function select(item: ListItem) {\r\n if (props.multiple) {\r\n //\r\n } else {\r\n model.value = [item];\r\n }\r\n }\r\n\r\n const displayText = computed(() => {\r\n if (props.multiple) {\r\n return selections.value.map((item) => item.text).join(', ');\r\n }\r\n return selections.value?.[0]?.text ?? '';\r\n });\r\n\r\n useRender(() => {\r\n const fieldInputProps = chooseProps(props, YFieldInput.props);\r\n return (\r\n <YMenu\r\n v-model={opened.value}\r\n ref={menuRef}\r\n offset={props.offset}\r\n position={props.position}\r\n origin={props.origin}\r\n content-classes={['y-select__content']}\r\n maxHeight={props.maxHeight}\r\n open-on-click-base={false}\r\n onAfterLeave={onAfterLeave}\r\n >\r\n {{\r\n base: (...args: any[]) =>\r\n slots.base ? (\r\n slots.base?.(...args)\r\n ) : (\r\n <YFieldInput\r\n {...{\r\n ...fieldInputProps,\r\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\r\n }}\r\n onMousedown:display={onMousedownDisplay}\r\n onBlur={onBlur}\r\n readonly\r\n class={['y-select', { 'y-select--opened': opened.value }]}\r\n v-model:focused={focused.value}\r\n >\r\n {{\r\n default: () => {\r\n return (\r\n <div class={['y-select__selection']}>\r\n {slots.selection\r\n ? slots.selection?.()\r\n : displayText.value}\r\n </div>\r\n );\r\n },\r\n leading: slots.leading\r\n ? (...args: any[]) => slots.leading?.(...args)\r\n : undefined,\r\n trailing: (...args: any[]) => {\r\n return slots['expand-icon'] ? (\r\n slots['expand-icon']()\r\n ) : (\r\n <i class=\"y-select__icon\">\r\n <YIconDropdown></YIconDropdown>\r\n </i>\r\n );\r\n },\r\n 'helper-text': slots['helper-text']\r\n ? slots['helper-text']?.()\r\n : undefined,\r\n }}\r\n </YFieldInput>\r\n ),\r\n default: () =>\r\n slots.menu ? (\r\n slots.menu()\r\n ) : (\r\n <YCard>\r\n {items.value.length > 0 ? (\r\n <YList ref={listRef}>\r\n {items.value.map((item) => {\r\n return (\r\n <YListItem onClick={(e) => onClickItem(item)}>\r\n {item.text}\r\n </YListItem>\r\n );\r\n })}\r\n </YList>\r\n ) : (\r\n <div class=\"y-select__no-options\">항목이 없습니다.</div>\r\n )}\r\n </YCard>\r\n ),\r\n }}\r\n </YMenu>\r\n );\r\n });\r\n\r\n return {\r\n fieldInputRef,\r\n model,\r\n selections,\r\n };\r\n },\r\n});\r\n"],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { mergeProps as _mergeProps, createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from "vue";
2
2
  import { computed, defineComponent, provide, toRef } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
+ import { useResizeObserver } from "../../composables/resize-observer.mjs";
5
+ import { toStyleSizeValue } from "../../util/index.mjs";
4
6
  import { chooseProps, propsFactory } from "../../util/vue-component.mjs";
5
7
  import { YDataTableBody } from "./YDataTableBody.mjs";
6
8
  import { YDataTableControl } from "./YDataTableControl.mjs";
@@ -97,6 +99,10 @@ export const YDataTable = defineComponent({
97
99
  allItems: items,
98
100
  pageItems: items
99
101
  });
102
+ const {
103
+ resizeObservedRef,
104
+ contentRect
105
+ } = useResizeObserver();
100
106
  useOptions({
101
107
  page,
102
108
  pageSize,
@@ -105,7 +111,8 @@ export const YDataTable = defineComponent({
105
111
  }, emit);
106
112
  provide('y-data-table', {
107
113
  toggleSort,
108
- sortBy
114
+ sortBy,
115
+ headRect: contentRect
109
116
  });
110
117
  const slotProps = computed(() => {
111
118
  return {
@@ -137,10 +144,18 @@ export const YDataTable = defineComponent({
137
144
  useRender(() => {
138
145
  return _createVNode(YTable, _mergeProps({
139
146
  "class": ['y-data-table']
140
- }, yTableProps), {
147
+ }, yTableProps, {
148
+ "style": {
149
+ '--y-table-head-height': toStyleSizeValue(contentRect.value?.height)
150
+ }
151
+ }), {
141
152
  top: () => slots.top?.(slotProps.value),
142
- leading: () => slots.leading ? slots.leading(slotProps.value) : _createVNode(_Fragment, null, [_createVNode(YDataTableLayer, null, slots)]),
143
- default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [_createVNode("thead", null, [_createVNode(YDataTableHead, yDataTableHeadProps, slots)]), slots.thead?.(slotProps.value), _createVNode("tbody", null, [_createVNode(YDataTableBody, _mergeProps(yDataTableBodyProps, {
153
+ leading: () => slots.leading ? slots.leading(slotProps.value) : _createVNode(_Fragment, null, [_createVNode(YDataTableLayer, {
154
+ "slot-props": slotProps.value
155
+ }, slots)]),
156
+ default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [_createVNode("thead", {
157
+ "ref": resizeObservedRef
158
+ }, [_createVNode(YDataTableHead, yDataTableHeadProps, slots)]), slots.thead?.(slotProps.value), _createVNode("tbody", null, [_createVNode(YDataTableBody, _mergeProps(yDataTableBodyProps, {
144
159
  "items": paginatedItems.value
145
160
  }), slots)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
146
161
  trailing: () => slots.trailing?.(slotProps.value),
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTable.mjs","names":["computed","defineComponent","provide","toRef","useRender","chooseProps","propsFactory","YDataTableBody","YDataTableControl","YDataTableHead","pressYDataTableHeadProps","YDataTableLayer","YTable","pressYTableProps","createHeader","pressDataTableHeader","pressDataTableItemsProps","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","usePaginatedItems","pressDataTableSelectionProps","provideSelection","createSorting","pressDataTableSortProps","provideSorting","pressDataTableProps","width","String","Number","search","YDataTable","name","props","emits","value","page","pageSize","sortBy","options","click:row","e","setup","_ref","slots","emit","multiSort","columns","headers","enableSelect","items","toggleSort","total","length","startIndex","endIndex","pageLength","setPageSize","setPage","paginatedItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend","append"],"sources":["../../../src/components/table/YDataTable.tsx"],"sourcesContent":["import { PropType, computed, defineComponent, provide, toRef } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YDataTableBody } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead, pressYDataTableHeadProps } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable, pressYTableProps } from './YTable';\nimport { createHeader, pressDataTableHeader } from './composibles/header';\nimport { pressDataTableItemsProps, useItems } from './composibles/items';\nimport { useOptions } from './composibles/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n usePaginatedItems,\n} from './composibles/pagination';\nimport {\n pressDataTableSelectionProps,\n provideSelection,\n} from './composibles/selection';\nimport {\n createSorting,\n pressDataTableSortProps,\n provideSorting,\n} from './composibles/sorting';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableProps = propsFactory(\n {\n width: [String, Number] as PropType<string | number>,\n search: String as PropType<string>,\n ...pressDataTableHeader(),\n ...pressDataTableItemsProps(),\n ...pressDataTableSortProps(),\n ...pressDataTableSelectionProps(),\n ...pressYDataTableHeadProps(),\n ...pressYTableProps(),\n },\n 'DataTable',\n);\n\nexport const YDataTable = defineComponent({\n name: 'YDataTable',\n props: {\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\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 { 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 total = computed(() => items.value.length);\n const { startIndex, endIndex, pageLength, setPageSize, setPage } =\n providePagination({\n page,\n pageSize,\n total,\n });\n const { paginatedItems } = usePaginatedItems({\n items,\n startIndex,\n endIndex,\n pageSize,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n provide('y-data-table', {\n toggleSort,\n sortBy,\n });\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n 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 const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n useRender(() => {\n return (\n <YTable class={['y-data-table']} {...yTableProps}>\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer v-slots={slots}></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <>\n <thead>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n <tbody>\n <YDataTableBody\n v-slots={slots}\n {...yDataTableBodyProps}\n items={paginatedItems.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 append: slots['control.append'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n return {paginatedItems}\n },\n});\n\nexport type YDataTable = InstanceType<typeof YDataTable>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDataTable.mjs","names":["computed","defineComponent","provide","toRef","useRender","useResizeObserver","toStyleSizeValue","chooseProps","propsFactory","YDataTableBody","YDataTableControl","YDataTableHead","pressYDataTableHeadProps","YDataTableLayer","YTable","pressYTableProps","createHeader","pressDataTableHeader","pressDataTableItemsProps","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","usePaginatedItems","pressDataTableSelectionProps","provideSelection","createSorting","pressDataTableSortProps","provideSorting","pressDataTableProps","width","String","Number","search","YDataTable","name","props","emits","value","page","pageSize","sortBy","options","click:row","e","setup","_ref","slots","emit","multiSort","columns","headers","enableSelect","items","toggleSort","total","length","startIndex","endIndex","pageLength","setPageSize","setPage","paginatedItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","resizeObservedRef","contentRect","headRect","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend","append"],"sources":["../../../src/components/table/YDataTable.tsx"],"sourcesContent":["import { PropType, computed, defineComponent, provide, toRef } 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 { YDataTableBody } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead, pressYDataTableHeadProps } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable, pressYTableProps } from './YTable';\nimport { createHeader, pressDataTableHeader } from './composibles/header';\nimport { pressDataTableItemsProps, useItems } from './composibles/items';\nimport { useOptions } from './composibles/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n usePaginatedItems,\n} from './composibles/pagination';\nimport {\n pressDataTableSelectionProps,\n provideSelection,\n} from './composibles/selection';\nimport {\n createSorting,\n pressDataTableSortProps,\n provideSorting,\n} from './composibles/sorting';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableProps = propsFactory(\n {\n width: [String, Number] as PropType<string | number>,\n search: String as PropType<string>,\n ...pressDataTableHeader(),\n ...pressDataTableItemsProps(),\n ...pressDataTableSortProps(),\n ...pressDataTableSelectionProps(),\n ...pressYDataTableHeadProps(),\n ...pressYTableProps(),\n },\n 'DataTable',\n);\n\nexport const YDataTable = defineComponent({\n name: 'YDataTable',\n props: {\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\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 { 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 total = computed(() => items.value.length);\n const { startIndex, endIndex, pageLength, setPageSize, setPage } =\n providePagination({\n page,\n pageSize,\n total,\n });\n const { paginatedItems } = usePaginatedItems({\n items,\n startIndex,\n endIndex,\n pageSize,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n const { resizeObservedRef, contentRect } = useResizeObserver();\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: contentRect,\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 const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n useRender(() => {\n return (\n <YTable\n class={['y-data-table']}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(\n contentRect.value?.height,\n ),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer\n v-slots={slots}\n slot-props={slotProps.value}\n ></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <>\n <thead ref={resizeObservedRef}>\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={paginatedItems.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 append: slots['control.append'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n return { paginatedItems };\n },\n});\n\nexport type YDataTable = InstanceType<typeof YDataTable>;\n"],"mappings":"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"}
@@ -4,7 +4,8 @@ import { useRender } from "../../composables/component.mjs";
4
4
  import { propsFactory } from "../../util/index.mjs";
5
5
  import { YButton } from "../button/index.mjs";
6
6
  import { YFieldInput } from "../field-input/index.mjs";
7
- import { YIconExpand } from "../icons/index.mjs";
7
+ import { YIconExpand, YIconPageControl } from "../icons/index.mjs";
8
+ import { YPagination } from "../pagination/index.mjs";
8
9
  import { pressDataTablePaginationProps } from "./composibles/pagination.mjs";
9
10
  import "./YDataTableControl.scss";
10
11
  export const pressYDataTableControlPropsOptions = propsFactory({
@@ -18,7 +19,8 @@ export const YDataTableControl = defineComponent({
18
19
  components: {
19
20
  YButton,
20
21
  YIconExpand,
21
- YFieldInput
22
+ YFieldInput,
23
+ YIconPageControl
22
24
  },
23
25
  props: pressYDataTableControlPropsOptions(),
24
26
  setup(props, _ref) {
@@ -28,15 +30,16 @@ export const YDataTableControl = defineComponent({
28
30
  useRender(() => {
29
31
  return _createVNode("footer", {
30
32
  "class": ['y-data-table-control']
31
- }, {
32
- prepend: slots.prepend?.(props),
33
- default: slots.default ? slots.default() : _createVNode(_Fragment, null, [_createVNode("div", {
34
- "class": "y-data-table-control__start"
35
- }, [props.page]), _createVNode("div", {
36
- "class": "y-data-table-control__end"
37
- }, null)]),
38
- append: slots.append?.(props)
39
- });
33
+ }, [slots.prepend?.(props), slots.default ? slots.default() : _createVNode(_Fragment, null, [_createVNode("div", {
34
+ "class": "y-data-table-control__start"
35
+ }, null), _createVNode("div", {
36
+ "class": "y-data-table-control__end"
37
+ }, [_createVNode(YPagination, {
38
+ "model-value": props.page,
39
+ "onUpdate:modelValue": props.setPage,
40
+ "length": props.pageLength,
41
+ "totalVisible": 0
42
+ }, null)])]), slots.append?.(props)]);
40
43
  });
41
44
  }
42
45
  });
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableControl.mjs","names":["defineComponent","useRender","propsFactory","YButton","YFieldInput","YIconExpand","pressDataTablePaginationProps","pressYDataTableControlPropsOptions","pageLength","Number","setPageSize","Function","setPage","YDataTableControl","name","components","props","setup","_ref","slots","_createVNode","prepend","default","_Fragment","page","append"],"sources":["../../../src/components/table/YDataTableControl.tsx"],"sourcesContent":["import { PropType, defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { propsFactory } from '../../util';\nimport { YButton } from '../button';\nimport { YFieldInput } from '../field-input';\nimport { YIconExpand } from '../icons';\nimport { pressDataTablePaginationProps } from './composibles/pagination';\n\nimport './YDataTableControl.scss';\n\nexport const pressYDataTableControlPropsOptions = propsFactory(\n {\n pageLength: Number as PropType<number>,\n setPageSize: Function as PropType<(pageSize: number) => void>,\n setPage: Function as PropType<(page: number) => void>,\n ...pressDataTablePaginationProps(),\n },\n 'YDataTableControl',\n);\n\nexport const YDataTableControl = defineComponent({\n name: 'YDataTableControl',\n components: {\n YButton,\n YIconExpand,\n YFieldInput,\n },\n props: pressYDataTableControlPropsOptions(),\n setup(props, { slots }) {\n useRender(() => {\n return (\n <footer class={['y-data-table-control']}>\n {{\n prepend: slots.prepend?.(props),\n default: slots.default ? (\n slots.default()\n ) : (\n <>\n <div class=\"y-data-table-control__start\">{props.page}</div>\n <div class=\"y-data-table-control__end\"></div>\n </>\n ),\n append: slots.append?.(props),\n }}\n </footer>\n );\n });\n },\n});\n\nexport type YDataTableControl = InstanceType<typeof YDataTableControl>;\n"],"mappings":";AAAA,SAAmBA,eAAe,QAAQ,KAAK;AAAC,SAEvCC,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,OAAO;AAAA,SACPC,WAAW;AAAA,SACXC,WAAW;AAAA,SACXC,6BAA6B;AAEtC;AAEA,OAAO,MAAMC,kCAAkC,GAAGL,YAAY,CAC5D;EACEM,UAAU,EAAEC,MAA0B;EACtCC,WAAW,EAAEC,QAAgD;EAC7DC,OAAO,EAAED,QAA4C;EACrD,GAAGL,6BAA6B,CAAC;AACnC,CAAC,EACD,mBACF,CAAC;AAED,OAAO,MAAMO,iBAAiB,GAAGb,eAAe,CAAC;EAC/Cc,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVZ,OAAO;IACPE,WAAW;IACXD;EACF,CAAC;EACDY,KAAK,EAAET,kCAAkC,CAAC,CAAC;EAC3CU,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBjB,SAAS,CAAC,MAAM;MACd,OAAAmB,YAAA;QAAA,SACiB,CAAC,sBAAsB;MAAC;QAEnCC,OAAO,EAAEF,KAAK,CAACE,OAAO,GAAGL,KAAK,CAAC;QAC/BM,OAAO,EAAEH,KAAK,CAACG,OAAO,GACpBH,KAAK,CAACG,OAAO,CAAC,CAAC,GAAAF,YAAA,CAAAG,SAAA,SAAAH,YAAA;UAAA,SAGF;QAA6B,IAAEJ,KAAK,CAACQ,IAAI,IAAAJ,YAAA;UAAA,SACzC;QAA2B,UAEzC;QACDK,MAAM,EAAEN,KAAK,CAACM,MAAM,GAAGT,KAAK;MAAC;IAIrC,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableControl.mjs","names":["defineComponent","useRender","propsFactory","YButton","YFieldInput","YIconExpand","YIconPageControl","YPagination","pressDataTablePaginationProps","pressYDataTableControlPropsOptions","pageLength","Number","setPageSize","Function","setPage","YDataTableControl","name","components","props","setup","_ref","slots","_createVNode","prepend","default","_Fragment","page","append"],"sources":["../../../src/components/table/YDataTableControl.tsx"],"sourcesContent":["import { PropType, defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { propsFactory } from '../../util';\nimport { YButton } from '../button';\nimport { YFieldInput } from '../field-input';\nimport { YIconExpand, YIconPageControl } from '../icons';\nimport { YPagination } from '../pagination';\nimport { pressDataTablePaginationProps } from './composibles/pagination';\n\nimport './YDataTableControl.scss';\n\nexport const pressYDataTableControlPropsOptions = propsFactory(\n {\n pageLength: Number as PropType<number>,\n setPageSize: Function as PropType<(pageSize: number) => void>,\n setPage: Function as PropType<(page: number) => void>,\n ...pressDataTablePaginationProps(),\n },\n 'YDataTableControl',\n);\n\nexport const YDataTableControl = defineComponent({\n name: 'YDataTableControl',\n components: {\n YButton,\n YIconExpand,\n YFieldInput,\n YIconPageControl,\n },\n props: pressYDataTableControlPropsOptions(),\n setup(props, { slots }) {\n useRender(() => {\n return (\n <footer class={['y-data-table-control']}>\n {slots.prepend?.(props)}\n {slots.default ? (\n slots.default()\n ) : (\n <>\n <div class=\"y-data-table-control__start\"></div>\n <div class=\"y-data-table-control__end\">\n <YPagination\n model-value={props.page}\n onUpdate:modelValue={props.setPage}\n length={props.pageLength}\n totalVisible={0}\n ></YPagination>\n </div>\n </>\n )}\n {slots.append?.(props)}\n </footer>\n );\n });\n },\n});\n\nexport type YDataTableControl = InstanceType<typeof YDataTableControl>;\n"],"mappings":";AAAA,SAAmBA,eAAe,QAAQ,KAAK;AAAC,SAEvCC,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,OAAO;AAAA,SACPC,WAAW;AAAA,SACXC,WAAW,EAAEC,gBAAgB;AAAA,SAC7BC,WAAW;AAAA,SACXC,6BAA6B;AAEtC;AAEA,OAAO,MAAMC,kCAAkC,GAAGP,YAAY,CAC5D;EACEQ,UAAU,EAAEC,MAA0B;EACtCC,WAAW,EAAEC,QAAgD;EAC7DC,OAAO,EAAED,QAA4C;EACrD,GAAGL,6BAA6B,CAAC;AACnC,CAAC,EACD,mBACF,CAAC;AAED,OAAO,MAAMO,iBAAiB,GAAGf,eAAe,CAAC;EAC/CgB,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVd,OAAO;IACPE,WAAW;IACXD,WAAW;IACXE;EACF,CAAC;EACDY,KAAK,EAAET,kCAAkC,CAAC,CAAC;EAC3CU,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBnB,SAAS,CAAC,MAAM;MACd,OAAAqB,YAAA;QAAA,SACiB,CAAC,sBAAsB;MAAC,IACpCD,KAAK,CAACE,OAAO,GAAGL,KAAK,CAAC,EACtBG,KAAK,CAACG,OAAO,GACZH,KAAK,CAACG,OAAO,CAAC,CAAC,GAAAF,YAAA,CAAAG,SAAA,SAAAH,YAAA;QAAA,SAGF;MAA6B,UAAAA,YAAA;QAAA,SAC7B;MAA2B,IAAAA,YAAA,CAAAf,WAAA;QAAA,eAErBW,KAAK,CAACQ,IAAI;QAAA,uBACFR,KAAK,CAACJ,OAAO;QAAA,UAC1BI,KAAK,CAACR,UAAU;QAAA,gBACV;MAAC,YAItB,EACAW,KAAK,CAACM,MAAM,GAAGT,KAAK,CAAC;IAG5B,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  .y-data-table-control {
2
2
  display: flex;
3
3
  align-items: center;
4
+ justify-content: space-between;
4
5
  padding: 8px 16px;
5
6
  gap: 8px;
6
7
  }
@@ -1,14 +1,28 @@
1
- import { createVNode as _createVNode } from "vue";
2
- import { defineComponent } from 'vue';
1
+ import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
+ import { defineComponent, inject } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
4
  export const YDataTableLayer = defineComponent({
5
5
  name: 'YDataTableLayer',
6
- setup() {
6
+ props: {
7
+ slotProps: Object
8
+ },
9
+ setup(props, _ref) {
10
+ let {
11
+ slots
12
+ } = _ref;
13
+ const YTableWire = inject('YTable');
7
14
  useRender(() => {
8
15
  return _createVNode("div", {
9
16
  "class": ['y-data-table-layer']
10
- }, null);
17
+ }, [slots.layer ? slots.layer?.(props.slotProps) : _createVNode(_Fragment, null, [_createVNode("div", {
18
+ "class": ['y-data-table-layer__head']
19
+ }, [slots['layer-head']?.(props.slotProps)]), _createVNode("div", {
20
+ "class": ['y-data-table-layer__body']
21
+ }, [slots['layer-body']?.(props.slotProps)])])]);
11
22
  });
23
+ return {
24
+ YTableWire
25
+ };
12
26
  }
13
27
  });
14
28
  //# sourceMappingURL=YDataTableLayer.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableLayer.mjs","names":["defineComponent","useRender","YDataTableLayer","name","setup","_createVNode"],"sources":["../../../src/components/table/YDataTableLayer.tsx"],"sourcesContent":["import { defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\n\r\nexport const YDataTableLayer = defineComponent({\r\n name: 'YDataTableLayer',\r\n setup() {\r\n useRender(() => {\r\n return <div class={['y-data-table-layer']}></div>;\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableLayer = InstanceType<typeof YDataTableLayer>;\r\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,KAAK;AAAC,SAE7BC,SAAS;AAElB,OAAO,MAAMC,eAAe,GAAGF,eAAe,CAAC;EAC7CG,IAAI,EAAE,iBAAiB;EACvBC,KAAKA,CAAA,EAAG;IACNH,SAAS,CAAC,MAAM;MACd,OAAAI,YAAA;QAAA,SAAmB,CAAC,oBAAoB;MAAC;IAC3C,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableLayer.mjs","names":["defineComponent","inject","useRender","YDataTableLayer","name","props","slotProps","Object","setup","_ref","slots","YTableWire","_createVNode","layer","_Fragment"],"sources":["../../../src/components/table/YDataTableLayer.tsx"],"sourcesContent":["import { defineComponent, inject } from 'vue';\nimport type { PropType, Ref } from 'vue';\n\nimport { useRender } from '../../composables/component';\n\nexport const YDataTableLayer = defineComponent({\n name: 'YDataTableLayer',\n props: {\n slotProps: Object as PropType<any>,\n },\n setup(props, { slots }) {\n const YTableWire = inject<{ containerRect: Ref<DOMRect> }>('YTable');\n\n useRender(() => {\n return (\n <div class={['y-data-table-layer']}>\n {slots.layer ? (\n slots.layer?.(props.slotProps)\n ) : (\n <>\n <div class={['y-data-table-layer__head']}>\n {slots['layer-head']?.(props.slotProps)}\n </div>\n <div class={['y-data-table-layer__body']}>\n {slots['layer-body']?.(props.slotProps)}\n </div>\n </>\n )}\n </div>\n );\n });\n\n return {\n YTableWire,\n };\n },\n});\n\nexport type YDataTableLayer = InstanceType<typeof YDataTableLayer>;\n"],"mappings":";AAAA,SAASA,eAAe,EAAEC,MAAM,QAAQ,KAAK;AAAC,SAGrCC,SAAS;AAElB,OAAO,MAAMC,eAAe,GAAGH,eAAe,CAAC;EAC7CI,IAAI,EAAE,iBAAiB;EACvBC,KAAK,EAAE;IACLC,SAAS,EAAEC;EACb,CAAC;EACDC,KAAKA,CAACH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAME,UAAU,GAAGV,MAAM,CAAkC,QAAQ,CAAC;IAEpEC,SAAS,CAAC,MAAM;MACd,OAAAU,YAAA;QAAA,SACc,CAAC,oBAAoB;MAAC,IAC/BF,KAAK,CAACG,KAAK,GACVH,KAAK,CAACG,KAAK,GAAGR,KAAK,CAACC,SAAS,CAAC,GAAAM,YAAA,CAAAE,SAAA,SAAAF,YAAA;QAAA,SAGhB,CAAC,0BAA0B;MAAC,IACrCF,KAAK,CAAC,YAAY,CAAC,GAAGL,KAAK,CAACC,SAAS,CAAC,IAAAM,YAAA;QAAA,SAE7B,CAAC,0BAA0B;MAAC,IACrCF,KAAK,CAAC,YAAY,CAAC,GAAGL,KAAK,CAACC,SAAS,CAAC,IAG5C;IAGP,CAAC,CAAC;IAEF,OAAO;MACLK;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { createVNode as _createVNode } from "vue";
2
- import { defineComponent } from 'vue';
2
+ 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 "./YTable.scss";
7
6
  import { propsFactory } from "../../util/vue-component.mjs";
7
+ import "./YTable.scss";
8
8
  export const pressYTableProps = propsFactory({
9
9
  tag: {
10
10
  type: String,
@@ -33,6 +33,9 @@ export const YTable = defineComponent({
33
33
  resizeObservedRef,
34
34
  contentRect
35
35
  } = useResizeObserver();
36
+ provide('YTable', {
37
+ containerRect: contentRect
38
+ });
36
39
  useRender(() => {
37
40
  const ElTag = props.tag ?? 'div';
38
41
  const containerHeight = props.flexHeight ? contentRect.value?.height ?? props.height : props.height;
@@ -1 +1 @@
1
- {"version":3,"file":"YTable.mjs","names":["defineComponent","useRender","useResizeObserver","toStyleSizeValue","propsFactory","pressYTableProps","tag","type","String","default","fixedHead","Boolean","height","Number","flexHeight","YTable","name","props","setup","_ref","slots","resizeObservedRef","contentRect","ElTag","containerHeight","value","_createVNode","top","leading","trailing","container","bottom"],"sources":["../../../src/components/table/YTable.tsx"],"sourcesContent":["import { PropType, computed, defineComponent } 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 './YTable.scss';\r\nimport { propsFactory } from \"../../util/vue-component\";\r\n\r\nexport const pressYTableProps = propsFactory({\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}, 'YTable')\r\n\r\nexport const YTable = defineComponent({\r\n name: 'YTable',\r\n props: {\r\n ...pressYTableProps(),\r\n },\r\n setup(props, { slots }) {\r\n const { resizeObservedRef, contentRect } = useResizeObserver();\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 >\r\n {slots.top?.()}\r\n {slots.default ? (\r\n <div\r\n class={['y-table__container']}\r\n ref={resizeObservedRef}\r\n style={{\r\n height: toStyleSizeValue(containerHeight),\r\n }}\r\n >\r\n {slots.leading?.()}\r\n <table>{slots.default()}</table>\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"],"mappings":";AAAA,SAA6BA,eAAe,QAAQ,KAAK;AAAC,SAEjDC,SAAS;AAAA,SACTC,iBAAiB;AAAA,SACjBC,gBAAgB;AACzB;AAAuB,SACdC,YAAY;AAErB,OAAO,MAAMC,gBAAgB,GAAGD,YAAY,CAAC;EAC3CE,GAAG,EAAE;IACHC,IAAI,EAAEC,MAA0B;IAChCC,OAAO,EAAE;EACX,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAEI;EACR,CAAC;EACDC,MAAM,EAAE;IACNL,IAAI,EAAE,CAACM,MAAM,EAAEL,MAAM;EACvB,CAAC;EACDM,UAAU,EAAE;IACVP,IAAI,EAAEI;EACR;AACF,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,MAAMI,MAAM,GAAGf,eAAe,CAAC;EACpCgB,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE;IACL,GAAGZ,gBAAgB,CAAC;EACtB,CAAC;EACDa,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAM;MAAEE,iBAAiB;MAAEC;IAAY,CAAC,GAAGpB,iBAAiB,CAAC,CAAC;IAC9DD,SAAS,CAAC,MAAM;MACd,MAAMsB,KAAK,GAAIN,KAAK,CAACX,GAAG,IAAoC,KAAK;MACjE,MAAMkB,eAAe,GAAGP,KAAK,CAACH,UAAU,GACnCQ,WAAW,CAACG,KAAK,EAAEb,MAAM,IAAIK,KAAK,CAACL,MAAM,GAC1CK,KAAK,CAACL,MAAM;MAChB,OAAAc,YAAA,CAAAH,KAAA;QAAA,SAEW,CACL,SAAS,EACT;UACE,qBAAqB,EAAEN,KAAK,CAACP,SAAS;UACtC,uBAAuB,EAAEO,KAAK,CAACH,UAAU,IAAIG,KAAK,CAACL,MAAM;UACzD,sBAAsB,EAAEK,KAAK,CAACH;QAChC,CAAC;MACF;QAAAL,OAAA,EAAAA,CAAA,MAEAW,KAAK,CAACO,GAAG,GAAG,CAAC,EACbP,KAAK,CAACX,OAAO,GAAAiB,YAAA;UAAA,SAEH,CAAC,oBAAoB,CAAC;UAAA,OACxBL,iBAAiB;UAAA,SACf;YACLT,MAAM,EAAET,gBAAgB,CAACqB,eAAe;UAC1C;QAAC,IAEAJ,KAAK,CAACQ,OAAO,GAAG,CAAC,EAAAF,YAAA,iBACVN,KAAK,CAACX,OAAO,CAAC,CAAC,IACtBW,KAAK,CAACS,QAAQ,GAAG,CAAC,KAGrBT,KAAK,CAACU,SAAS,GAAGT,iBAAiB,EAAEC,WAAW,CACjD,EACAF,KAAK,CAACW,MAAM,GAAG,CAAC;MAAA;IAGvB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YTable.mjs","names":["defineComponent","provide","useRender","useResizeObserver","toStyleSizeValue","propsFactory","pressYTableProps","tag","type","String","default","fixedHead","Boolean","height","Number","flexHeight","YTable","name","props","setup","_ref","slots","resizeObservedRef","contentRect","containerRect","ElTag","containerHeight","value","_createVNode","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 },\n 'YTable',\n);\n\nexport const YTable = defineComponent({\n name: 'YTable',\n props: {\n ...pressYTableProps(),\n },\n setup(props, { slots }) {\n const { resizeObservedRef, contentRect } = useResizeObserver();\n provide('YTable', { containerRect: contentRect });\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 >\n {slots.top?.()}\n {slots.default ? (\n <div\n class={['y-table__container']}\n ref={resizeObservedRef}\n style={{\n height: toStyleSizeValue(containerHeight),\n }}\n >\n {slots.leading?.()}\n <table>{slots.default()}</table>\n {slots.trailing?.()}\n </div>\n ) : (\n slots.container?.(resizeObservedRef, contentRect)\n )}\n {slots.bottom?.()}\n </ElTag>\n );\n });\n },\n});\n"],"mappings":";AAAA,SAAmBA,eAAe,EAAEC,OAAO,QAAQ,KAAK;AAAC,SAEhDC,SAAS;AAAA,SACTC,iBAAiB;AAAA,SACjBC,gBAAgB;AAAA,SAChBC,YAAY;AAErB;AAEA,OAAO,MAAMC,gBAAgB,GAAGD,YAAY,CAC1C;EACEE,GAAG,EAAE;IACHC,IAAI,EAAEC,MAA0B;IAChCC,OAAO,EAAE;EACX,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAEI;EACR,CAAC;EACDC,MAAM,EAAE;IACNL,IAAI,EAAE,CAACM,MAAM,EAAEL,MAAM;EACvB,CAAC;EACDM,UAAU,EAAE;IACVP,IAAI,EAAEI;EACR;AACF,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAMI,MAAM,GAAGhB,eAAe,CAAC;EACpCiB,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE;IACL,GAAGZ,gBAAgB,CAAC;EACtB,CAAC;EACDa,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAM;MAAEE,iBAAiB;MAAEC;IAAY,CAAC,GAAGpB,iBAAiB,CAAC,CAAC;IAC9DF,OAAO,CAAC,QAAQ,EAAE;MAAEuB,aAAa,EAAED;IAAY,CAAC,CAAC;IACjDrB,SAAS,CAAC,MAAM;MACd,MAAMuB,KAAK,GAAIP,KAAK,CAACX,GAAG,IAAoC,KAAK;MACjE,MAAMmB,eAAe,GAAGR,KAAK,CAACH,UAAU,GACpCQ,WAAW,CAACI,KAAK,EAAEd,MAAM,IAAIK,KAAK,CAACL,MAAM,GACzCK,KAAK,CAACL,MAAM;MAChB,OAAAe,YAAA,CAAAH,KAAA;QAAA,SAEW,CACL,SAAS,EACT;UACE,qBAAqB,EAAEP,KAAK,CAACP,SAAS;UACtC,uBAAuB,EAAEO,KAAK,CAACH,UAAU,IAAIG,KAAK,CAACL,MAAM;UACzD,sBAAsB,EAAEK,KAAK,CAACH;QAChC,CAAC;MACF;QAAAL,OAAA,EAAAA,CAAA,MAEAW,KAAK,CAACQ,GAAG,GAAG,CAAC,EACbR,KAAK,CAACX,OAAO,GAAAkB,YAAA;UAAA,SAEH,CAAC,oBAAoB,CAAC;UAAA,OACxBN,iBAAiB;UAAA,SACf;YACLT,MAAM,EAAET,gBAAgB,CAACsB,eAAe;UAC1C;QAAC,IAEAL,KAAK,CAACS,OAAO,GAAG,CAAC,EAAAF,YAAA,iBACVP,KAAK,CAACX,OAAO,CAAC,CAAC,IACtBW,KAAK,CAACU,QAAQ,GAAG,CAAC,KAGrBV,KAAK,CAACW,SAAS,GAAGV,iBAAiB,EAAEC,WAAW,CACjD,EACAF,KAAK,CAACY,MAAM,GAAG,CAAC;MAAA;IAGvB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -1,7 +1,10 @@
1
1
  $table-cell-padding: 0 16px !default;
2
2
  $table-head-background: var(--y-theme-surface-variant, #dfe3eb) !default;
3
+ $table-cell-border-bottom-color: rgba(var(--y-theme-outline-rgb), var(--y-theme-outline-opacity)) !default;
3
4
 
4
5
  .y-table {
6
+ --y-table-border-bottom-color: #{$table-cell-border-bottom-color};
7
+
5
8
  display: flex;
6
9
  flex-direction: column;
7
10
 
@@ -51,7 +54,7 @@ $table-head-background: var(--y-theme-surface-variant, #dfe3eb) !default;
51
54
  > th {
52
55
  height: 56px;
53
56
  text-align: left;
54
- border-bottom: thin solid rgba(var(--y-theme-outline), var(--y-theme-outline-opacity));
57
+ border-bottom: thin solid var(--y-table-border-bottom-color);
55
58
  user-select: none;
56
59
  }
57
60
  }
@@ -59,7 +62,7 @@ $table-head-background: var(--y-theme-surface-variant, #dfe3eb) !default;
59
62
  > tbody > tr {
60
63
  &:not(:last-child) {
61
64
  > td {
62
- border-bottom: thin solid rgba(var(--y-theme-outline), var(--y-theme-outline-opacity));
65
+ border-bottom: thin solid var(--y-table-border-bottom-color);
63
66
  }
64
67
  }
65
68
  > td {
@@ -113,3 +116,31 @@ $table-head-background: var(--y-theme-surface-variant, #dfe3eb) !default;
113
116
  }
114
117
  }
115
118
  }
119
+
120
+ .y-data-table-layer {
121
+ position: absolute;
122
+ top: 0;
123
+ right: 0;
124
+ bottom: 0;
125
+ left: 0;
126
+ pointer-events: none;
127
+ overflow-y: clip;
128
+ overflow-x: visible;
129
+ z-index: 50;
130
+
131
+ &__head {
132
+ position: absolute;
133
+ top: 0;
134
+ right: 0;
135
+ left: 0;
136
+ height: var(--y-table-head-height, 48px);
137
+ }
138
+
139
+ &__body {
140
+ position: absolute;
141
+ top: var(--y-table-head-height, 48px);
142
+ right: 0;
143
+ left: 0;
144
+ bottom: 0;
145
+ }
146
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuyeon",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "keywords": [
5
5
  "UI Library",
6
6
  "Vue"
@@ -7,14 +7,14 @@ export declare const PageControlPaths: {
7
7
  };
8
8
  export declare const YIconPageControl: import("vue").DefineComponent<{
9
9
  type: {
10
- type: PropType<"first" | "last" | "next" | "prev">;
10
+ type: PropType<"next" | "prev" | "first" | "last">;
11
11
  default: string;
12
12
  };
13
13
  }, unknown, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
14
14
  type: {
15
- type: PropType<"first" | "last" | "next" | "prev">;
15
+ type: PropType<"next" | "prev" | "first" | "last">;
16
16
  default: string;
17
17
  };
18
18
  }>>, {
19
- type: "first" | "last" | "next" | "prev";
19
+ type: "next" | "prev" | "first" | "last";
20
20
  }, {}>;
@@ -1,3 +1,5 @@
1
1
  export * from './YIconExpand';
2
2
  export * from './YIconClear';
3
3
  export * from './YIconCheckbox';
4
+ export * from './YIconPageControl';
5
+ export * from './YIconSort';
@@ -13,6 +13,7 @@ export declare const pressSelectPropsOptions: <Defaults extends {
13
13
  multiple?: unknown;
14
14
  weakEquals?: unknown;
15
15
  valueEquals?: unknown;
16
+ defaultSelect?: unknown;
16
17
  } = {}>(defaults?: Defaults | undefined) => {
17
18
  returnItem: unknown extends Defaults["returnItem"] ? BooleanConstructor : {
18
19
  type: PropType<unknown extends Defaults["returnItem"] ? boolean : boolean | Defaults["returnItem"]>;
@@ -92,6 +93,10 @@ export declare const pressSelectPropsOptions: <Defaults extends {
92
93
  type: PropType<unknown extends Defaults["valueEquals"] ? SelectEquals : SelectEquals | Defaults["valueEquals"]>;
93
94
  default: unknown extends Defaults["valueEquals"] ? SelectEquals : SelectEquals | Defaults["valueEquals"];
94
95
  };
96
+ defaultSelect: unknown extends Defaults["defaultSelect"] ? BooleanConstructor : {
97
+ type: PropType<unknown extends Defaults["defaultSelect"] ? boolean : boolean | Defaults["defaultSelect"]>;
98
+ default: unknown extends Defaults["defaultSelect"] ? boolean : boolean | Defaults["defaultSelect"];
99
+ };
95
100
  };
96
101
  export declare const pressYSelectPropsOptions: <Defaults extends {
97
102
  position?: unknown;
@@ -136,6 +141,7 @@ export declare const pressYSelectPropsOptions: <Defaults extends {
136
141
  multiple?: unknown;
137
142
  weakEquals?: unknown;
138
143
  valueEquals?: unknown;
144
+ defaultSelect?: unknown;
139
145
  maxHeight?: unknown;
140
146
  } = {}>(defaults?: Defaults | undefined) => {
141
147
  position: unknown extends Defaults["position"] ? Omit<{
@@ -438,6 +444,10 @@ export declare const pressYSelectPropsOptions: <Defaults extends {
438
444
  type: PropType<unknown extends Defaults["valueEquals"] ? SelectEquals : SelectEquals | Defaults["valueEquals"]>;
439
445
  default: unknown extends Defaults["valueEquals"] ? SelectEquals : SelectEquals | Defaults["valueEquals"];
440
446
  };
447
+ defaultSelect: unknown extends Defaults["defaultSelect"] ? BooleanConstructor : {
448
+ type: PropType<unknown extends Defaults["defaultSelect"] ? boolean : boolean | Defaults["defaultSelect"]>;
449
+ default: unknown extends Defaults["defaultSelect"] ? boolean : boolean | Defaults["defaultSelect"];
450
+ };
441
451
  maxHeight: unknown extends Defaults["maxHeight"] ? {
442
452
  type: (StringConstructor | NumberConstructor)[];
443
453
  default: number;
@@ -558,6 +568,7 @@ export declare const YSelect: import("vue").DefineComponent<{
558
568
  type: PropType<SelectEquals>;
559
569
  default: typeof deepEqual;
560
570
  };
571
+ defaultSelect: BooleanConstructor;
561
572
  maxHeight: {
562
573
  type: (StringConstructor | NumberConstructor)[];
563
574
  default: number;
@@ -678,6 +689,7 @@ export declare const YSelect: import("vue").DefineComponent<{
678
689
  type: PropType<SelectEquals>;
679
690
  default: typeof deepEqual;
680
691
  };
692
+ defaultSelect: BooleanConstructor;
681
693
  maxHeight: {
682
694
  type: (StringConstructor | NumberConstructor)[];
683
695
  default: number;
@@ -707,4 +719,5 @@ export declare const YSelect: import("vue").DefineComponent<{
707
719
  multiple: boolean;
708
720
  weakEquals: boolean;
709
721
  valueEquals: SelectEquals;
722
+ defaultSelect: boolean;
710
723
  }, {}>;
@@ -1,2 +1,11 @@
1
- export declare const YDataTableLayer: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
1
+ import type { PropType, Ref } from 'vue';
2
+ export declare const YDataTableLayer: import("vue").DefineComponent<{
3
+ slotProps: PropType<any>;
4
+ }, {
5
+ YTableWire: {
6
+ containerRect: Ref<DOMRect>;
7
+ } | undefined;
8
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
9
+ slotProps: PropType<any>;
10
+ }>>, {}, {}>;
2
11
  export type YDataTableLayer = InstanceType<typeof YDataTableLayer>;