yuyeon 0.0.38-rc9 → 0.0.39

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 (46) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +2010 -2005
  3. package/dist/yuyeon.umd.cjs +3 -3
  4. package/lib/components/checkbox/YCheckbox.mjs.map +1 -1
  5. package/lib/components/dialog/YDialog.scss +3 -1
  6. package/lib/components/divider/YDivider.mjs +18 -0
  7. package/lib/components/divider/YDivider.mjs.map +1 -0
  8. package/lib/components/divider/YDivider.scss +3 -0
  9. package/lib/components/divider/index.mjs +2 -0
  10. package/lib/components/divider/index.mjs.map +1 -0
  11. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  12. package/lib/components/field-input/YFieldInput.scss +1 -0
  13. package/lib/components/index.mjs +1 -0
  14. package/lib/components/index.mjs.map +1 -1
  15. package/lib/components/input/YInput.mjs +1 -1
  16. package/lib/components/input/YInput.mjs.map +1 -1
  17. package/lib/components/input/YInput.scss +1 -0
  18. package/lib/components/layer/YLayer.mjs +1 -0
  19. package/lib/components/layer/YLayer.mjs.map +1 -1
  20. package/lib/components/list/YList.mjs.map +1 -1
  21. package/lib/components/select/YSelect.mjs +19 -7
  22. package/lib/components/select/YSelect.mjs.map +1 -1
  23. package/lib/components/select/YSelect.scss +1 -0
  24. package/lib/components/table/YTable.mjs +8 -3
  25. package/lib/components/table/YTable.mjs.map +1 -1
  26. package/lib/components/table/YTable.scss +1 -0
  27. package/lib/components/table/composibles/pagination.mjs +1 -1
  28. package/lib/components/table/composibles/pagination.mjs.map +1 -1
  29. package/lib/components/tooltip/YTooltip.mjs +49 -90
  30. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  31. package/lib/util/dom.mjs +3 -0
  32. package/lib/util/dom.mjs.map +1 -1
  33. package/package.json +1 -1
  34. package/types/components/dialog/YDialog.d.ts +1 -0
  35. package/types/components/divider/YDivider.d.ts +15 -0
  36. package/types/components/divider/index.d.ts +1 -0
  37. package/types/components/dropdown/YDropdown.d.ts +4 -4
  38. package/types/components/field-input/YFieldInput.d.ts +6 -6
  39. package/types/components/index.d.ts +1 -0
  40. package/types/components/input/YInput.d.ts +6 -6
  41. package/types/components/layer/YLayer.d.ts +1 -0
  42. package/types/components/menu/YMenu.d.ts +1 -0
  43. package/types/components/select/YSelect.d.ts +21 -8
  44. package/types/components/tooltip/YTooltip.d.ts +162 -36
  45. package/types/shims.d.ts +2 -0
  46. package/types/util/dom.d.ts +1 -0
@@ -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","defaultSelect","pressYSelectPropsOptions","maxHeight","Number","String","expandIcon","Object","position","YSelect","name","props","emits","value","click:item","item","e","setup","_ref","slots","fieldInputRef","menuRef","listRef","focused","items","toRefineItems","toEmitItems","model","v","emitValue","selections","map","find","selected","selection","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","onAfterLeave","focus","index","findIndex","neo","slice","splice","displayText","text","join","fieldInputProps","_createVNode","$event","offset","origin","base","_len","args","Array","_key","_mergeProps","leading","_len2","_key2","trailing","menu","_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, getPropertyFromItem, 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 expandIcon: {\r\n type: Object,\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 'click:item': (item: any, e: MouseEvent) => 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 function isSelected(item: ListItem) {\r\n return !!selections.value.find((selectedItem) => {\r\n return selectedItem.value === item.value;\r\n });\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, e: MouseEvent) {\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 const index = selections.value.findIndex((selectedItem) => {\r\n return selectedItem.value === item.value;\r\n });\r\n if (index === -1) {\r\n model.value = [...model.value, item];\r\n } else {\r\n const neo = model.value.slice();\r\n neo.splice(index, 1);\r\n model.value = neo;\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\r\n onClick={(e) => onClickItem(item, e)}\r\n class={{ 'y-list-item--active': isSelected(item) }}\r\n >\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 selected,\r\n };\r\n },\r\n});\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YSelect.mjs","names":["shallowRef","computed","defineComponent","mergeProps","onMounted","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","expandIcon","Object","position","YSelect","name","inheritAttrs","props","emits","value","click:item","item","e","slots","setup","_ref","attrs","fieldInputRef","menuRef","listRef","focused","items","toRefineItems","toEmitItems","model","v","emitValue","selections","map","find","selected","selection","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","onAfterLeave","focus","index","findIndex","neo","slice","splice","displayText","text","join","fieldInputProps","_createVNode","$event","offset","origin","base","_len","args","Array","_key","_mergeProps","leading","_len2","_key2","trailing","menu","_createTextVNode","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport type { PropType, SlotsType } from 'vue';\nimport { computed, defineComponent, mergeProps, onMounted, ref } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { pressCoordinateProps } from '../../composables/coordinate';\nimport {\n ListItem,\n pressListItemsPropsOptions,\n useItems,\n} from '../../composables/list-items';\nimport { wrapInArray } from '../../util/array';\nimport {\n deepEqual,\n getObjectValueByPath,\n getPropertyFromItem,\n omit,\n} from '../../util/common';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIconDropdown } from '../icons/YIconDropdown';\nimport { YList, YListItem } from '../list';\nimport { YMenu } from '../menu';\n\nimport './YSelect.scss';\n\nexport type SelectEquals = (\n optionsItem: any,\n valueItem: any,\n valueKey?: string,\n) => boolean;\n\nexport function returnItemEquals(\n optionsItem: any,\n valueItem: any,\n valueKey = 'value',\n) {\n const valueItemType = typeof valueItem;\n const itemValue =\n valueItemType === 'string' || valueItemType === 'number'\n ? getObjectValueByPath(optionsItem, valueKey)\n : optionsItem;\n return deepEqual(itemValue, valueItem);\n}\n\nexport const pressSelectPropsOptions = propsFactory(\n {\n opened: Boolean as PropType<boolean>,\n multiple: Boolean,\n weakEquals: Boolean,\n valueEquals: {\n type: Function as PropType<SelectEquals>,\n default: deepEqual,\n },\n defaultSelect: Boolean,\n ...pressListItemsPropsOptions(),\n },\n 'Select',\n);\n\nexport const pressYSelectPropsOptions = propsFactory(\n {\n maxHeight: {\n type: [Number, String],\n default: 310,\n },\n expandIcon: {\n type: Object,\n },\n ...pressSelectPropsOptions(),\n ...pressYFieldInputPropsOptions(),\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\n 'coordinateStrategy',\n ]),\n },\n 'YSelect',\n);\n\nexport const YSelect = defineComponent({\n name: 'YSelect',\n inheritAttrs: false,\n props: {\n ...pressYSelectPropsOptions(),\n },\n emits: {\n 'update:modelValue': (value: any) => true,\n 'update:opened': (opened: boolean) => true,\n 'click:item': (item: any, e: MouseEvent) => true,\n },\n slots: Object as SlotsType<{\n base: any;\n selection: any;\n leading: any;\n 'helper-text': any;\n menu: any;\n 'menu-prepend': any;\n 'menu-append': any;\n 'expand-icon': any;\n item: { item: any; selected: boolean };\n }>,\n setup(props, { slots, attrs }) {\n const fieldInputRef = ref();\n const menuRef = ref();\n const listRef = ref<InstanceType<typeof YList>>();\n\n const opened = useModelDuplex(props, 'opened');\n const focused = shallowRef(false);\n\n const { items, toRefineItems, toEmitItems } = useItems(props);\n const model = useModelDuplex(\n props,\n 'modelValue',\n [],\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\n (v) => {\n const emitValue = toEmitItems(wrapInArray(v));\n return props.multiple ? emitValue : emitValue[0] ?? null;\n },\n );\n\n const selections = computed<ListItem[]>(() => {\n return model.value.map((v: any) => {\n return items.value.find((item) => {\n return props.valueEquals(item.value, v.value);\n });\n });\n });\n\n const selected = computed(() => {\n return selections.value.map((selection) => selection.props.value);\n });\n\n function isSelected(item: ListItem) {\n return !!selections.value.find((selectedItem) => {\n return selectedItem?.value === item.value;\n });\n }\n\n // Field\n function onMousedownDisplay(event: MouseEvent) {\n if (props.disabled) {\n return;\n }\n opened.value = !opened.value;\n }\n\n function onBlur(event: FocusEvent) {\n // if (listRef.value?.$el.contains(event.relatedTarget)) {\n // opened.value = false;\n // }\n }\n\n // Menu Contents\n function onClickItem(item: ListItem, e: MouseEvent) {\n select(item);\n if (!props.multiple) {\n opened.value = false;\n }\n }\n\n function onAfterLeave() {\n if (focused.value) {\n fieldInputRef.value?.focus();\n }\n }\n\n function select(item: ListItem) {\n if (props.multiple) {\n const index = selections.value.findIndex((selectedItem) => {\n return selectedItem.value === item.value;\n });\n if (index === -1) {\n model.value = [...model.value, item];\n } else {\n const neo = model.value.slice();\n neo.splice(index, 1);\n model.value = neo;\n }\n } else {\n model.value = [item];\n }\n }\n\n const displayText = computed(() => {\n if (props.multiple) {\n return selections.value.map((item) => item.text).join(', ');\n }\n return selections.value?.[0]?.text ?? '';\n });\n\n useRender(() => {\n const fieldInputProps = chooseProps(props, YFieldInput.props);\n return (\n <YMenu\n v-model={opened.value}\n ref={menuRef}\n offset={props.offset}\n position={props.position}\n origin={props.origin}\n content-classes={['y-select__content']}\n maxHeight={props.maxHeight}\n open-on-click-base={false}\n onAfterLeave={onAfterLeave}\n >\n {{\n base: (...args: any[]) =>\n slots.base ? (\n slots.base?.(...args)\n ) : (\n <YFieldInput\n {...{\n ...fieldInputProps,\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\n }}\n onMousedown:display={onMousedownDisplay}\n onBlur={onBlur}\n readonly\n class={['y-select', { 'y-select--opened': opened.value }]}\n {...attrs}\n v-model:focused={focused.value}\n >\n {{\n default: () => {\n return (\n <div class={['y-select__selection']}>\n {slots.selection\n ? slots.selection?.()\n : displayText.value}\n </div>\n );\n },\n leading: slots.leading\n ? (...args: any[]) => slots.leading?.(...args)\n : undefined,\n trailing: (...args: any[]) => {\n return slots['expand-icon'] ? (\n slots['expand-icon']()\n ) : (\n <i class=\"y-select__icon\">\n <YIconDropdown></YIconDropdown>\n </i>\n );\n },\n 'helper-text': slots['helper-text']\n ? slots['helper-text']?.()\n : undefined,\n }}\n </YFieldInput>\n ),\n default: () =>\n slots.menu ? (\n slots.menu()\n ) : (\n <YCard>\n {slots['menu-prepend']?.()}\n {items.value.length > 0 ? (\n <YList ref={listRef}>\n {items.value.map((item) => {\n return (\n <YListItem\n onClick={(e) => onClickItem(item, e)}\n class={{ 'y-list-item--active': isSelected(item) }}\n >\n {slots.item\n ? slots.item({ item, selected: isSelected(item) })\n : item.text}\n </YListItem>\n );\n })}\n </YList>\n ) : (\n <div class=\"y-select__no-options\">항목이 없습니다.</div>\n )}\n {slots['menu-append']?.()}\n </YCard>\n ),\n }}\n </YMenu>\n );\n });\n\n onMounted(() => {\n if (\n props.defaultSelect &&\n (props.modelValue === undefined ||\n (Array.isArray(props.modelValue) && props.modelValue.length === 0)) &&\n items.value?.length\n ) {\n select(items.value[0]);\n }\n });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n };\n },\n});\n"],"mappings":"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"}
@@ -26,6 +26,7 @@
26
26
  height: 100%;
27
27
  width: 100%;
28
28
  padding: 8px 10px;
29
+ contain: content;
29
30
  }
30
31
 
31
32
  .y-input__display {
@@ -33,6 +33,10 @@ export const YTable = defineComponent({
33
33
  resizeObservedRef,
34
34
  contentRect
35
35
  } = useResizeObserver();
36
+ const {
37
+ resizeObservedRef: wrapperRef,
38
+ contentRect: wrapperRect
39
+ } = useResizeObserver();
36
40
  const {
37
41
  resizeObservedRef: tableRef,
38
42
  contentRect: tableRect
@@ -51,13 +55,14 @@ export const YTable = defineComponent({
51
55
  }],
52
56
  "style": {
53
57
  '--y-table-container-width': toStyleSizeValue(contentRect.value?.width),
54
- '--y-table-wrapper-width': toStyleSizeValue(tableRect.value?.width)
58
+ '--y-table-wrapper-width': toStyleSizeValue(wrapperRect.value?.width)
55
59
  }
56
60
  }, {
57
61
  default: () => [slots.top?.(), slots.default ? _createVNode("div", {
58
- "class": ['y-table__container'],
59
- "ref": resizeObservedRef
62
+ "ref": resizeObservedRef,
63
+ "class": ['y-table__container']
60
64
  }, [slots.leading?.(), _createVNode("div", {
65
+ "ref": wrapperRef,
61
66
  "class": ['y-table__wrapper'],
62
67
  "style": {
63
68
  height: toStyleSizeValue(containerHeight)
@@ -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","YTable","name","props","setup","_ref","slots","resizeObservedRef","contentRect","tableRef","tableRect","containerRect","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 },\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 const { resizeObservedRef: tableRef, contentRect: tableRect } =\n 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 style={{\n '--y-table-container-width': toStyleSizeValue(\n contentRect.value?.width,\n ),\n '--y-table-wrapper-width': toStyleSizeValue(tableRect.value?.width),\n }}\n >\n {slots.top?.()}\n {slots.default ? (\n <div class={['y-table__container']} ref={resizeObservedRef}>\n {slots.leading?.()}\n <div\n class={['y-table__wrapper']}\n style={{\n height: toStyleSizeValue(containerHeight),\n }}\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"],"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;IAC9D,MAAM;MAAEmB,iBAAiB,EAAEE,QAAQ;MAAED,WAAW,EAAEE;IAAU,CAAC,GAC3DtB,iBAAiB,CAAC,CAAC;IACrBF,OAAO,CAAC,QAAQ,EAAE;MAAEyB,aAAa,EAAEH;IAAY,CAAC,CAAC;IACjDrB,SAAS,CAAC,MAAM;MACd,MAAMyB,KAAK,GAAIT,KAAK,CAACX,GAAG,IAAoC,KAAK;MACjE,MAAMqB,eAAe,GAAGV,KAAK,CAACH,UAAU,GACpCQ,WAAW,CAACM,KAAK,EAAEhB,MAAM,IAAIK,KAAK,CAACL,MAAM,GACzCK,KAAK,CAACL,MAAM;MAChB,OAAAiB,YAAA,CAAAH,KAAA;QAAA,SAEW,CACL,SAAS,EACT;UACE,qBAAqB,EAAET,KAAK,CAACP,SAAS;UACtC,uBAAuB,EAAEO,KAAK,CAACH,UAAU,IAAIG,KAAK,CAACL,MAAM;UACzD,sBAAsB,EAAEK,KAAK,CAACH;QAChC,CAAC,CACF;QAAA,SACM;UACL,2BAA2B,EAAEX,gBAAgB,CAC3CmB,WAAW,CAACM,KAAK,EAAEE,KACrB,CAAC;UACD,yBAAyB,EAAE3B,gBAAgB,CAACqB,SAAS,CAACI,KAAK,EAAEE,KAAK;QACpE;MAAC;QAAArB,OAAA,EAAAA,CAAA,MAEAW,KAAK,CAACW,GAAG,GAAG,CAAC,EACbX,KAAK,CAACX,OAAO,GAAAoB,YAAA;UAAA,SACA,CAAC,oBAAoB,CAAC;UAAA,OAAOR;QAAiB,IACvDD,KAAK,CAACY,OAAO,GAAG,CAAC,EAAAH,YAAA;UAAA,SAET,CAAC,kBAAkB,CAAC;UAAA,SACpB;YACLjB,MAAM,EAAET,gBAAgB,CAACwB,eAAe;UAC1C;QAAC,IAAAE,YAAA;UAAA,OAEWN;QAAQ,IAAGH,KAAK,CAACX,OAAO,CAAC,CAAC,MAEvCW,KAAK,CAACa,QAAQ,GAAG,CAAC,KAGrBb,KAAK,CAACc,SAAS,GAAGb,iBAAiB,EAAEC,WAAW,CACjD,EACAF,KAAK,CAACe,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","wrapperRef","wrapperRect","tableRef","tableRect","containerRect","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 },\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 const { resizeObservedRef: wrapperRef, contentRect: wrapperRect } =\n useResizeObserver();\n const { resizeObservedRef: tableRef, contentRect: tableRect } =\n 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 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 >\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"],"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;IAC9D,MAAM;MAAEmB,iBAAiB,EAAEE,UAAU;MAAED,WAAW,EAAEE;IAAY,CAAC,GAC/DtB,iBAAiB,CAAC,CAAC;IACrB,MAAM;MAAEmB,iBAAiB,EAAEI,QAAQ;MAAEH,WAAW,EAAEI;IAAU,CAAC,GAC3DxB,iBAAiB,CAAC,CAAC;IACrBF,OAAO,CAAC,QAAQ,EAAE;MAAE2B,aAAa,EAAEL;IAAY,CAAC,CAAC;IACjDrB,SAAS,CAAC,MAAM;MACd,MAAM2B,KAAK,GAAIX,KAAK,CAACX,GAAG,IAAoC,KAAK;MACjE,MAAMuB,eAAe,GAAGZ,KAAK,CAACH,UAAU,GACpCQ,WAAW,CAACQ,KAAK,EAAElB,MAAM,IAAIK,KAAK,CAACL,MAAM,GACzCK,KAAK,CAACL,MAAM;MAChB,OAAAmB,YAAA,CAAAH,KAAA;QAAA,SAEW,CACL,SAAS,EACT;UACE,qBAAqB,EAAEX,KAAK,CAACP,SAAS;UACtC,uBAAuB,EAAEO,KAAK,CAACH,UAAU,IAAIG,KAAK,CAACL,MAAM;UACzD,sBAAsB,EAAEK,KAAK,CAACH;QAChC,CAAC,CACF;QAAA,SACM;UACL,2BAA2B,EAAEX,gBAAgB,CAC3CmB,WAAW,CAACQ,KAAK,EAAEE,KACrB,CAAC;UACD,yBAAyB,EAAE7B,gBAAgB,CACzCqB,WAAW,CAACM,KAAK,EAAEE,KACrB;QACF;MAAC;QAAAvB,OAAA,EAAAA,CAAA,MAEAW,KAAK,CAACa,GAAG,GAAG,CAAC,EACbb,KAAK,CAACX,OAAO,GAAAsB,YAAA;UAAA,OACFV,iBAAiB;UAAA,SAAS,CAAC,oBAAoB;QAAC,IACvDD,KAAK,CAACc,OAAO,GAAG,CAAC,EAAAH,YAAA;UAAA,OAEXR,UAAU;UAAA,SACR,CAAC,kBAAkB,CAAC;UAAA,SACpB;YACLX,MAAM,EAAET,gBAAgB,CAAC0B,eAAe;UAC1C;QAAC,IAAAE,YAAA;UAAA,OAEWN;QAAQ,IAAGL,KAAK,CAACX,OAAO,CAAC,CAAC,MAEvCW,KAAK,CAACe,QAAQ,GAAG,CAAC,KAGrBf,KAAK,CAACgB,SAAS,GAAGf,iBAAiB,EAAEC,WAAW,CACjD,EACAF,KAAK,CAACiB,MAAM,GAAG,CAAC;MAAA;IAGvB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -20,6 +20,7 @@ $table-cell-border-bottom-color: rgba(var(--y-theme-outline-rgb), var(--y-theme-
20
20
  &--flex-height > &__container {
21
21
  flex: 1 1;
22
22
  min-height: 0;
23
+ position: relative;
23
24
  }
24
25
 
25
26
  &__wrapper > table {
@@ -14,7 +14,7 @@ export const pressDataTablePaginationProps = propsFactory({
14
14
  }
15
15
  }, 'YDataTable--pagination');
16
16
  export function createPagination(props) {
17
- const page = useModelDuplex(props, 'page', undefined, value => +(value ?? 0));
17
+ const page = useModelDuplex(props, 'page', undefined, value => +(value ?? 1));
18
18
  const pageSize = useModelDuplex(props, 'pageSize', undefined, value => +(value ?? 10));
19
19
  return {
20
20
  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';\nimport { computed, inject, provide, watchEffect } from 'vue';\n\nimport { useModelDuplex } from '../../../composables/communication';\nimport { clamp } from '../../../util/common';\nimport { propsFactory } from '../../../util/vue-component';\nimport { DataTableProvidePaginationData } from \"../types\";\n\nexport const Y_DATA_TABLE_PAGINATION_KEY: InjectionKey<{\n page: Ref<number>;\n pageSize: Ref<number>;\n startIndex: Ref<number>;\n endIndex: Ref<number>;\n pageLength: Ref<number>;\n total: Ref<number>;\n prevPage: () => void;\n nextPage: () => void;\n setPage: (page: number) => void;\n setPageSize: (size: number) => void;\n}> = Symbol.for('yuyeon.data-table.pagination');\n\nexport const pressDataTablePaginationProps = propsFactory(\n {\n page: {\n type: [Number, String] as PropType<number | string>,\n default: 1,\n },\n pageSize: {\n type: [Number, String] as PropType<number | string>,\n default: 10,\n },\n },\n 'YDataTable--pagination',\n);\n\ntype PaginationProps = {\n page: number | string;\n 'onUpdate:page': ((v: any) => void) | undefined;\n pageSize: number | string;\n 'onUpdate:pageSize': ((v: any) => void) | undefined;\n total?: number | string;\n};\n\nexport function createPagination(props: PaginationProps) {\n const page = useModelDuplex(\n props,\n 'page',\n undefined,\n (value) => +(value ?? 0),\n );\n const pageSize = useModelDuplex(\n props,\n 'pageSize',\n undefined,\n (value) => +(value ?? 10),\n );\n return { page, pageSize };\n}\n\nexport function providePagination(options: {\n page: Ref<number>;\n pageSize: Ref<number>;\n total: Ref<number>;\n}) {\n const { page, pageSize, total } = options;\n const startIndex = computed(() => {\n if (pageSize.value === -1) return 0;\n\n return pageSize.value * (page.value - 1);\n });\n const endIndex = computed(() => {\n if (pageSize.value === -1) return total.value;\n\n return Math.min(total.value, startIndex.value + pageSize.value);\n });\n\n const pageLength = computed(() => {\n if (pageSize.value === -1 || total.value === 0) return 1;\n\n return Math.ceil(total.value / pageSize.value);\n });\n\n watchEffect(() => {\n if (page.value > pageLength.value) {\n page.value = pageLength.value;\n }\n });\n\n function setPageSize(value: number) {\n pageSize.value = value;\n page.value = 1;\n }\n\n function nextPage() {\n page.value = clamp(page.value + 1, 1, pageLength.value);\n }\n\n function prevPage() {\n page.value = clamp(page.value - 1, 1, pageLength.value);\n }\n\n function setPage(value: number) {\n page.value = clamp(value, 1, pageLength.value);\n }\n\n const data: DataTableProvidePaginationData = {\n page,\n pageSize,\n startIndex,\n endIndex,\n pageLength,\n total,\n nextPage,\n prevPage,\n setPage,\n setPageSize,\n };\n\n provide(Y_DATA_TABLE_PAGINATION_KEY, data);\n\n return data;\n}\n\nexport function usePagination() {\n const data = inject(Y_DATA_TABLE_PAGINATION_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_PAGINATION_KEY.description}`);\n }\n return data;\n}\n\nexport function usePaginatedItems <T> (options: {\n items: Ref<readonly (T)[]>\n startIndex: Ref<number>\n endIndex: Ref<number>\n pageSize: Ref<number>\n}) {\n const { items, startIndex, endIndex, pageSize } = options\n const paginatedItems = computed(() => {\n if (pageSize.value <= 0) return items.value\n\n return items.value.slice(startIndex.value, endIndex.value)\n })\n\n return { paginatedItems }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pagination.mjs","names":["computed","inject","provide","watchEffect","useModelDuplex","clamp","propsFactory","Y_DATA_TABLE_PAGINATION_KEY","Symbol","for","pressDataTablePaginationProps","page","type","Number","String","default","pageSize","createPagination","props","undefined","value","providePagination","options","total","startIndex","endIndex","Math","min","pageLength","ceil","setPageSize","nextPage","prevPage","setPage","data","usePagination","Error","description","usePaginatedItems","items","paginatedItems","slice"],"sources":["../../../../src/components/table/composibles/pagination.ts"],"sourcesContent":["import type { InjectionKey, PropType, Ref } from 'vue';\nimport { computed, inject, provide, watchEffect } from 'vue';\n\nimport { useModelDuplex } from '../../../composables/communication';\nimport { clamp } from '../../../util/common';\nimport { propsFactory } from '../../../util/vue-component';\nimport { DataTableProvidePaginationData } from \"../types\";\n\nexport const Y_DATA_TABLE_PAGINATION_KEY: InjectionKey<{\n page: Ref<number>;\n pageSize: Ref<number>;\n startIndex: Ref<number>;\n endIndex: Ref<number>;\n pageLength: Ref<number>;\n total: Ref<number>;\n prevPage: () => void;\n nextPage: () => void;\n setPage: (page: number) => void;\n setPageSize: (size: number) => void;\n}> = Symbol.for('yuyeon.data-table.pagination');\n\nexport const pressDataTablePaginationProps = propsFactory(\n {\n page: {\n type: [Number, String] as PropType<number | string>,\n default: 1,\n },\n pageSize: {\n type: [Number, String] as PropType<number | string>,\n default: 10,\n },\n },\n 'YDataTable--pagination',\n);\n\ntype PaginationProps = {\n page: number | string;\n 'onUpdate:page': ((v: any) => void) | undefined;\n pageSize: number | string;\n 'onUpdate:pageSize': ((v: any) => void) | undefined;\n total?: number | string;\n};\n\nexport function createPagination(props: PaginationProps) {\n const page = useModelDuplex(\n props,\n 'page',\n undefined,\n (value) => +(value ?? 1),\n );\n const pageSize = useModelDuplex(\n props,\n 'pageSize',\n undefined,\n (value) => +(value ?? 10),\n );\n return { page, pageSize };\n}\n\nexport function providePagination(options: {\n page: Ref<number>;\n pageSize: Ref<number>;\n total: Ref<number>;\n}) {\n const { page, pageSize, total } = options;\n const startIndex = computed(() => {\n if (pageSize.value === -1) return 0;\n\n return pageSize.value * (page.value - 1);\n });\n const endIndex = computed(() => {\n if (pageSize.value === -1) return total.value;\n\n return Math.min(total.value, startIndex.value + pageSize.value);\n });\n\n const pageLength = computed(() => {\n if (pageSize.value === -1 || total.value === 0) return 1;\n\n return Math.ceil(total.value / pageSize.value);\n });\n\n watchEffect(() => {\n if (page.value > pageLength.value) {\n page.value = pageLength.value;\n }\n });\n\n function setPageSize(value: number) {\n pageSize.value = value;\n page.value = 1;\n }\n\n function nextPage() {\n page.value = clamp(page.value + 1, 1, pageLength.value);\n }\n\n function prevPage() {\n page.value = clamp(page.value - 1, 1, pageLength.value);\n }\n\n function setPage(value: number) {\n page.value = clamp(value, 1, pageLength.value);\n }\n\n const data: DataTableProvidePaginationData = {\n page,\n pageSize,\n startIndex,\n endIndex,\n pageLength,\n total,\n nextPage,\n prevPage,\n setPage,\n setPageSize,\n };\n\n provide(Y_DATA_TABLE_PAGINATION_KEY, data);\n\n return data;\n}\n\nexport function usePagination() {\n const data = inject(Y_DATA_TABLE_PAGINATION_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_PAGINATION_KEY.description}`);\n }\n return data;\n}\n\nexport function usePaginatedItems <T> (options: {\n items: Ref<readonly (T)[]>\n startIndex: Ref<number>\n endIndex: Ref<number>\n pageSize: Ref<number>\n}) {\n const { items, startIndex, endIndex, pageSize } = options\n const paginatedItems = computed(() => {\n if (pageSize.value <= 0) return items.value\n\n return items.value.slice(startIndex.value, endIndex.value)\n })\n\n return { paginatedItems }\n}\n"],"mappings":"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"}
@@ -1,52 +1,38 @@
1
- import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
- import { computed, defineComponent, mergeProps, nextTick, ref, watch, watchEffect } from 'vue';
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
+ import { computed, defineComponent, nextTick, ref, watch, watchEffect } from 'vue';
3
3
  import { useModelDuplex } from "../../composables/communication.mjs";
4
4
  import { useRender } from "../../composables/component.mjs";
5
5
  import { polyTransitionPropOptions } from "../../composables/transition.mjs";
6
- import { toKebabCase } from "../../util/string.mjs";
7
- import { bindClasses } from "../../util/vue-component.mjs";
8
- import { YLayer } from "../layer/index.mjs";
6
+ import { omit } from "../../util/index.mjs";
7
+ import { bindClasses, chooseProps } from "../../util/vue-component.mjs";
8
+ import { YLayer, pressYLayerProps } from "../layer/index.mjs";
9
+ import { useDelay } from "../layer/active-delay.mjs";
9
10
  import { YPlate } from "../plate/index.mjs";
10
11
  import "./YTooltip.scss";
11
12
  const NAME = 'YTooltip';
12
- const KEBAB_NAME = toKebabCase(NAME);
13
13
  const YTooltipPropOptions = {
14
- modelValue: {
15
- type: Boolean,
16
- default: false
17
- },
18
14
  tooltipClasses: {
19
15
  type: [Array, String, Object]
20
16
  },
21
- disabled: {
22
- type: Boolean,
23
- default: false
24
- },
25
- position: {
26
- type: String,
27
- default: 'default'
28
- },
29
- align: {
30
- type: String,
31
- default: 'center'
32
- },
33
- openOnHover: {
34
- type: Boolean,
35
- default: true
36
- },
37
17
  preventClip: {
38
18
  type: Boolean,
39
19
  default: true
40
20
  }
41
21
  };
42
22
 
43
- /**
44
- * # Component
23
+ /**
24
+ * # Component
45
25
  */
46
26
  export const YTooltip = defineComponent({
47
27
  name: NAME,
48
28
  props: {
49
29
  ...YTooltipPropOptions,
30
+ ...pressYLayerProps({
31
+ coordinateStrategy: 'levitation',
32
+ openOnHover: true,
33
+ align: 'center',
34
+ offset: 8
35
+ }),
50
36
  transition: {
51
37
  ...polyTransitionPropOptions.transition,
52
38
  default: 'fade'
@@ -59,7 +45,7 @@ export const YTooltip = defineComponent({
59
45
  emit,
60
46
  expose
61
47
  } = _ref;
62
- const el$ = ref();
48
+ const layer$ = ref();
63
49
  const base$ = ref();
64
50
  const baseSlot = ref();
65
51
  const baseEl = ref();
@@ -80,44 +66,7 @@ export const YTooltip = defineComponent({
80
66
  if (!(v && props.disabled)) model.value = v;
81
67
  }
82
68
  });
83
- const coordinatesStyles = computed(() => {
84
- const $base = baseEl.value;
85
- if ($base) {
86
- const {
87
- position,
88
- align
89
- } = props;
90
- const $content = contentEl.value;
91
- const rect = $base.getBoundingClientRect();
92
- let top = rect.top;
93
- let left = rect.left + rect.width / 2;
94
- if ($content) {
95
- if (position === 'top' || position === 'bottom') {
96
- if (position === 'top') {
97
- top -= $content.clientHeight;
98
- top -= 8; // Offset
99
- }
100
-
101
- if (position === 'bottom') {
102
- top += rect.height;
103
- top += 8; // Offset
104
- }
105
-
106
- if (align === 'center') {
107
- left -= $content.clientWidth / 2;
108
- } else if (align === 'end') {
109
- left = rect.right;
110
- left -= $content.clientWidth;
111
- }
112
- } else if (position === 'left' || position === 'right') {}
113
- }
114
- return {
115
- top: `${top}px`,
116
- left: `${left}px`
117
- };
118
- }
119
- return {};
120
- });
69
+ const hovered = computed(() => !!layer$.value?.hovered);
121
70
  const baseFromSlotEl = computed(() => {
122
71
  return baseSlot.value?.[0]?.el;
123
72
  });
@@ -134,21 +83,36 @@ export const YTooltip = defineComponent({
134
83
  watch(active, neo => {
135
84
  if (neo) {
136
85
  nextTick(() => {
137
- const $content = el$.value?.content$;
86
+ const $content = layer$.value?.content$;
138
87
  contentEl.value = $content;
139
88
  });
140
89
  }
141
90
  });
91
+ const {
92
+ startOpenDelay,
93
+ startCloseDelay
94
+ } = useDelay(props, changeActive => {
95
+ if (!changeActive && props.openOnHover && !hovered.value) {
96
+ active.value = false;
97
+ } else if (changeActive) {
98
+ active.value = true;
99
+ }
100
+ });
142
101
  function onMouseenter(e) {
143
102
  if (props.openOnHover) {
144
- active.value = true;
103
+ startOpenDelay();
145
104
  }
146
105
  }
147
106
  function onMouseleave(e) {
148
107
  if (props.openOnHover) {
149
- active.value = false;
108
+ startCloseDelay();
150
109
  }
151
110
  }
111
+ watch(hovered, value => {
112
+ if (!value) {
113
+ startCloseDelay();
114
+ }
115
+ });
152
116
  function bindHover(el) {
153
117
  el.addEventListener('mouseenter', onMouseenter);
154
118
  el.addEventListener('mouseleave', onMouseleave);
@@ -157,7 +121,7 @@ export const YTooltip = defineComponent({
157
121
  el.removeEventListener('mouseenter', onMouseenter);
158
122
  el.removeEventListener('mouseleave', onMouseleave);
159
123
  }
160
- watch(baseEl, (neo, old) => {
124
+ watch(() => layer$.value?.baseEl, (neo, old) => {
161
125
  if (neo) {
162
126
  bindHover(neo);
163
127
  } else if (old) {
@@ -165,25 +129,15 @@ export const YTooltip = defineComponent({
165
129
  }
166
130
  });
167
131
  useRender(() => {
168
- const slotBase = slots.base?.({
169
- active: active.value,
170
- props: mergeProps({
171
- ref: base$
172
- })
173
- });
174
- baseSlot.value = slotBase;
175
- return _createVNode(_Fragment, null, [slotBase, _createVNode(YLayer, {
176
- "modelValue": active.value,
177
- "onUpdate:modelValue": $event => active.value = $event,
178
- "ref": el$,
132
+ return _createVNode(_Fragment, null, [_createVNode(YLayer, _mergeProps({
133
+ "ref": layer$
134
+ }, omit(chooseProps(props, YLayer.props), ['scrim']), {
179
135
  "classes": classes.value,
180
136
  "scrim": false,
181
- "disabled": props.disabled,
182
- "content-styles": {
183
- ...coordinatesStyles.value
184
- },
185
- "transition": props.transition
186
- }, {
137
+ "transition": props.transition,
138
+ "modelValue": active.value,
139
+ "onUpdate:modelValue": $event => active.value = $event
140
+ }), {
187
141
  default: function () {
188
142
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
189
143
  args[_key] = arguments[_key];
@@ -191,14 +145,19 @@ export const YTooltip = defineComponent({
191
145
  return _createVNode(_Fragment, null, [_createVNode(YPlate, null, null), _createVNode("div", {
192
146
  "class": "y-tooltip__content"
193
147
  }, [slots.default?.(...args) ?? ''])]);
148
+ },
149
+ base: function () {
150
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
151
+ args[_key2] = arguments[_key2];
152
+ }
153
+ return slots.base?.(...args);
194
154
  }
195
155
  })]);
196
156
  });
197
157
  return {
198
158
  base$,
199
- el$,
159
+ el$: layer$,
200
160
  baseEl,
201
- coordinatesStyles,
202
161
  baseSlot,
203
162
  active
204
163
  };
@@ -1 +1 @@
1
- {"version":3,"file":"YTooltip.mjs","names":["computed","defineComponent","mergeProps","nextTick","ref","watch","watchEffect","useModelDuplex","useRender","polyTransitionPropOptions","toKebabCase","bindClasses","YLayer","YPlate","NAME","KEBAB_NAME","YTooltipPropOptions","modelValue","type","Boolean","default","tooltipClasses","Array","String","Object","disabled","position","align","openOnHover","preventClip","YTooltip","name","props","transition","emits","setup","_ref","slots","emit","expose","el$","base$","baseSlot","baseEl","contentEl","classes","boundClasses","model","active","get","value","set","v","coordinatesStyles","$base","$content","rect","getBoundingClientRect","top","left","width","clientHeight","height","clientWidth","right","baseFromSlotEl","el","nodeType","base","$el","neo","content$","onMouseenter","e","onMouseleave","bindHover","addEventListener","unbindHover","removeEventListener","old","slotBase","_createVNode","_Fragment","$event","_len","arguments","length","args","_key"],"sources":["../../../src/components/tooltip/YTooltip.tsx"],"sourcesContent":["import type { CSSProperties, PropType } from 'vue';\r\nimport {\r\n computed,\r\n defineComponent,\r\n mergeProps,\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 { polyTransitionPropOptions } from '../../composables/transition';\r\nimport { toKebabCase } from '../../util/string';\r\nimport { bindClasses } from '../../util/vue-component';\r\nimport { YLayer } from '../layer';\r\nimport { YPlate } from '../plate';\r\n\r\nimport './YTooltip.scss';\r\n\r\nconst NAME = 'YTooltip';\r\nconst KEBAB_NAME = toKebabCase(NAME);\r\n\r\nconst YTooltipPropOptions = {\r\n modelValue: {\r\n type: Boolean as PropType<boolean>,\r\n default: false,\r\n },\r\n tooltipClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n disabled: {\r\n type: Boolean as PropType<boolean>,\r\n default: false,\r\n },\r\n position: {\r\n type: String as PropType<'default' | 'top' | 'bottom' | 'left' | 'right'>,\r\n default: 'default',\r\n },\r\n align: {\r\n type: String as PropType<'center' | 'start' | 'end'>,\r\n default: 'center',\r\n },\r\n openOnHover: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\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 transition: {\r\n ...polyTransitionPropOptions.transition,\r\n default: 'fade',\r\n },\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { slots, emit, expose }) {\r\n const el$ = ref<typeof YLayer>();\r\n const base$ = ref();\r\n const baseSlot = ref();\r\n const baseEl = ref<HTMLElement>();\r\n const contentEl = ref<HTMLElement>();\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 coordinatesStyles = computed<CSSProperties>(() => {\r\n const $base = baseEl.value;\r\n if ($base) {\r\n const { position, align } = props;\r\n const $content = contentEl.value;\r\n const rect = $base.getBoundingClientRect();\r\n\r\n let top = rect.top;\r\n let left = rect.left + rect.width / 2;\r\n\r\n if ($content) {\r\n if (position === 'top' || position === 'bottom') {\r\n if (position === 'top') {\r\n top -= $content.clientHeight;\r\n top -= 8; // Offset\r\n }\r\n\r\n if (position === 'bottom') {\r\n top += rect.height;\r\n top += 8; // Offset\r\n }\r\n\r\n if (align === 'center') {\r\n left -= $content.clientWidth / 2;\r\n } else if (align === 'end') {\r\n left = rect.right;\r\n left -= $content.clientWidth;\r\n }\r\n } else if (position === 'left' || position === 'right') {\r\n\r\n }\r\n }\r\n\r\n return {\r\n top: `${top}px`,\r\n left: `${left}px`,\r\n };\r\n }\r\n return {};\r\n });\r\n\r\n const baseFromSlotEl = computed(() => {\r\n return baseSlot.value?.[0]?.el;\r\n });\r\n\r\n watchEffect(() => {\r\n if (!base$.value) {\r\n if (baseFromSlotEl.value?.nodeType !== 3) {\r\n baseEl.value = baseFromSlotEl.value;\r\n }\r\n return;\r\n }\r\n const base = base$.value;\r\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\r\n });\r\n\r\n watch(active, (neo) => {\r\n if (neo) {\r\n nextTick(() => {\r\n const $content = el$.value?.content$;\r\n contentEl.value = $content;\r\n });\r\n }\r\n });\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n active.value = true;\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n active.value = false;\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(baseEl, (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 useRender(() => {\r\n const slotBase = slots.base?.({\r\n active: active.value,\r\n props: mergeProps({\r\n ref: base$,\r\n }),\r\n });\r\n baseSlot.value = slotBase;\r\n return (\r\n <>\r\n {slotBase}\r\n <YLayer\r\n v-model={active.value}\r\n ref={el$}\r\n classes={classes.value}\r\n scrim={false}\r\n disabled={props.disabled}\r\n content-styles={{ ...coordinatesStyles.value }}\r\n transition={props.transition}\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 }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n base$,\r\n el$,\r\n baseEl,\r\n coordinatesStyles,\r\n baseSlot,\r\n active,\r\n };\r\n },\r\n});\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YTooltip.mjs","names":["computed","defineComponent","nextTick","ref","watch","watchEffect","useModelDuplex","useRender","polyTransitionPropOptions","omit","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","YPlate","NAME","YTooltipPropOptions","tooltipClasses","type","Array","String","Object","preventClip","Boolean","default","YTooltip","name","props","coordinateStrategy","openOnHover","align","offset","transition","emits","setup","_ref","slots","emit","expose","layer$","base$","baseSlot","baseEl","contentEl","classes","boundClasses","model","active","get","value","set","v","disabled","hovered","baseFromSlotEl","el","nodeType","base","$el","neo","$content","content$","startOpenDelay","startCloseDelay","changeActive","onMouseenter","e","onMouseleave","bindHover","addEventListener","unbindHover","removeEventListener","old","_createVNode","_Fragment","_mergeProps","$event","_len","arguments","length","args","_key","_len2","_key2","el$"],"sources":["../../../src/components/tooltip/YTooltip.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport {\n computed,\n defineComponent,\n nextTick,\n ref,\n watch,\n watchEffect,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { polyTransitionPropOptions } from '../../composables/transition';\nimport { omit } from '../../util';\nimport { bindClasses, chooseProps } from '../../util/vue-component';\nimport { YLayer, pressYLayerProps } from '../layer';\nimport { useDelay } from '../layer/active-delay';\nimport { YPlate } from '../plate';\n\nimport './YTooltip.scss';\n\nconst NAME = 'YTooltip';\n\nconst YTooltipPropOptions = {\n tooltipClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n preventClip: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n};\n\n/**\n * # Component\n */\nexport const YTooltip = defineComponent({\n name: NAME,\n props: {\n ...YTooltipPropOptions,\n ...pressYLayerProps({\n coordinateStrategy: 'levitation',\n openOnHover: true,\n align: 'center',\n offset: 8,\n }),\n transition: {\n ...polyTransitionPropOptions.transition,\n default: 'fade',\n },\n },\n emits: ['update:modelValue'],\n setup(props, { slots, emit, expose }) {\n const layer$ = ref<typeof YLayer>();\n const base$ = ref();\n const baseSlot = ref();\n const baseEl = ref<HTMLElement>();\n const contentEl = ref<HTMLElement>();\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.tooltipClasses);\n return {\n ...boundClasses,\n 'y-tooltip': true,\n };\n });\n\n const model = useModelDuplex(props);\n\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n\n const hovered = computed(() => !!layer$.value?.hovered);\n\n const baseFromSlotEl = computed(() => {\n return baseSlot.value?.[0]?.el;\n });\n\n watchEffect(() => {\n if (!base$.value) {\n if (baseFromSlotEl.value?.nodeType !== 3) {\n baseEl.value = baseFromSlotEl.value;\n }\n return;\n }\n const base = base$.value;\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\n });\n\n watch(active, (neo) => {\n if (neo) {\n nextTick(() => {\n const $content = layer$.value?.content$;\n contentEl.value = $content;\n });\n }\n });\n\n const { startOpenDelay, startCloseDelay } = useDelay(\n props,\n (changeActive) => {\n if (!changeActive && props.openOnHover && !hovered.value) {\n active.value = false;\n } else if (changeActive) {\n active.value = true;\n }\n },\n );\n\n function onMouseenter(e: MouseEvent) {\n if (props.openOnHover) {\n startOpenDelay();\n }\n }\n\n function onMouseleave(e: MouseEvent) {\n if (props.openOnHover) {\n startCloseDelay();\n }\n }\n\n watch(hovered, (value) => {\n if (!value) {\n startCloseDelay();\n }\n });\n\n function bindHover(el: HTMLElement) {\n el.addEventListener('mouseenter', onMouseenter);\n el.addEventListener('mouseleave', onMouseleave);\n }\n\n function unbindHover(el: HTMLElement) {\n el.removeEventListener('mouseenter', onMouseenter);\n el.removeEventListener('mouseleave', onMouseleave);\n }\n\n watch(\n () => layer$.value?.baseEl,\n (neo, old) => {\n if (neo) {\n bindHover(neo);\n } else if (old) {\n unbindHover(old);\n }\n },\n );\n\n useRender(() => {\n return (\n <>\n <YLayer\n ref={layer$}\n {...omit(chooseProps(props, YLayer.props), ['scrim'])}\n classes={classes.value}\n scrim={false}\n transition={props.transition}\n v-model={active.value}\n >\n {{\n default: (...args: any) => {\n return (\n <>\n <YPlate></YPlate>\n <div class=\"y-tooltip__content\">\n {slots.default?.(...args) ?? ''}\n </div>\n </>\n );\n },\n base: (...args: any[]) => slots.base?.(...args),\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n base$,\n el$: layer$,\n baseEl,\n baseSlot,\n active,\n };\n },\n});\n"],"mappings":";AACA,SACEA,QAAQ,EACRC,eAAe,EACfC,QAAQ,EACRC,GAAG,EACHC,KAAK,EACLC,WAAW,QACN,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,yBAAyB;AAAA,SACzBC,IAAI;AAAA,SACJC,WAAW,EAAEC,WAAW;AAAA,SACxBC,MAAM,EAAEC,gBAAgB;AAAA,SACxBC,QAAQ;AAAA,SACRC,MAAM;AAEf;AAEA,MAAMC,IAAI,GAAG,UAAU;AAEvB,MAAMC,mBAAmB,GAAG;EAC1BC,cAAc,EAAE;IACdC,IAAI,EAAE,CAACC,KAAK,EAAEC,MAAM,EAAEC,MAAM;EAG9B,CAAC;EACDC,WAAW,EAAE;IACXJ,IAAI,EAAEK,OAA4B;IAClCC,OAAO,EAAE;EACX;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAGzB,eAAe,CAAC;EACtC0B,IAAI,EAAEX,IAAI;EACVY,KAAK,EAAE;IACL,GAAGX,mBAAmB;IACtB,GAAGJ,gBAAgB,CAAC;MAClBgB,kBAAkB,EAAE,YAAY;MAChCC,WAAW,EAAE,IAAI;MACjBC,KAAK,EAAE,QAAQ;MACfC,MAAM,EAAE;IACV,CAAC,CAAC;IACFC,UAAU,EAAE;MACV,GAAGzB,yBAAyB,CAACyB,UAAU;MACvCR,OAAO,EAAE;IACX;EACF,CAAC;EACDS,KAAK,EAAE,CAAC,mBAAmB,CAAC;EAC5BC,KAAKA,CAACP,KAAK,EAAAQ,IAAA,EAA2B;IAAA,IAAzB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAO,CAAC,GAAAH,IAAA;IAClC,MAAMI,MAAM,GAAGrC,GAAG,CAAgB,CAAC;IACnC,MAAMsC,KAAK,GAAGtC,GAAG,CAAC,CAAC;IACnB,MAAMuC,QAAQ,GAAGvC,GAAG,CAAC,CAAC;IACtB,MAAMwC,MAAM,GAAGxC,GAAG,CAAc,CAAC;IACjC,MAAMyC,SAAS,GAAGzC,GAAG,CAAc,CAAC;IAEpC,MAAM0C,OAAO,GAAG7C,QAAQ,CAAC,MAAM;MAC7B,MAAM8C,YAAY,GAAGpC,WAAW,CAACkB,KAAK,CAACV,cAAc,CAAC;MACtD,OAAO;QACL,GAAG4B,YAAY;QACf,WAAW,EAAE;MACf,CAAC;IACH,CAAC,CAAC;IAEF,MAAMC,KAAK,GAAGzC,cAAc,CAACsB,KAAK,CAAC;IAEnC,MAAMoB,MAAM,GAAGhD,QAAQ,CAAC;MACtBiD,GAAG,EAAEA,CAAA,KAAe;QAClB,OAAO,CAAC,CAACF,KAAK,CAACG,KAAK;MACtB,CAAC;MACDC,GAAG,EAAGC,CAAU,IAAK;QACnB,IAAI,EAAEA,CAAC,IAAIxB,KAAK,CAACyB,QAAQ,CAAC,EAAEN,KAAK,CAACG,KAAK,GAAGE,CAAC;MAC7C;IACF,CAAC,CAAC;IAEF,MAAME,OAAO,GAAGtD,QAAQ,CAAC,MAAM,CAAC,CAACwC,MAAM,CAACU,KAAK,EAAEI,OAAO,CAAC;IAEvD,MAAMC,cAAc,GAAGvD,QAAQ,CAAC,MAAM;MACpC,OAAO0C,QAAQ,CAACQ,KAAK,GAAG,CAAC,CAAC,EAAEM,EAAE;IAChC,CAAC,CAAC;IAEFnD,WAAW,CAAC,MAAM;MAChB,IAAI,CAACoC,KAAK,CAACS,KAAK,EAAE;QAChB,IAAIK,cAAc,CAACL,KAAK,EAAEO,QAAQ,KAAK,CAAC,EAAE;UACxCd,MAAM,CAACO,KAAK,GAAGK,cAAc,CAACL,KAAK;QACrC;QACA;MACF;MACA,MAAMQ,IAAI,GAAGjB,KAAK,CAACS,KAAK;MACxBP,MAAM,CAACO,KAAK,GAAGT,KAAK,CAACS,KAAK,EAAES,GAAG,GAAGlB,KAAK,CAACS,KAAK,EAAES,GAAG,GAAGD,IAAI;IAC3D,CAAC,CAAC;IAEFtD,KAAK,CAAC4C,MAAM,EAAGY,GAAG,IAAK;MACrB,IAAIA,GAAG,EAAE;QACP1D,QAAQ,CAAC,MAAM;UACb,MAAM2D,QAAQ,GAAGrB,MAAM,CAACU,KAAK,EAAEY,QAAQ;UACvClB,SAAS,CAACM,KAAK,GAAGW,QAAQ;QAC5B,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,MAAM;MAAEE,cAAc;MAAEC;IAAgB,CAAC,GAAGlD,QAAQ,CAClDc,KAAK,EACJqC,YAAY,IAAK;MAChB,IAAI,CAACA,YAAY,IAAIrC,KAAK,CAACE,WAAW,IAAI,CAACwB,OAAO,CAACJ,KAAK,EAAE;QACxDF,MAAM,CAACE,KAAK,GAAG,KAAK;MACtB,CAAC,MAAM,IAAIe,YAAY,EAAE;QACvBjB,MAAM,CAACE,KAAK,GAAG,IAAI;MACrB;IACF,CACF,CAAC;IAED,SAASgB,YAAYA,CAACC,CAAa,EAAE;MACnC,IAAIvC,KAAK,CAACE,WAAW,EAAE;QACrBiC,cAAc,CAAC,CAAC;MAClB;IACF;IAEA,SAASK,YAAYA,CAACD,CAAa,EAAE;MACnC,IAAIvC,KAAK,CAACE,WAAW,EAAE;QACrBkC,eAAe,CAAC,CAAC;MACnB;IACF;IAEA5D,KAAK,CAACkD,OAAO,EAAGJ,KAAK,IAAK;MACxB,IAAI,CAACA,KAAK,EAAE;QACVc,eAAe,CAAC,CAAC;MACnB;IACF,CAAC,CAAC;IAEF,SAASK,SAASA,CAACb,EAAe,EAAE;MAClCA,EAAE,CAACc,gBAAgB,CAAC,YAAY,EAAEJ,YAAY,CAAC;MAC/CV,EAAE,CAACc,gBAAgB,CAAC,YAAY,EAAEF,YAAY,CAAC;IACjD;IAEA,SAASG,WAAWA,CAACf,EAAe,EAAE;MACpCA,EAAE,CAACgB,mBAAmB,CAAC,YAAY,EAAEN,YAAY,CAAC;MAClDV,EAAE,CAACgB,mBAAmB,CAAC,YAAY,EAAEJ,YAAY,CAAC;IACpD;IAEAhE,KAAK,CACH,MAAMoC,MAAM,CAACU,KAAK,EAAEP,MAAM,EAC1B,CAACiB,GAAG,EAAEa,GAAG,KAAK;MACZ,IAAIb,GAAG,EAAE;QACPS,SAAS,CAACT,GAAG,CAAC;MAChB,CAAC,MAAM,IAAIa,GAAG,EAAE;QACdF,WAAW,CAACE,GAAG,CAAC;MAClB;IACF,CACF,CAAC;IAEDlE,SAAS,CAAC,MAAM;MACd,OAAAmE,YAAA,CAAAC,SAAA,SAAAD,YAAA,CAAA9D,MAAA,EAAAgE,WAAA;QAAA,OAGWpC;MAAM,GACP/B,IAAI,CAACE,WAAW,CAACiB,KAAK,EAAEhB,MAAM,CAACgB,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAAA,WAC5CiB,OAAO,CAACK,KAAK;QAAA,SACf,KAAK;QAAA,cACAtB,KAAK,CAACK,UAAU;QAAA,cACnBe,MAAM,CAACE,KAAK;QAAA,uBAAA2B,MAAA,IAAZ7B,MAAM,CAACE,KAAK,GAAA2B;MAAA;QAGnBpD,OAAO,EAAE,SAAAA,CAAA,EAAkB;UAAA,SAAAqD,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAdC,IAAI,OAAA7D,KAAA,CAAA0D,IAAA,GAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;YAAJD,IAAI,CAAAC,IAAA,IAAAH,SAAA,CAAAG,IAAA;UAAA;UACf,OAAAR,YAAA,CAAAC,SAAA,SAAAD,YAAA,CAAA3D,MAAA,eAAA2D,YAAA;YAAA,SAGe;UAAoB,IAC5BrC,KAAK,CAACZ,OAAO,GAAG,GAAGwD,IAAI,CAAC,IAAI,EAAE;QAIvC,CAAC;QACDvB,IAAI,EAAE,SAAAA,CAAA;UAAA,SAAAyB,KAAA,GAAAJ,SAAA,CAAAC,MAAA,EAAIC,IAAI,OAAA7D,KAAA,CAAA+D,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;YAAJH,IAAI,CAAAG,KAAA,IAAAL,SAAA,CAAAK,KAAA;UAAA;UAAA,OAAY/C,KAAK,CAACqB,IAAI,GAAG,GAAGuB,IAAI,CAAC;QAAA;MAAA;IAKzD,CAAC,CAAC;IAEF,OAAO;MACLxC,KAAK;MACL4C,GAAG,EAAE7C,MAAM;MACXG,MAAM;MACND,QAAQ;MACRM;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
package/lib/util/dom.mjs CHANGED
@@ -17,4 +17,7 @@ export function hasElementMouseEvent(mouseEvent, element, include) {
17
17
  elements.push(element);
18
18
  return !elements.some(el => el?.contains(mouseEvent.target));
19
19
  }
20
+ export function isOverflow(el) {
21
+ return el.offsetWidth < el.scrollWidth;
22
+ }
20
23
  //# sourceMappingURL=dom.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.mjs","names":["documentRoot","domNode","root","getRootNode","document","composed","hasElementMouseEvent","mouseEvent","element","include","ShadowRoot","host","target","elements","push","some","el","contains"],"sources":["../../src/util/dom.ts"],"sourcesContent":["export function documentRoot(domNode: Node): null | HTMLDocument | ShadowRoot {\r\n const root = domNode.getRootNode();\r\n if (root !== document && root.getRootNode({ composed: true }) !== document)\r\n return null;\r\n return root as HTMLDocument | ShadowRoot;\r\n}\r\n\r\nexport function hasElementMouseEvent(\r\n mouseEvent: Event,\r\n element: HTMLElement,\r\n include?: HTMLElement[],\r\n): boolean {\r\n if (!mouseEvent) {\r\n return false;\r\n }\r\n const root = documentRoot(element);\r\n if (\r\n typeof ShadowRoot !== 'undefined' &&\r\n root instanceof ShadowRoot &&\r\n root.host === mouseEvent.target\r\n ) {\r\n return false;\r\n }\r\n const elements = include ?? [];\r\n elements.push(element);\r\n return !elements.some((el) => el?.contains(mouseEvent.target as Node));\r\n}\r\n"],"mappings":"AAAA,OAAO,SAASA,YAAYA,CAACC,OAAa,EAAoC;EAC5E,MAAMC,IAAI,GAAGD,OAAO,CAACE,WAAW,CAAC,CAAC;EAClC,IAAID,IAAI,KAAKE,QAAQ,IAAIF,IAAI,CAACC,WAAW,CAAC;IAAEE,QAAQ,EAAE;EAAK,CAAC,CAAC,KAAKD,QAAQ,EACxE,OAAO,IAAI;EACb,OAAOF,IAAI;AACb;AAEA,OAAO,SAASI,oBAAoBA,CAClCC,UAAiB,EACjBC,OAAoB,EACpBC,OAAuB,EACd;EACT,IAAI,CAACF,UAAU,EAAE;IACf,OAAO,KAAK;EACd;EACA,MAAML,IAAI,GAAGF,YAAY,CAACQ,OAAO,CAAC;EAClC,IACE,OAAOE,UAAU,KAAK,WAAW,IACjCR,IAAI,YAAYQ,UAAU,IAC1BR,IAAI,CAACS,IAAI,KAAKJ,UAAU,CAACK,MAAM,EAC/B;IACA,OAAO,KAAK;EACd;EACA,MAAMC,QAAQ,GAAGJ,OAAO,IAAI,EAAE;EAC9BI,QAAQ,CAACC,IAAI,CAACN,OAAO,CAAC;EACtB,OAAO,CAACK,QAAQ,CAACE,IAAI,CAAEC,EAAE,IAAKA,EAAE,EAAEC,QAAQ,CAACV,UAAU,CAACK,MAAc,CAAC,CAAC;AACxE"}
1
+ {"version":3,"file":"dom.mjs","names":["documentRoot","domNode","root","getRootNode","document","composed","hasElementMouseEvent","mouseEvent","element","include","ShadowRoot","host","target","elements","push","some","el","contains","isOverflow","offsetWidth","scrollWidth"],"sources":["../../src/util/dom.ts"],"sourcesContent":["export function documentRoot(domNode: Node): null | HTMLDocument | ShadowRoot {\r\n const root = domNode.getRootNode();\r\n if (root !== document && root.getRootNode({ composed: true }) !== document)\r\n return null;\r\n return root as HTMLDocument | ShadowRoot;\r\n}\r\n\r\nexport function hasElementMouseEvent(\r\n mouseEvent: Event,\r\n element: HTMLElement,\r\n include?: HTMLElement[],\r\n): boolean {\r\n if (!mouseEvent) {\r\n return false;\r\n }\r\n const root = documentRoot(element);\r\n if (\r\n typeof ShadowRoot !== 'undefined' &&\r\n root instanceof ShadowRoot &&\r\n root.host === mouseEvent.target\r\n ) {\r\n return false;\r\n }\r\n const elements = include ?? [];\r\n elements.push(element);\r\n return !elements.some((el) => el?.contains(mouseEvent.target as Node));\r\n}\r\n\r\nexport function isOverflow(el: HTMLElement) {\r\n return el.offsetWidth < el.scrollWidth;\r\n}\r\n"],"mappings":"AAAA,OAAO,SAASA,YAAYA,CAACC,OAAa,EAAoC;EAC5E,MAAMC,IAAI,GAAGD,OAAO,CAACE,WAAW,CAAC,CAAC;EAClC,IAAID,IAAI,KAAKE,QAAQ,IAAIF,IAAI,CAACC,WAAW,CAAC;IAAEE,QAAQ,EAAE;EAAK,CAAC,CAAC,KAAKD,QAAQ,EACxE,OAAO,IAAI;EACb,OAAOF,IAAI;AACb;AAEA,OAAO,SAASI,oBAAoBA,CAClCC,UAAiB,EACjBC,OAAoB,EACpBC,OAAuB,EACd;EACT,IAAI,CAACF,UAAU,EAAE;IACf,OAAO,KAAK;EACd;EACA,MAAML,IAAI,GAAGF,YAAY,CAACQ,OAAO,CAAC;EAClC,IACE,OAAOE,UAAU,KAAK,WAAW,IACjCR,IAAI,YAAYQ,UAAU,IAC1BR,IAAI,CAACS,IAAI,KAAKJ,UAAU,CAACK,MAAM,EAC/B;IACA,OAAO,KAAK;EACd;EACA,MAAMC,QAAQ,GAAGJ,OAAO,IAAI,EAAE;EAC9BI,QAAQ,CAACC,IAAI,CAACN,OAAO,CAAC;EACtB,OAAO,CAACK,QAAQ,CAACE,IAAI,CAAEC,EAAE,IAAKA,EAAE,EAAEC,QAAQ,CAACV,UAAU,CAACK,MAAc,CAAC,CAAC;AACxE;AAEA,OAAO,SAASM,UAAUA,CAACF,EAAe,EAAE;EAC1C,OAAOA,EAAE,CAACG,WAAW,GAAGH,EAAE,CAACI,WAAW;AACxC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuyeon",
3
- "version": "0.0.38-rc9",
3
+ "version": "0.0.39",
4
4
  "keywords": [
5
5
  "UI Library",
6
6
  "Vue"
@@ -116,6 +116,7 @@ export declare const YDialog: import("vue").DefineComponent<{
116
116
  onAfterUpdate: () => void;
117
117
  scrim$: import("vue").Ref<HTMLElement | undefined>;
118
118
  content$: import("vue").Ref<HTMLElement | undefined>;
119
+ base$: import("vue").Ref<any>;
119
120
  baseEl: import("vue").Ref<HTMLElement | undefined>;
120
121
  polyTransitionBindProps: import("vue").ComputedRef<{
121
122
  is: any;
@@ -0,0 +1,15 @@
1
+ import type { PropType } from 'vue';
2
+ export declare const pressYDividerPropsOptions: <Defaults extends {
3
+ vertical?: unknown;
4
+ } = {}>(defaults?: Defaults | undefined) => {
5
+ vertical: unknown extends Defaults["vertical"] ? PropType<boolean> : {
6
+ type: PropType<unknown extends Defaults["vertical"] ? boolean : boolean | Defaults["vertical"]>;
7
+ default: unknown extends Defaults["vertical"] ? boolean : boolean | Defaults["vertical"];
8
+ };
9
+ };
10
+ export declare const YDivider: import("vue").DefineComponent<{
11
+ vertical: PropType<boolean>;
12
+ }, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
13
+ vertical: PropType<boolean>;
14
+ }>>, {}, {}>;
15
+ export type YDivider = InstanceType<typeof YDivider>;
@@ -0,0 +1 @@
1
+ export * from './YDivider';
@@ -76,8 +76,8 @@ export declare const pressYDropdownPropsOptions: <Defaults extends {
76
76
  type: PropType<"end" | "start" | "center">;
77
77
  default: string;
78
78
  }, "default" | "type"> & {
79
- type: PropType<unknown extends Defaults["align"] ? "end" | "start" | "center" : Defaults["align"] | NonNullable<"end" | "start" | "center">>;
80
- default: unknown extends Defaults["align"] ? "end" | "start" | "center" : Defaults["align"] | NonNullable<"end" | "start" | "center">;
79
+ type: PropType<unknown extends Defaults["align"] ? "end" | "start" | "center" : NonNullable<"end" | "start" | "center"> | Defaults["align"]>;
80
+ default: unknown extends Defaults["align"] ? "end" | "start" | "center" : NonNullable<"end" | "start" | "center"> | Defaults["align"];
81
81
  };
82
82
  origin: unknown extends Defaults["origin"] ? {
83
83
  type: StringConstructor;
@@ -94,8 +94,8 @@ export declare const pressYDropdownPropsOptions: <Defaults extends {
94
94
  } : Omit<{
95
95
  type: (ArrayConstructor | StringConstructor | NumberConstructor)[];
96
96
  }, "default" | "type"> & {
97
- type: PropType<unknown extends Defaults["offset"] ? string | number | unknown[] : Defaults["offset"] | NonNullable<string | number | unknown[]>>;
98
- default: unknown extends Defaults["offset"] ? string | number | unknown[] : Defaults["offset"] | NonNullable<string | number | unknown[]>;
97
+ type: PropType<unknown extends Defaults["offset"] ? string | number | unknown[] : NonNullable<string | number | unknown[]> | Defaults["offset"]>;
98
+ default: unknown extends Defaults["offset"] ? string | number | unknown[] : NonNullable<string | number | unknown[]> | Defaults["offset"];
99
99
  };
100
100
  viewportMargin: unknown extends Defaults["viewportMargin"] ? {
101
101
  type: NumberConstructor;
@@ -68,12 +68,12 @@ export declare const pressYFieldInputPropsOptions: <Defaults extends {
68
68
  default: unknown extends Defaults["label"] ? string : string | Defaults["label"];
69
69
  };
70
70
  modelValue: unknown extends Defaults["modelValue"] ? {
71
- type: PropType<string | number>;
71
+ type: PropType<any>;
72
72
  } : Omit<{
73
- type: PropType<string | number>;
73
+ type: PropType<any>;
74
74
  }, "default" | "type"> & {
75
- type: PropType<unknown extends Defaults["modelValue"] ? string | number : NonNullable<string | number> | Defaults["modelValue"]>;
76
- default: unknown extends Defaults["modelValue"] ? string | number : NonNullable<string | number> | Defaults["modelValue"];
75
+ type: PropType<unknown extends Defaults["modelValue"] ? any : any>;
76
+ default: unknown extends Defaults["modelValue"] ? any : any;
77
77
  };
78
78
  autoSelect: unknown extends Defaults["autoSelect"] ? {
79
79
  type: PropType<boolean>;
@@ -212,7 +212,7 @@ export declare const YFieldInput: import("vue").DefineComponent<{
212
212
  };
213
213
  label: PropType<string>;
214
214
  modelValue: {
215
- type: PropType<string | number>;
215
+ type: PropType<any>;
216
216
  };
217
217
  autoSelect: {
218
218
  type: PropType<boolean>;
@@ -272,7 +272,7 @@ export declare const YFieldInput: import("vue").DefineComponent<{
272
272
  };
273
273
  label: PropType<string>;
274
274
  modelValue: {
275
- type: PropType<string | number>;
275
+ type: PropType<any>;
276
276
  };
277
277
  autoSelect: {
278
278
  type: PropType<boolean>;