yuyeon 0.0.42-rc30 → 0.0.42-rc31

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.
@@ -91,14 +91,19 @@ export const YSelect = defineComponent({
91
91
  return props.multiple ? emitValue : emitValue[0] ?? null;
92
92
  });
93
93
  const selections = computed(() => {
94
- return model.value.map(v => {
95
- return items.value.find(item => {
94
+ const ret = [];
95
+ for (const v of model.value) {
96
+ const found = items.value.find(item => {
96
97
  return props.valueEquals(item.value, v.value);
97
98
  });
98
- });
99
+ if (found !== undefined) {
100
+ ret.push(found);
101
+ }
102
+ }
103
+ return ret;
99
104
  });
100
105
  const selected = computed(() => {
101
- return selections.value.map(selection => selection.props.value);
106
+ return selections.value.map(selection => selection?.props?.value);
102
107
  });
103
108
  const extraMenuProps = computed(() => {
104
109
  return {
@@ -205,7 +210,8 @@ export const YSelect = defineComponent({
205
210
  "onBlur": onBlur,
206
211
  "readonly": true,
207
212
  "class": ['y-select', {
208
- 'y-select--opened': opened.value
213
+ 'y-select--opened': opened.value,
214
+ 'y-select--selected': selected.value.length > 0
209
215
  }]
210
216
  }, attrs, {
211
217
  "focused": focused.value
@@ -1 +1 @@
1
- {"version":3,"file":"YSelect.mjs","names":["shallowRef","nextTick","computed","defineComponent","mergeProps","onMounted","ref","useModelDuplex","useRender","pressCoordinateProps","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIcon","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","menuProps","Object","pressYSelectPropsOptions","maxHeight","Number","String","dropdownIcon","Array","openDelay","closeDelay","position","YSelect","name","inheritAttrs","props","emits","value","click:item","item","e","slots","setup","_ref","attrs","expose","fieldInputRef","menuRef","listRef","focused","items","toRefineItems","toEmitItems","model","v","emitValue","selections","map","find","selected","selection","extraMenuProps","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","onAfterLeave","focus","closeCondition","target","layer$","content$","contains","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","$event","offset","align","origin","base","_len","args","_key","rxValue","leading","_len2","_key2","trailing","menu","_createTextVNode","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport { PropType, SlotsType, nextTick } 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 { deepEqual, getObjectValueByPath, omit } from '../../util/common';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIcon, YIconIconProp } from '../icon';\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 menuProps: {\n type: Object as PropType<YMenu['$props']>,\n },\n ...pressListItemsPropsOptions(),\n },\n 'Select',\n);\n\nexport const pressYSelectPropsOptions = propsFactory(\n {\n maxHeight: {\n type: [Number, String],\n default: 310,\n },\n dropdownIcon: {\n type: [String, Array, Object] as PropType<YIconIconProp>,\n default: '$dropdown',\n },\n openDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n closeDelay: {\n type: Number as PropType<number>,\n default: 200,\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 'dropdown-icon': any;\n item: { item: any; selected: boolean; select: () => void };\n }>,\n setup(props, { slots, attrs, expose }) {\n const fieldInputRef = ref();\n const menuRef = ref<InstanceType<typeof YMenu>>();\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 const extraMenuProps = computed(() => {\n return { ...props.menuProps };\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 nextTick(() => {\n opened.value = false;\n });\n }\n }\n\n function onAfterLeave() {\n if (!focused.value) {\n fieldInputRef.value?.focus();\n }\n }\n\n function closeCondition(event: MouseEvent) {\n if (event.target && (menuRef.value as any)?.layer$?.content$) {\n return (event.target as HTMLElement)?.contains(\n (menuRef.value as any)?.layer$?.content$,\n );\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 const baseEl = computed(() => {\n return menuRef.value?.baseEl;\n });\n\n useRender(() => {\n const fieldInputProps = chooseProps(props, YFieldInput.props);\n const dropdownIconProps = chooseProps(\n typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {},\n YIcon.props,\n );\n return (\n <YMenu\n v-model={opened.value}\n ref={menuRef}\n offset={props.offset}\n position={props.position}\n align={props.align}\n origin={props.origin}\n content-classes={['y-select__content']}\n maxHeight={props.maxHeight}\n open-on-click-base={false}\n onAfterLeave={onAfterLeave}\n open-delay={props.openDelay}\n close-delay={props.closeDelay}\n closeCondition={closeCondition}\n {...extraMenuProps.value}\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 modelValue={model.value\n .map((v: any) => v.props.value)\n .join(', ')}\n validationValue={model.rxValue}\n onMousedown:display={onMousedownDisplay}\n onBlur={onBlur}\n readonly\n class={['y-select', { 'y-select--opened': opened.value }]}\n {...attrs}\n 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['dropdown-icon'] ? (\n slots['dropdown-icon']()\n ) : (\n <YIcon\n {...mergeProps(dropdownIconProps)}\n icon={props.dropdownIcon}\n class={['y-select__icon']}\n ></YIcon>\n );\n },\n 'helper-text': slots['helper-text']\n ? slots['helper-text']?.()\n : undefined,\n }}\n </YFieldInput>\n ),\n default: 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={{\n 'y-list-item--active': isSelected(item),\n }}\n >\n {slots.item\n ? slots.item({\n item,\n selected: isSelected(item),\n select: () => {\n select(item);\n },\n })\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 expose({\n fieldInputRef,\n baseEl,\n });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n menuRef,\n baseEl,\n };\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"YSelect.mjs","names":["shallowRef","nextTick","computed","defineComponent","mergeProps","onMounted","ref","useModelDuplex","useRender","pressCoordinateProps","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIcon","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","menuProps","Object","pressYSelectPropsOptions","maxHeight","Number","String","dropdownIcon","Array","openDelay","closeDelay","position","YSelect","name","inheritAttrs","props","emits","value","click:item","item","e","slots","setup","_ref","attrs","expose","fieldInputRef","menuRef","listRef","focused","items","toRefineItems","toEmitItems","model","v","emitValue","selections","ret","found","find","push","selected","map","selection","extraMenuProps","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","onAfterLeave","focus","closeCondition","target","layer$","content$","contains","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","$event","offset","align","origin","base","_len","args","_key","rxValue","leading","_len2","_key2","trailing","menu","_createTextVNode","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport { PropType, SlotsType, nextTick } 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 { deepEqual, getObjectValueByPath, omit } from '../../util/common';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIcon, YIconIconProp } from '../icon';\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 menuProps: {\n type: Object as PropType<YMenu['$props']>,\n },\n ...pressListItemsPropsOptions(),\n },\n 'Select',\n);\n\nexport const pressYSelectPropsOptions = propsFactory(\n {\n maxHeight: {\n type: [Number, String],\n default: 310,\n },\n dropdownIcon: {\n type: [String, Array, Object] as PropType<YIconIconProp>,\n default: '$dropdown',\n },\n openDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n closeDelay: {\n type: Number as PropType<number>,\n default: 200,\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 'dropdown-icon': any;\n item: { item: any; selected: boolean; select: () => void };\n }>,\n setup(props, { slots, attrs, expose }) {\n const fieldInputRef = ref();\n const menuRef = ref<InstanceType<typeof YMenu>>();\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 const ret: ListItem<any>[] = [];\n for (const v of model.value) {\n const found = items.value.find((item) => {\n return props.valueEquals(item.value, v.value);\n });\n if (found !== undefined) {\n ret.push(found);\n }\n }\n return ret;\n });\n\n const selected = computed(() => {\n return selections.value.map((selection) => selection?.props?.value);\n });\n\n const extraMenuProps = computed(() => {\n return { ...props.menuProps };\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 nextTick(() => {\n opened.value = false;\n });\n }\n }\n\n function onAfterLeave() {\n if (!focused.value) {\n fieldInputRef.value?.focus();\n }\n }\n\n function closeCondition(event: MouseEvent) {\n if (event.target && (menuRef.value as any)?.layer$?.content$) {\n return (event.target as HTMLElement)?.contains(\n (menuRef.value as any)?.layer$?.content$,\n );\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 const baseEl = computed(() => {\n return menuRef.value?.baseEl;\n });\n\n useRender(() => {\n const fieldInputProps = chooseProps(props, YFieldInput.props);\n const dropdownIconProps = chooseProps(\n typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {},\n YIcon.props,\n );\n return (\n <YMenu\n v-model={opened.value}\n ref={menuRef}\n offset={props.offset}\n position={props.position}\n align={props.align}\n origin={props.origin}\n content-classes={['y-select__content']}\n maxHeight={props.maxHeight}\n open-on-click-base={false}\n onAfterLeave={onAfterLeave}\n open-delay={props.openDelay}\n close-delay={props.closeDelay}\n closeCondition={closeCondition}\n {...extraMenuProps.value}\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 modelValue={model.value\n .map((v: any) => v.props.value)\n .join(', ')}\n validationValue={model.rxValue}\n onMousedown:display={onMousedownDisplay}\n onBlur={onBlur}\n readonly\n class={[\n 'y-select',\n {\n 'y-select--opened': opened.value,\n 'y-select--selected': selected.value.length > 0,\n },\n ]}\n {...attrs}\n 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['dropdown-icon'] ? (\n slots['dropdown-icon']()\n ) : (\n <YIcon\n {...mergeProps(dropdownIconProps)}\n icon={props.dropdownIcon}\n class={['y-select__icon']}\n ></YIcon>\n );\n },\n 'helper-text': slots['helper-text']\n ? slots['helper-text']?.()\n : undefined,\n }}\n </YFieldInput>\n ),\n default: 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={{\n 'y-list-item--active': isSelected(item),\n }}\n >\n {slots.item\n ? slots.item({\n item,\n selected: isSelected(item),\n select: () => {\n select(item);\n },\n })\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 expose({\n fieldInputRef,\n baseEl,\n });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n menuRef,\n baseEl,\n };\n },\n});\n"],"mappings":"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"}
@@ -32,8 +32,11 @@
32
32
  > input {
33
33
  position: absolute;
34
34
  inset: 0;
35
- opacity: 0;
36
35
  cursor: pointer;
37
36
  }
38
37
  }
38
+
39
+ &--selected .y-field-input__field > input {
40
+ opacity: 0;
41
+ }
39
42
  }
@@ -137,7 +137,9 @@ export const YTextarea = defineComponent({
137
137
  }, [props.floating ? el$.value?.createLabel?.() : undefined, slots.default ? () => slots.default(defaultProps) : undefined, _createVNode("textarea", _mergeProps({
138
138
  "ref": input$,
139
139
  "value": displayValue.value,
140
- "id": `y-input--${UID}`
140
+ "id": `y-input--${UID}`,
141
+ "disabled": props.disabled,
142
+ "placeholder": props.placeholder
141
143
  }, attrs, {
142
144
  "onInput": onInput,
143
145
  "onFocus": onFocus,
@@ -1 +1 @@
1
- {"version":3,"file":"YTextarea.mjs","names":["defineComponent","getCurrentInstance","nextTick","ref","watch","useRender","useFocus","chooseProps","getUid","propsFactory","YInput","pressYInputPropsOptions","pressYTextareaPropsOptions","displayText","String","Function","whenInputValid","Boolean","Number","variation","CLASS_NAME","YTextarea","name","props","emits","v","e","input","change","focus","blur","click","keydown","keyup","slots","Object","setup","_ref","attrs","emit","expose","UID","el$","input$","inValue","displayValue","focused","whenFocus","whenBlur","onUpdateModel","value","changeDisplay","vm","undefined","text","call","invokeValidators","onInput","event","target","onChange","onFocus","onBlur","onKeydown","onKeyup","onClick","modelValue","neo","immediate","yInputProps","_createVNode","_mergeProps","$event","default","defaultProps","attrId","floating","createLabel","label"],"sources":["../../../src/components/textarea/YTextarea.tsx"],"sourcesContent":["import {\r\n SlotsType,\r\n defineComponent,\r\n getCurrentInstance,\r\n nextTick,\r\n ref,\r\n watch,\r\n} from 'vue';\r\nimport type { PropType } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { useFocus } from '../../composables/focus';\r\nimport { chooseProps, getUid, propsFactory } from '../../util';\r\nimport { YInput, pressYInputPropsOptions } from '../input';\r\n\r\nimport './YTextarea.scss';\r\n\r\nexport const pressYTextareaPropsOptions = propsFactory(\r\n {\r\n displayText: [String, Function] as PropType<\r\n string | ((value: any) => string)\r\n >,\r\n whenInputValid: [Boolean, Number] as PropType<boolean | number>,\r\n ...pressYInputPropsOptions({\r\n variation: 'filled',\r\n }),\r\n },\r\n 'YTextarea',\r\n);\r\n\r\nconst CLASS_NAME = 'y-textarea';\r\n\r\nexport const YTextarea = defineComponent({\r\n name: 'YTextarea',\r\n props: pressYTextareaPropsOptions(),\r\n emits: {\r\n 'update:modelValue': (v: any) => true,\r\n 'update:focused': (v: boolean) => true,\r\n 'mousedown:display': (e: MouseEvent) => true,\r\n input: (v: any) => true,\r\n change: (v: any, e: Event) => true,\r\n focus: (e: FocusEvent) => true,\r\n blur: (e: FocusEvent) => true,\r\n click: (e: MouseEvent) => true,\r\n keydown: (e: KeyboardEvent) => true,\r\n keyup: (e: KeyboardEvent) => true,\r\n },\r\n slots: Object as SlotsType<{\r\n default: any;\r\n label: any;\r\n 'helper-text': any;\r\n }>,\r\n setup(props, { attrs, emit, slots, expose }) {\r\n const UID = getUid();\r\n const el$ = ref<YInput>();\r\n const input$ = ref();\r\n const inValue = ref<any>('');\r\n const displayValue = ref('');\r\n const { focused, whenFocus, whenBlur } = useFocus(props, 'y-field-input');\r\n\r\n function onUpdateModel(value: any) {\r\n emit('update:modelValue', value);\r\n }\r\n\r\n function changeDisplay() {\r\n const vm = getCurrentInstance();\r\n const { displayText } = props;\r\n if (displayText !== undefined) {\r\n let text = inValue.value;\r\n if (typeof displayText === 'string') {\r\n text = displayText;\r\n }\r\n if (displayText && typeof displayText === 'function') {\r\n text = (displayText as any).call(vm, text);\r\n }\r\n nextTick(() => {\r\n displayValue.value = text as string;\r\n });\r\n }\r\n }\r\n\r\n function invokeValidators() {\r\n //\r\n }\r\n\r\n function onInput(event: Event) {\r\n emit('input', event);\r\n const target = event.target as HTMLInputElement | null;\r\n inValue.value = target?.value;\r\n displayValue.value = target?.value as string;\r\n if (props.whenInputValid) {\r\n invokeValidators();\r\n }\r\n }\r\n\r\n function onChange(event: Event) {\r\n emit('change', inValue.value, event);\r\n }\r\n\r\n function onFocus(event: FocusEvent) {\r\n whenFocus();\r\n displayValue.value = inValue.value as string;\r\n emit('focus', event);\r\n }\r\n\r\n function onBlur(event: FocusEvent) {\r\n whenBlur();\r\n invokeValidators();\r\n emit('blur', event);\r\n changeDisplay();\r\n }\r\n\r\n function onKeydown(event: KeyboardEvent) {\r\n emit('keydown', event);\r\n }\r\n\r\n function onKeyup(event: KeyboardEvent) {\r\n emit('keyup', event);\r\n }\r\n\r\n function onClick(event: MouseEvent) {\r\n emit('click', event);\r\n }\r\n\r\n watch(\r\n () => props.modelValue,\r\n (neo: any) => {\r\n inValue.value = neo;\r\n displayValue.value = neo;\r\n },\r\n {\r\n immediate: true,\r\n },\r\n );\r\n\r\n watch(inValue, (neo: string) => {\r\n if (!focused.value) {\r\n changeDisplay();\r\n } else {\r\n displayValue.value = neo;\r\n }\r\n });\r\n\r\n expose({\r\n el$,\r\n input$,\r\n });\r\n\r\n useRender(() => {\r\n const yInputProps = chooseProps(props, YInput.props);\r\n return (\r\n <YInput\r\n class={[CLASS_NAME]}\r\n {...yInputProps}\r\n modelValue={inValue.value}\r\n onUpdate:modelValue={onUpdateModel}\r\n focused={focused.value}\r\n onClick={onClick}\r\n onMousedown:display={($event) => emit('mousedown:display', $event)}\r\n >\r\n {{\r\n default: (defaultProps: any) => (\r\n <div\r\n class={[`${CLASS_NAME}__field`]}\r\n data-id={defaultProps.attrId}\r\n ref={'field'}\r\n >\r\n {props.floating\r\n ? el$.value?.createLabel?.()\r\n : undefined}\r\n {slots.default ? () => slots.default(defaultProps) : undefined}\r\n {\r\n <textarea\r\n ref={input$}\r\n value={displayValue.value}\r\n id={`y-input--${UID}`}\r\n {...attrs}\r\n onInput={onInput}\r\n onFocus={onFocus}\r\n onBlur={onBlur}\r\n onChange={onChange}\r\n onKeydown={onKeydown}\r\n onKeyup={onKeyup}\r\n ></textarea>\r\n }\r\n </div>\r\n ),\r\n label: slots.label ? () => slots.label?.() : undefined,\r\n 'helper-text': slots['helper-text']\r\n ? () => slots['helper-text']?.()\r\n : undefined,\r\n }}\r\n </YInput>\r\n );\r\n });\r\n\r\n return {\r\n el$,\r\n input$,\r\n };\r\n },\r\n});\r\n\r\nexport type YTextarea = InstanceType<typeof YTextarea>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YTextarea.mjs","names":["defineComponent","getCurrentInstance","nextTick","ref","watch","useRender","useFocus","chooseProps","getUid","propsFactory","YInput","pressYInputPropsOptions","pressYTextareaPropsOptions","displayText","String","Function","whenInputValid","Boolean","Number","variation","CLASS_NAME","YTextarea","name","props","emits","v","e","input","change","focus","blur","click","keydown","keyup","slots","Object","setup","_ref","attrs","emit","expose","UID","el$","input$","inValue","displayValue","focused","whenFocus","whenBlur","onUpdateModel","value","changeDisplay","vm","undefined","text","call","invokeValidators","onInput","event","target","onChange","onFocus","onBlur","onKeydown","onKeyup","onClick","modelValue","neo","immediate","yInputProps","_createVNode","_mergeProps","$event","default","defaultProps","attrId","floating","createLabel","disabled","placeholder","label"],"sources":["../../../src/components/textarea/YTextarea.tsx"],"sourcesContent":["import {\r\n SlotsType,\r\n defineComponent,\r\n getCurrentInstance,\r\n nextTick,\r\n ref,\r\n watch,\r\n} from 'vue';\r\nimport type { PropType } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { useFocus } from '../../composables/focus';\r\nimport { chooseProps, getUid, propsFactory } from '../../util';\r\nimport { YInput, pressYInputPropsOptions } from '../input';\r\n\r\nimport './YTextarea.scss';\r\n\r\nexport const pressYTextareaPropsOptions = propsFactory(\r\n {\r\n displayText: [String, Function] as PropType<\r\n string | ((value: any) => string)\r\n >,\r\n whenInputValid: [Boolean, Number] as PropType<boolean | number>,\r\n ...pressYInputPropsOptions({\r\n variation: 'filled',\r\n }),\r\n },\r\n 'YTextarea',\r\n);\r\n\r\nconst CLASS_NAME = 'y-textarea';\r\n\r\nexport const YTextarea = defineComponent({\r\n name: 'YTextarea',\r\n props: pressYTextareaPropsOptions(),\r\n emits: {\r\n 'update:modelValue': (v: any) => true,\r\n 'update:focused': (v: boolean) => true,\r\n 'mousedown:display': (e: MouseEvent) => true,\r\n input: (v: any) => true,\r\n change: (v: any, e: Event) => true,\r\n focus: (e: FocusEvent) => true,\r\n blur: (e: FocusEvent) => true,\r\n click: (e: MouseEvent) => true,\r\n keydown: (e: KeyboardEvent) => true,\r\n keyup: (e: KeyboardEvent) => true,\r\n },\r\n slots: Object as SlotsType<{\r\n default: any;\r\n label: any;\r\n 'helper-text': any;\r\n }>,\r\n setup(props, { attrs, emit, slots, expose }) {\r\n const UID = getUid();\r\n const el$ = ref<YInput>();\r\n const input$ = ref();\r\n const inValue = ref<any>('');\r\n const displayValue = ref('');\r\n const { focused, whenFocus, whenBlur } = useFocus(props, 'y-field-input');\r\n\r\n function onUpdateModel(value: any) {\r\n emit('update:modelValue', value);\r\n }\r\n\r\n function changeDisplay() {\r\n const vm = getCurrentInstance();\r\n const { displayText } = props;\r\n if (displayText !== undefined) {\r\n let text = inValue.value;\r\n if (typeof displayText === 'string') {\r\n text = displayText;\r\n }\r\n if (displayText && typeof displayText === 'function') {\r\n text = (displayText as any).call(vm, text);\r\n }\r\n nextTick(() => {\r\n displayValue.value = text as string;\r\n });\r\n }\r\n }\r\n\r\n function invokeValidators() {\r\n //\r\n }\r\n\r\n function onInput(event: Event) {\r\n emit('input', event);\r\n const target = event.target as HTMLInputElement | null;\r\n inValue.value = target?.value;\r\n displayValue.value = target?.value as string;\r\n if (props.whenInputValid) {\r\n invokeValidators();\r\n }\r\n }\r\n\r\n function onChange(event: Event) {\r\n emit('change', inValue.value, event);\r\n }\r\n\r\n function onFocus(event: FocusEvent) {\r\n whenFocus();\r\n displayValue.value = inValue.value as string;\r\n emit('focus', event);\r\n }\r\n\r\n function onBlur(event: FocusEvent) {\r\n whenBlur();\r\n invokeValidators();\r\n emit('blur', event);\r\n changeDisplay();\r\n }\r\n\r\n function onKeydown(event: KeyboardEvent) {\r\n emit('keydown', event);\r\n }\r\n\r\n function onKeyup(event: KeyboardEvent) {\r\n emit('keyup', event);\r\n }\r\n\r\n function onClick(event: MouseEvent) {\r\n emit('click', event);\r\n }\r\n\r\n watch(\r\n () => props.modelValue,\r\n (neo: any) => {\r\n inValue.value = neo;\r\n displayValue.value = neo;\r\n },\r\n {\r\n immediate: true,\r\n },\r\n );\r\n\r\n watch(inValue, (neo: string) => {\r\n if (!focused.value) {\r\n changeDisplay();\r\n } else {\r\n displayValue.value = neo;\r\n }\r\n });\r\n\r\n expose({\r\n el$,\r\n input$,\r\n });\r\n\r\n useRender(() => {\r\n const yInputProps = chooseProps(props, YInput.props);\r\n return (\r\n <YInput\r\n class={[CLASS_NAME]}\r\n {...yInputProps}\r\n modelValue={inValue.value}\r\n onUpdate:modelValue={onUpdateModel}\r\n focused={focused.value}\r\n onClick={onClick}\r\n onMousedown:display={($event) => emit('mousedown:display', $event)}\r\n >\r\n {{\r\n default: (defaultProps: any) => (\r\n <div\r\n class={[`${CLASS_NAME}__field`]}\r\n data-id={defaultProps.attrId}\r\n ref={'field'}\r\n >\r\n {props.floating\r\n ? el$.value?.createLabel?.()\r\n : undefined}\r\n {slots.default ? () => slots.default(defaultProps) : undefined}\r\n {\r\n <textarea\r\n ref={input$}\r\n value={displayValue.value}\r\n id={`y-input--${UID}`}\r\n disabled={props.disabled}\r\n placeholder={props.placeholder}\r\n {...attrs}\r\n onInput={onInput}\r\n onFocus={onFocus}\r\n onBlur={onBlur}\r\n onChange={onChange}\r\n onKeydown={onKeydown}\r\n onKeyup={onKeyup}\r\n ></textarea>\r\n }\r\n </div>\r\n ),\r\n label: slots.label ? () => slots.label?.() : undefined,\r\n 'helper-text': slots['helper-text']\r\n ? () => slots['helper-text']?.()\r\n : undefined,\r\n }}\r\n </YInput>\r\n );\r\n });\r\n\r\n return {\r\n el$,\r\n input$,\r\n };\r\n },\r\n});\r\n\r\nexport type YTextarea = InstanceType<typeof YTextarea>;\r\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["onScopeDispose","ref","watch","propsFactory","useToggleScope","applyArrangement","applyLevitation","coordinateStrategies","levitation","arrangement","pressCoordinateProps","coordinateStrategy","type","String","Function","default","position","align","origin","offset","Number","Array","viewportMargin","useCoordinate","props","state","updateCoordinate","coordinate","coordinateStyles","active","value","reset","undefined","strategy","window","addEventListener","onResize","passive","removeEventListener","e"],"sources":["../../../src/composables/coordinate/index.ts"],"sourcesContent":["import type { CSSProperties, PropType, Ref } from 'vue';\nimport { onScopeDispose, ref, watch } from 'vue';\n\nimport { Rect } from '../../util/rect';\nimport { propsFactory } from '../../util/vue-component';\nimport { useToggleScope } from '../scope';\nimport { applyArrangement } from './arrangement';\nimport { applyLevitation } from './levitation';\n\nimport { CoordinateState } from './types';\n\nconst coordinateStrategies = {\n levitation: applyLevitation,\n arrangement: applyArrangement,\n};\n\nexport type CoordinateStrategyFn = (\n props: any,\n state: CoordinateState,\n coordinate: Ref<Rect | undefined>,\n coordinateStyles: Ref<CSSProperties>,\n) => undefined | { updateCoordinate: (e: Event) => void };\n\nexport const pressCoordinateProps = propsFactory(\n {\n coordinateStrategy: {\n type: [String, Function] as PropType<keyof typeof coordinateStrategies | CoordinateStrategyFn>,\n default: 'arrangement',\n },\n position: {\n type: String as PropType<\n 'default' | 'top' | 'end' | 'right' | 'bottom' | 'left' | 'start'\n >,\n default: 'default',\n },\n align: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'start',\n },\n origin: {\n type: String,\n default: 'auto'\n },\n offset: {\n type: [Number, String, Array] as PropType<number | string | string[]>,\n },\n viewportMargin: {\n type: Number,\n default: 16,\n }\n },\n 'Coordinate',\n);\n\nexport function useCoordinate(props: any, state: CoordinateState) {\n const updateCoordinate = ref<(e: Event) => void>();\n const coordinate = ref<Rect | undefined>();\n const coordinateStyles = ref<CSSProperties>({});\n\n useToggleScope(\n () => !!(state.active.value && props.coordinateStrategy),\n (reset) => {\n watch(() => props.coordinateStrategy, reset);\n onScopeDispose(() => {\n updateCoordinate.value = undefined;\n });\n\n if (typeof props.coordinateStrategy === 'function') {\n updateCoordinate.value = props.coordinateStrategy(\n props,\n state,\n coordinate,\n coordinateStyles,\n )?.updateCoordinate;\n } else {\n const strategy =\n coordinateStrategies[\n props.coordinateStrategy as keyof typeof coordinateStrategies\n ];\n updateCoordinate.value = strategy?.(\n props,\n state,\n coordinate,\n coordinateStyles,\n )?.updateCoordinate;\n }\n },\n );\n\n window.addEventListener('resize', onResize, { passive: true });\n\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize);\n updateCoordinate.value = undefined;\n });\n\n function onResize(e: Event) {\n updateCoordinate.value?.(e);\n }\n\n return {\n coordinate,\n coordinateStyles,\n updateCoordinate,\n };\n}\n"],"mappings":"AACA,SAASA,cAAc,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAGxCC,YAAY;AAAA,SACZC,cAAc;AAAA,SACdC,gBAAgB;AAAA,SAChBC,eAAe;AAIxB,MAAMC,oBAAoB,GAAG;EAC3BC,UAAU,EAAEF,eAAe;EAC3BG,WAAW,EAAEJ;AACf,CAAC;AASD,OAAO,MAAMK,oBAAoB,GAAGP,YAAY,CAC9C;EACEQ,kBAAkB,EAAE;IAClBC,IAAI,EAAE,CAACC,MAAM,EAAEC,QAAQ,CAAuE;IAC9FC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRJ,IAAI,EAAEC,MAEL;IACDE,OAAO,EAAE;EACX,CAAC;EACDE,KAAK,EAAE;IACLL,IAAI,EAAEC,MAA8C;IACpDE,OAAO,EAAE;EACX,CAAC;EACDG,MAAM,EAAE;IACNN,IAAI,EAAEC,MAAM;IACZE,OAAO,EAAE;EACX,CAAC;EACDI,MAAM,EAAE;IACNP,IAAI,EAAE,CAACQ,MAAM,EAAEP,MAAM,EAAEQ,KAAK;EAC9B,CAAC;EACDC,cAAc,EAAE;IACdV,IAAI,EAAEQ,MAAM;IACZL,OAAO,EAAE;EACX;AACF,CAAC,EACD,YACF,CAAC;AAED,OAAO,SAASQ,aAAaA,CAACC,KAAU,EAAEC,KAAsB,EAAE;EAChE,MAAMC,gBAAgB,GAAGzB,GAAG,CAAqB,CAAC;EAClD,MAAM0B,UAAU,GAAG1B,GAAG,CAAmB,CAAC;EAC1C,MAAM2B,gBAAgB,GAAG3B,GAAG,CAAgB,CAAC,CAAC,CAAC;EAE/CG,cAAc,CACZ,MAAM,CAAC,EAAEqB,KAAK,CAACI,MAAM,CAACC,KAAK,IAAIN,KAAK,CAACb,kBAAkB,CAAC,EACvDoB,KAAK,IAAK;IACT7B,KAAK,CAAC,MAAMsB,KAAK,CAACb,kBAAkB,EAAEoB,KAAK,CAAC;IAC5C/B,cAAc,CAAC,MAAM;MACnB0B,gBAAgB,CAACI,KAAK,GAAGE,SAAS;IACpC,CAAC,CAAC;IAEF,IAAI,OAAOR,KAAK,CAACb,kBAAkB,KAAK,UAAU,EAAE;MAClDe,gBAAgB,CAACI,KAAK,GAAGN,KAAK,CAACb,kBAAkB,CAC/Ca,KAAK,EACLC,KAAK,EACLE,UAAU,EACVC,gBACF,CAAC,EAAEF,gBAAgB;IACrB,CAAC,MAAM;MACL,MAAMO,QAAQ,GACZ1B,oBAAoB,CAClBiB,KAAK,CAACb,kBAAkB,CACzB;MACHe,gBAAgB,CAACI,KAAK,GAAGG,QAAQ,GAC/BT,KAAK,EACLC,KAAK,EACLE,UAAU,EACVC,gBACF,CAAC,EAAEF,gBAAgB;IACrB;EACF,CACF,CAAC;EAEDQ,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEC,QAAQ,EAAE;IAAEC,OAAO,EAAE;EAAK,CAAC,CAAC;EAE9DrC,cAAc,CAAC,MAAM;IACnBkC,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEF,QAAQ,CAAC;IAC9CV,gBAAgB,CAACI,KAAK,GAAGE,SAAS;EACpC,CAAC,CAAC;EAEF,SAASI,QAAQA,CAACG,CAAQ,EAAE;IAC1Bb,gBAAgB,CAACI,KAAK,GAAGS,CAAC,CAAC;EAC7B;EAEA,OAAO;IACLZ,UAAU;IACVC,gBAAgB;IAChBF;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"index.mjs","names":["onScopeDispose","ref","watch","propsFactory","useToggleScope","applyArrangement","applyLevitation","coordinateStrategies","levitation","arrangement","pressCoordinateProps","coordinateStrategy","type","String","Function","default","position","align","origin","offset","Number","Array","viewportMargin","useCoordinate","props","state","updateCoordinate","coordinate","coordinateStyles","active","value","reset","undefined","strategy","window","addEventListener","onResize","passive","removeEventListener","e"],"sources":["../../../src/composables/coordinate/index.ts"],"sourcesContent":["import type { CSSProperties, PropType, Ref } from 'vue';\nimport { onScopeDispose, ref, watch } from 'vue';\n\nimport { Rect } from '../../util/rect';\nimport { propsFactory } from '../../util/vue-component';\nimport { useToggleScope } from '../scope';\nimport { applyArrangement } from './arrangement';\nimport { applyLevitation } from './levitation';\n\nimport { CoordinateState } from './types';\n\nconst coordinateStrategies = {\n levitation: applyLevitation,\n arrangement: applyArrangement,\n};\n\nexport type CoordinateStrategyFn = (\n props: any,\n state: CoordinateState,\n coordinate: Ref<Rect | undefined>,\n coordinateStyles: Ref<CSSProperties>,\n) => undefined | { updateCoordinate: (e: Event) => void };\n\nexport const pressCoordinateProps = propsFactory(\n {\n coordinateStrategy: {\n type: [String, Function] as PropType<keyof typeof coordinateStrategies | CoordinateStrategyFn>,\n default: 'arrangement',\n },\n position: {\n type: String as PropType<\n 'default' | 'top' | 'end' | 'right' | 'bottom' | 'left' | 'start'\n >,\n default: 'default',\n },\n align: {\n type: String as PropType<'start' | 'center' | 'end' | 'top' | 'bottom'>,\n default: 'start',\n },\n origin: {\n type: String,\n default: 'auto'\n },\n offset: {\n type: [Number, String, Array] as PropType<number | string | string[]>,\n },\n viewportMargin: {\n type: Number,\n default: 16,\n }\n },\n 'Coordinate',\n);\n\nexport function useCoordinate(props: any, state: CoordinateState) {\n const updateCoordinate = ref<(e: Event) => void>();\n const coordinate = ref<Rect | undefined>();\n const coordinateStyles = ref<CSSProperties>({});\n\n useToggleScope(\n () => !!(state.active.value && props.coordinateStrategy),\n (reset) => {\n watch(() => props.coordinateStrategy, reset);\n onScopeDispose(() => {\n updateCoordinate.value = undefined;\n });\n\n if (typeof props.coordinateStrategy === 'function') {\n updateCoordinate.value = props.coordinateStrategy(\n props,\n state,\n coordinate,\n coordinateStyles,\n )?.updateCoordinate;\n } else {\n const strategy =\n coordinateStrategies[\n props.coordinateStrategy as keyof typeof coordinateStrategies\n ];\n updateCoordinate.value = strategy?.(\n props,\n state,\n coordinate,\n coordinateStyles,\n )?.updateCoordinate;\n }\n },\n );\n\n window.addEventListener('resize', onResize, { passive: true });\n\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize);\n updateCoordinate.value = undefined;\n });\n\n function onResize(e: Event) {\n updateCoordinate.value?.(e);\n }\n\n return {\n coordinate,\n coordinateStyles,\n updateCoordinate,\n };\n}\n"],"mappings":"AACA,SAASA,cAAc,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAGxCC,YAAY;AAAA,SACZC,cAAc;AAAA,SACdC,gBAAgB;AAAA,SAChBC,eAAe;AAIxB,MAAMC,oBAAoB,GAAG;EAC3BC,UAAU,EAAEF,eAAe;EAC3BG,WAAW,EAAEJ;AACf,CAAC;AASD,OAAO,MAAMK,oBAAoB,GAAGP,YAAY,CAC9C;EACEQ,kBAAkB,EAAE;IAClBC,IAAI,EAAE,CAACC,MAAM,EAAEC,QAAQ,CAAuE;IAC9FC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRJ,IAAI,EAAEC,MAEL;IACDE,OAAO,EAAE;EACX,CAAC;EACDE,KAAK,EAAE;IACLL,IAAI,EAAEC,MAAiE;IACvEE,OAAO,EAAE;EACX,CAAC;EACDG,MAAM,EAAE;IACNN,IAAI,EAAEC,MAAM;IACZE,OAAO,EAAE;EACX,CAAC;EACDI,MAAM,EAAE;IACNP,IAAI,EAAE,CAACQ,MAAM,EAAEP,MAAM,EAAEQ,KAAK;EAC9B,CAAC;EACDC,cAAc,EAAE;IACdV,IAAI,EAAEQ,MAAM;IACZL,OAAO,EAAE;EACX;AACF,CAAC,EACD,YACF,CAAC;AAED,OAAO,SAASQ,aAAaA,CAACC,KAAU,EAAEC,KAAsB,EAAE;EAChE,MAAMC,gBAAgB,GAAGzB,GAAG,CAAqB,CAAC;EAClD,MAAM0B,UAAU,GAAG1B,GAAG,CAAmB,CAAC;EAC1C,MAAM2B,gBAAgB,GAAG3B,GAAG,CAAgB,CAAC,CAAC,CAAC;EAE/CG,cAAc,CACZ,MAAM,CAAC,EAAEqB,KAAK,CAACI,MAAM,CAACC,KAAK,IAAIN,KAAK,CAACb,kBAAkB,CAAC,EACvDoB,KAAK,IAAK;IACT7B,KAAK,CAAC,MAAMsB,KAAK,CAACb,kBAAkB,EAAEoB,KAAK,CAAC;IAC5C/B,cAAc,CAAC,MAAM;MACnB0B,gBAAgB,CAACI,KAAK,GAAGE,SAAS;IACpC,CAAC,CAAC;IAEF,IAAI,OAAOR,KAAK,CAACb,kBAAkB,KAAK,UAAU,EAAE;MAClDe,gBAAgB,CAACI,KAAK,GAAGN,KAAK,CAACb,kBAAkB,CAC/Ca,KAAK,EACLC,KAAK,EACLE,UAAU,EACVC,gBACF,CAAC,EAAEF,gBAAgB;IACrB,CAAC,MAAM;MACL,MAAMO,QAAQ,GACZ1B,oBAAoB,CAClBiB,KAAK,CAACb,kBAAkB,CACzB;MACHe,gBAAgB,CAACI,KAAK,GAAGG,QAAQ,GAC/BT,KAAK,EACLC,KAAK,EACLE,UAAU,EACVC,gBACF,CAAC,EAAEF,gBAAgB;IACrB;EACF,CACF,CAAC;EAEDQ,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEC,QAAQ,EAAE;IAAEC,OAAO,EAAE;EAAK,CAAC,CAAC;EAE9DrC,cAAc,CAAC,MAAM;IACnBkC,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEF,QAAQ,CAAC;IAC9CV,gBAAgB,CAACI,KAAK,GAAGE,SAAS;EACpC,CAAC,CAAC;EAEF,SAASI,QAAQA,CAACG,CAAQ,EAAE;IAC1Bb,gBAAgB,CAACI,KAAK,GAAGS,CAAC,CAAC;EAC7B;EAEA,OAAO;IACLZ,UAAU;IACVC,gBAAgB;IAChBF;EACF,CAAC;AACH"}
@@ -11,9 +11,11 @@ const listItemsPropsOptions = {
11
11
  };
12
12
  export const pressListItemsPropsOptions = propsFactory(listItemsPropsOptions, 'list-items');
13
13
  export function refineListItems(props, items) {
14
- return items.map(item => {
15
- return refineListItem(props, item);
16
- });
14
+ const ret = [];
15
+ for (const item of items) {
16
+ ret.push(refineListItem(props, item));
17
+ }
18
+ return ret;
17
19
  }
18
20
  export function refineListItem(props, item) {
19
21
  const text = getPropertyFromItem(item, props.itemText, item);
@@ -32,20 +34,22 @@ export function refineListItem(props, item) {
32
34
  }
33
35
  export function useItems(props) {
34
36
  const items = computed(() => refineListItems(props, props.items));
35
- return useRefineListItems(items, v => refineListItem(props, v));
36
- }
37
- export function useRefineListItems(items, refine) {
38
37
  function toRefineItems(values) {
39
38
  return values.filter(v => v !== null || items.value.some(item => item.value === null)).map(v => {
40
39
  const found = items.value.find(item => deepEqual(v, item.value));
41
- return found ?? refine(v);
40
+ return found ?? refineListItem(props, v);
42
41
  });
43
42
  }
44
43
  function toEmitItems(items) {
45
- return items.map(_ref => {
44
+ return props.returnItem ? items.map(_ref => {
46
45
  let {
47
- value
46
+ raw
48
47
  } = _ref;
48
+ return raw;
49
+ }) : items.map(_ref2 => {
50
+ let {
51
+ value
52
+ } = _ref2;
49
53
  return value;
50
54
  });
51
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list-items.mjs","names":["computed","pressItemsPropsOptions","deepEqual","getPropertyFromItem","propsFactory","listItemsPropsOptions","itemKey","itemChildren","returnItem","Boolean","pressListItemsPropsOptions","refineListItems","props","items","map","item","refineListItem","text","itemText","value","children","Array","isArray","undefined","raw","useItems","useRefineListItems","v","refine","toRefineItems","values","filter","some","found","find","toEmitItems","_ref"],"sources":["../../src/composables/list-items.ts"],"sourcesContent":["import type { ExtractPropTypes, Ref } from 'vue';\nimport { computed } from 'vue';\n\nimport { pressItemsPropsOptions } from '../abstract/items';\nimport { deepEqual, getPropertyFromItem } from '../util/common';\nimport { propsFactory } from '../util/vue-component';\n\nexport interface ListItem<T = any> {\n value: any;\n text: string;\n props: {\n [key: string]: any;\n value: any;\n text: string;\n };\n children?: ListItem<T>[];\n raw: T;\n}\n\nconst listItemsPropsOptions = {\n ...pressItemsPropsOptions({\n itemKey: 'value',\n itemChildren: false,\n }),\n returnItem: Boolean,\n};\n\ntype ListItemProps = ExtractPropTypes<typeof listItemsPropsOptions>;\n\nexport const pressListItemsPropsOptions = propsFactory(\n listItemsPropsOptions,\n 'list-items',\n);\n\nexport function refineListItems(\n props: Omit<ListItemProps, 'items'>,\n items: any[],\n) {\n return items.map((item) => {\n return refineListItem(props, item);\n });\n}\n\nexport function refineListItem(\n props: Omit<ListItemProps, 'items'>,\n item: any,\n): ListItem {\n const text = getPropertyFromItem(item, props.itemText, item);\n const value = props.returnItem\n ? item\n : getPropertyFromItem(item, props.itemKey, text);\n const children = getPropertyFromItem(item, props.itemChildren);\n\n return {\n value,\n text,\n props: {\n value,\n text,\n },\n children: Array.isArray(children)\n ? refineListItems(props, children)\n : undefined,\n raw: item,\n };\n}\n\nexport function useItems(props: ListItemProps) {\n const items = computed(() => refineListItems(props, props.items));\n return useRefineListItems(items, (v) => refineListItem(props, v));\n}\n\nexport function useRefineListItems<T extends { value: unknown }>(\n items: Ref<T[]>,\n refine: (value: unknown) => T,\n) {\n function toRefineItems(values: any[]): T[] {\n return values\n .filter(\n (v) => v !== null || items.value.some((item) => item.value === null),\n )\n .map((v) => {\n const found = items.value.find((item) => deepEqual(v, item.value));\n return found ?? refine(v);\n });\n }\n\n function toEmitItems(items: T[]) {\n return items.map(({ value }) => value);\n }\n\n return {\n items,\n toEmitItems,\n toRefineItems,\n };\n}\n"],"mappings":"AACA,SAASA,QAAQ,QAAQ,KAAK;AAAC,SAEtBC,sBAAsB;AAAA,SACtBC,SAAS,EAAEC,mBAAmB;AAAA,SAC9BC,YAAY;AAcrB,MAAMC,qBAAqB,GAAG;EAC5B,GAAGJ,sBAAsB,CAAC;IACxBK,OAAO,EAAE,OAAO;IAChBC,YAAY,EAAE;EAChB,CAAC,CAAC;EACFC,UAAU,EAAEC;AACd,CAAC;AAID,OAAO,MAAMC,0BAA0B,GAAGN,YAAY,CACpDC,qBAAqB,EACrB,YACF,CAAC;AAED,OAAO,SAASM,eAAeA,CAC7BC,KAAmC,EACnCC,KAAY,EACZ;EACA,OAAOA,KAAK,CAACC,GAAG,CAAEC,IAAI,IAAK;IACzB,OAAOC,cAAc,CAACJ,KAAK,EAAEG,IAAI,CAAC;EACpC,CAAC,CAAC;AACJ;AAEA,OAAO,SAASC,cAAcA,CAC5BJ,KAAmC,EACnCG,IAAS,EACC;EACV,MAAME,IAAI,GAAGd,mBAAmB,CAACY,IAAI,EAAEH,KAAK,CAACM,QAAQ,EAAEH,IAAI,CAAC;EAC5D,MAAMI,KAAK,GAAGP,KAAK,CAACJ,UAAU,GAC1BO,IAAI,GACJZ,mBAAmB,CAACY,IAAI,EAAEH,KAAK,CAACN,OAAO,EAAEW,IAAI,CAAC;EAClD,MAAMG,QAAQ,GAAGjB,mBAAmB,CAACY,IAAI,EAAEH,KAAK,CAACL,YAAY,CAAC;EAE9D,OAAO;IACLY,KAAK;IACLF,IAAI;IACJL,KAAK,EAAE;MACLO,KAAK;MACLF;IACF,CAAC;IACDG,QAAQ,EAAEC,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,GAC7BT,eAAe,CAACC,KAAK,EAAEQ,QAAQ,CAAC,GAChCG,SAAS;IACbC,GAAG,EAAET;EACP,CAAC;AACH;AAEA,OAAO,SAASU,QAAQA,CAACb,KAAoB,EAAE;EAC7C,MAAMC,KAAK,GAAGb,QAAQ,CAAC,MAAMW,eAAe,CAACC,KAAK,EAAEA,KAAK,CAACC,KAAK,CAAC,CAAC;EACjE,OAAOa,kBAAkB,CAACb,KAAK,EAAGc,CAAC,IAAKX,cAAc,CAACJ,KAAK,EAAEe,CAAC,CAAC,CAAC;AACnE;AAEA,OAAO,SAASD,kBAAkBA,CAChCb,KAAe,EACfe,MAA6B,EAC7B;EACA,SAASC,aAAaA,CAACC,MAAa,EAAO;IACzC,OAAOA,MAAM,CACVC,MAAM,CACJJ,CAAC,IAAKA,CAAC,KAAK,IAAI,IAAId,KAAK,CAACM,KAAK,CAACa,IAAI,CAAEjB,IAAI,IAAKA,IAAI,CAACI,KAAK,KAAK,IAAI,CACrE,CAAC,CACAL,GAAG,CAAEa,CAAC,IAAK;MACV,MAAMM,KAAK,GAAGpB,KAAK,CAACM,KAAK,CAACe,IAAI,CAAEnB,IAAI,IAAKb,SAAS,CAACyB,CAAC,EAAEZ,IAAI,CAACI,KAAK,CAAC,CAAC;MAClE,OAAOc,KAAK,IAAIL,MAAM,CAACD,CAAC,CAAC;IAC3B,CAAC,CAAC;EACN;EAEA,SAASQ,WAAWA,CAACtB,KAAU,EAAE;IAC/B,OAAOA,KAAK,CAACC,GAAG,CAACsB,IAAA;MAAA,IAAC;QAAEjB;MAAM,CAAC,GAAAiB,IAAA;MAAA,OAAKjB,KAAK;IAAA,EAAC;EACxC;EAEA,OAAO;IACLN,KAAK;IACLsB,WAAW;IACXN;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"list-items.mjs","names":["computed","pressItemsPropsOptions","deepEqual","getPropertyFromItem","propsFactory","listItemsPropsOptions","itemKey","itemChildren","returnItem","Boolean","pressListItemsPropsOptions","refineListItems","props","items","ret","item","push","refineListItem","text","itemText","value","children","Array","isArray","undefined","raw","useItems","toRefineItems","values","filter","v","some","map","found","find","toEmitItems","_ref","_ref2"],"sources":["../../src/composables/list-items.ts"],"sourcesContent":["import type { ExtractPropTypes, Ref } from 'vue';\nimport { computed } from 'vue';\n\nimport { pressItemsPropsOptions } from '../abstract/items';\nimport { deepEqual, getPropertyFromItem } from '../util/common';\nimport { propsFactory } from '../util/vue-component';\n\nexport interface ListItem<T = any> {\n value: any;\n text: string;\n props: {\n [key: string]: any;\n value: any;\n text: string;\n };\n children?: ListItem<T>[];\n raw: T;\n}\n\nconst listItemsPropsOptions = {\n ...pressItemsPropsOptions({\n itemKey: 'value',\n itemChildren: false,\n }),\n returnItem: Boolean,\n};\n\ntype ListItemProps = ExtractPropTypes<typeof listItemsPropsOptions>;\n\nexport const pressListItemsPropsOptions = propsFactory(\n listItemsPropsOptions,\n 'list-items',\n);\n\nexport function refineListItems(\n props: Omit<ListItemProps, 'items'>,\n items: any[],\n) {\n const ret: ListItem[] = [];\n for (const item of items) {\n ret.push(refineListItem(props, item));\n }\n return ret;\n}\n\nexport function refineListItem(\n props: Omit<ListItemProps, 'items'>,\n item: any,\n): ListItem {\n const text = getPropertyFromItem(item, props.itemText, item);\n const value = props.returnItem\n ? item\n : getPropertyFromItem(item, props.itemKey, text);\n const children = getPropertyFromItem(item, props.itemChildren);\n\n return {\n value,\n text,\n props: {\n value,\n text,\n },\n children: Array.isArray(children)\n ? refineListItems(props, children)\n : undefined,\n raw: item,\n };\n}\n\nexport function useItems(props: ListItemProps) {\n const items = computed(() => refineListItems(props, props.items));\n\n function toRefineItems(values: any[]) {\n return values\n .filter(\n (v) => v !== null || items.value.some((item) => item.value === null),\n )\n .map((v) => {\n const found = items.value.find((item) => deepEqual(v, item.value));\n return found ?? refineListItem(props, v);\n });\n }\n\n function toEmitItems(items: any[]) {\n return props.returnItem\n ? items.map(({ raw }) => raw)\n : items.map(({ value }) => value);\n }\n\n return {\n items,\n toEmitItems,\n toRefineItems,\n };\n}\n"],"mappings":"AACA,SAASA,QAAQ,QAAQ,KAAK;AAAC,SAEtBC,sBAAsB;AAAA,SACtBC,SAAS,EAAEC,mBAAmB;AAAA,SAC9BC,YAAY;AAcrB,MAAMC,qBAAqB,GAAG;EAC5B,GAAGJ,sBAAsB,CAAC;IACxBK,OAAO,EAAE,OAAO;IAChBC,YAAY,EAAE;EAChB,CAAC,CAAC;EACFC,UAAU,EAAEC;AACd,CAAC;AAID,OAAO,MAAMC,0BAA0B,GAAGN,YAAY,CACpDC,qBAAqB,EACrB,YACF,CAAC;AAED,OAAO,SAASM,eAAeA,CAC7BC,KAAmC,EACnCC,KAAY,EACZ;EACA,MAAMC,GAAe,GAAG,EAAE;EAC1B,KAAK,MAAMC,IAAI,IAAIF,KAAK,EAAE;IACxBC,GAAG,CAACE,IAAI,CAACC,cAAc,CAACL,KAAK,EAAEG,IAAI,CAAC,CAAC;EACvC;EACA,OAAOD,GAAG;AACZ;AAEA,OAAO,SAASG,cAAcA,CAC5BL,KAAmC,EACnCG,IAAS,EACC;EACV,MAAMG,IAAI,GAAGf,mBAAmB,CAACY,IAAI,EAAEH,KAAK,CAACO,QAAQ,EAAEJ,IAAI,CAAC;EAC5D,MAAMK,KAAK,GAAGR,KAAK,CAACJ,UAAU,GAC1BO,IAAI,GACJZ,mBAAmB,CAACY,IAAI,EAAEH,KAAK,CAACN,OAAO,EAAEY,IAAI,CAAC;EAClD,MAAMG,QAAQ,GAAGlB,mBAAmB,CAACY,IAAI,EAAEH,KAAK,CAACL,YAAY,CAAC;EAE9D,OAAO;IACLa,KAAK;IACLF,IAAI;IACJN,KAAK,EAAE;MACLQ,KAAK;MACLF;IACF,CAAC;IACDG,QAAQ,EAAEC,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,GAC7BV,eAAe,CAACC,KAAK,EAAES,QAAQ,CAAC,GAChCG,SAAS;IACbC,GAAG,EAAEV;EACP,CAAC;AACH;AAEA,OAAO,SAASW,QAAQA,CAACd,KAAoB,EAAE;EAC7C,MAAMC,KAAK,GAAGb,QAAQ,CAAC,MAAMW,eAAe,CAACC,KAAK,EAAEA,KAAK,CAACC,KAAK,CAAC,CAAC;EAEjE,SAASc,aAAaA,CAACC,MAAa,EAAE;IACpC,OAAOA,MAAM,CACVC,MAAM,CACJC,CAAC,IAAKA,CAAC,KAAK,IAAI,IAAIjB,KAAK,CAACO,KAAK,CAACW,IAAI,CAAEhB,IAAI,IAAKA,IAAI,CAACK,KAAK,KAAK,IAAI,CACrE,CAAC,CACAY,GAAG,CAAEF,CAAC,IAAK;MACV,MAAMG,KAAK,GAAGpB,KAAK,CAACO,KAAK,CAACc,IAAI,CAAEnB,IAAI,IAAKb,SAAS,CAAC4B,CAAC,EAAEf,IAAI,CAACK,KAAK,CAAC,CAAC;MAClE,OAAOa,KAAK,IAAIhB,cAAc,CAACL,KAAK,EAAEkB,CAAC,CAAC;IAC1C,CAAC,CAAC;EACN;EAEA,SAASK,WAAWA,CAACtB,KAAY,EAAE;IACjC,OAAOD,KAAK,CAACJ,UAAU,GACnBK,KAAK,CAACmB,GAAG,CAACI,IAAA;MAAA,IAAC;QAAEX;MAAI,CAAC,GAAAW,IAAA;MAAA,OAAKX,GAAG;IAAA,EAAC,GAC3BZ,KAAK,CAACmB,GAAG,CAACK,KAAA;MAAA,IAAC;QAAEjB;MAAM,CAAC,GAAAiB,KAAA;MAAA,OAAKjB,KAAK;IAAA,EAAC;EACrC;EAEA,OAAO;IACLP,KAAK;IACLsB,WAAW;IACXR;EACF,CAAC;AACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuyeon",
3
- "version": "0.0.42-rc30",
3
+ "version": "0.0.42-rc31",
4
4
  "keywords": [
5
5
  "UI Library",
6
6
  "Vue"
@@ -166,14 +166,14 @@ export declare const pressYDialogPropsOptions: <Defaults extends {
166
166
  default: unknown extends Defaults["position"] ? "default" | "top" | "end" | "right" | "bottom" | "left" | "start" : NonNullable<"default" | "top" | "end" | "right" | "bottom" | "left" | "start"> | Defaults["position"];
167
167
  };
168
168
  align: unknown extends Defaults["align"] ? {
169
- type: PropType<"end" | "start" | "center">;
169
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
170
170
  default: string;
171
171
  } : Omit<{
172
- type: PropType<"end" | "start" | "center">;
172
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
173
173
  default: string;
174
174
  }, "type" | "default"> & {
175
- type: PropType<unknown extends Defaults["align"] ? "end" | "start" | "center" : NonNullable<"end" | "start" | "center"> | Defaults["align"]>;
176
- default: unknown extends Defaults["align"] ? "end" | "start" | "center" : NonNullable<"end" | "start" | "center"> | Defaults["align"];
175
+ type: PropType<unknown extends Defaults["align"] ? "top" | "end" | "bottom" | "start" | "center" : NonNullable<"top" | "end" | "bottom" | "start" | "center"> | Defaults["align"]>;
176
+ default: unknown extends Defaults["align"] ? "top" | "end" | "bottom" | "start" | "center" : NonNullable<"top" | "end" | "bottom" | "start" | "center"> | Defaults["align"];
177
177
  };
178
178
  origin: unknown extends Defaults["origin"] ? {
179
179
  type: StringConstructor;
@@ -318,7 +318,7 @@ export declare const YDialog: import("vue").DefineComponent<{
318
318
  default: string;
319
319
  };
320
320
  align: {
321
- type: PropType<"end" | "start" | "center">;
321
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
322
322
  default: string;
323
323
  };
324
324
  origin: {
@@ -370,7 +370,7 @@ export declare const YDialog: import("vue").DefineComponent<{
370
370
  default: string;
371
371
  };
372
372
  align: {
373
- type: PropType<"end" | "start" | "center">;
373
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
374
374
  default: string;
375
375
  };
376
376
  origin: {
@@ -2036,7 +2036,7 @@ export declare const YDialog: import("vue").DefineComponent<{
2036
2036
  default: string;
2037
2037
  };
2038
2038
  align: {
2039
- type: PropType<"end" | "start" | "center">;
2039
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
2040
2040
  default: string;
2041
2041
  };
2042
2042
  origin: {
@@ -2111,7 +2111,7 @@ export declare const YDialog: import("vue").DefineComponent<{
2111
2111
  closeDelay: number;
2112
2112
  coordinateStrategy: "levitation" | "arrangement" | import("../../composables/coordinate").CoordinateStrategyFn;
2113
2113
  position: "default" | "top" | "end" | "right" | "bottom" | "left" | "start";
2114
- align: "end" | "start" | "center";
2114
+ align: "top" | "end" | "bottom" | "start" | "center";
2115
2115
  origin: string;
2116
2116
  viewportMargin: number;
2117
2117
  transition: string | (import("vue").TransitionProps & {
@@ -2179,7 +2179,7 @@ export declare const YDialog: import("vue").DefineComponent<{
2179
2179
  default: string;
2180
2180
  };
2181
2181
  align: {
2182
- type: PropType<"end" | "start" | "center">;
2182
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
2183
2183
  default: string;
2184
2184
  };
2185
2185
  origin: {
@@ -2222,7 +2222,7 @@ export declare const YDialog: import("vue").DefineComponent<{
2222
2222
  closeDelay: number;
2223
2223
  coordinateStrategy: "levitation" | "arrangement" | import("../../composables/coordinate").CoordinateStrategyFn;
2224
2224
  position: "default" | "top" | "end" | "right" | "bottom" | "left" | "start";
2225
- align: "end" | "start" | "center";
2225
+ align: "top" | "end" | "bottom" | "start" | "center";
2226
2226
  origin: string;
2227
2227
  viewportMargin: number;
2228
2228
  transition: string | (import("vue").TransitionProps & {
@@ -82,14 +82,14 @@ export declare const pressYDropdownPropsOptions: <Defaults extends {
82
82
  default: unknown extends Defaults["position"] ? NonNullable<"default" | "top" | "end" | "right" | "bottom" | "left" | "start"> : Defaults["position"] | NonNullable<NonNullable<"default" | "top" | "end" | "right" | "bottom" | "left" | "start">>;
83
83
  };
84
84
  align: unknown extends Defaults["align"] ? {
85
- type: PropType<"end" | "start" | "center">;
85
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
86
86
  default: string;
87
87
  } : Omit<{
88
- type: PropType<"end" | "start" | "center">;
88
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
89
89
  default: string;
90
90
  }, "type" | "default"> & {
91
- type: PropType<unknown extends Defaults["align"] ? "end" | "start" | "center" : NonNullable<"end" | "start" | "center"> | Defaults["align"]>;
92
- default: unknown extends Defaults["align"] ? "end" | "start" | "center" : NonNullable<"end" | "start" | "center"> | Defaults["align"];
91
+ type: PropType<unknown extends Defaults["align"] ? "top" | "end" | "bottom" | "start" | "center" : NonNullable<"top" | "end" | "bottom" | "start" | "center"> | Defaults["align"]>;
92
+ default: unknown extends Defaults["align"] ? "top" | "end" | "bottom" | "start" | "center" : NonNullable<"top" | "end" | "bottom" | "start" | "center"> | Defaults["align"];
93
93
  };
94
94
  origin: unknown extends Defaults["origin"] ? {
95
95
  type: StringConstructor;
@@ -161,7 +161,7 @@ export declare const YDropdown: import("vue").DefineComponent<{
161
161
  default: NonNullable<"default" | "top" | "end" | "right" | "bottom" | "left" | "start">;
162
162
  };
163
163
  align: {
164
- type: PropType<"end" | "start" | "center">;
164
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
165
165
  default: string;
166
166
  };
167
167
  origin: {
@@ -207,7 +207,7 @@ export declare const YDropdown: import("vue").DefineComponent<{
207
207
  default: NonNullable<"default" | "top" | "end" | "right" | "bottom" | "left" | "start">;
208
208
  };
209
209
  align: {
210
- type: PropType<"end" | "start" | "center">;
210
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
211
211
  default: string;
212
212
  };
213
213
  origin: {
@@ -229,7 +229,7 @@ export declare const YDropdown: import("vue").DefineComponent<{
229
229
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
230
230
  }, {
231
231
  position: NonNullable<"default" | "top" | "end" | "right" | "bottom" | "left" | "start">;
232
- align: "end" | "start" | "center";
232
+ align: "top" | "end" | "bottom" | "start" | "center";
233
233
  origin: string;
234
234
  viewportMargin: number;
235
235
  items: any[];
@@ -72,14 +72,14 @@ export declare const pressYLayerProps: <Defaults extends {
72
72
  default: unknown extends Defaults["position"] ? "default" | "top" | "end" | "right" | "bottom" | "left" | "start" : NonNullable<"default" | "top" | "end" | "right" | "bottom" | "left" | "start"> | Defaults["position"];
73
73
  };
74
74
  align: unknown extends Defaults["align"] ? {
75
- type: PropType<"end" | "start" | "center">;
75
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
76
76
  default: string;
77
77
  } : Omit<{
78
- type: PropType<"end" | "start" | "center">;
78
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
79
79
  default: string;
80
80
  }, "type" | "default"> & {
81
- type: PropType<unknown extends Defaults["align"] ? "end" | "start" | "center" : NonNullable<"end" | "start" | "center"> | Defaults["align"]>;
82
- default: unknown extends Defaults["align"] ? "end" | "start" | "center" : NonNullable<"end" | "start" | "center"> | Defaults["align"];
81
+ type: PropType<unknown extends Defaults["align"] ? "top" | "end" | "bottom" | "start" | "center" : NonNullable<"top" | "end" | "bottom" | "start" | "center"> | Defaults["align"]>;
82
+ default: unknown extends Defaults["align"] ? "top" | "end" | "bottom" | "start" | "center" : NonNullable<"top" | "end" | "bottom" | "start" | "center"> | Defaults["align"];
83
83
  };
84
84
  origin: unknown extends Defaults["origin"] ? {
85
85
  type: StringConstructor;
@@ -258,7 +258,7 @@ export declare const YLayer: import("vue").DefineComponent<{
258
258
  default: string;
259
259
  };
260
260
  align: {
261
- type: PropType<"end" | "start" | "center">;
261
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
262
262
  default: string;
263
263
  };
264
264
  origin: {
@@ -1924,7 +1924,7 @@ export declare const YLayer: import("vue").DefineComponent<{
1924
1924
  default: string;
1925
1925
  };
1926
1926
  align: {
1927
- type: PropType<"end" | "start" | "center">;
1927
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
1928
1928
  default: string;
1929
1929
  };
1930
1930
  origin: {
@@ -1999,7 +1999,7 @@ export declare const YLayer: import("vue").DefineComponent<{
1999
1999
  closeDelay: number;
2000
2000
  coordinateStrategy: "levitation" | "arrangement" | import("../../composables/coordinate").CoordinateStrategyFn;
2001
2001
  position: "default" | "top" | "end" | "right" | "bottom" | "left" | "start";
2002
- align: "end" | "start" | "center";
2002
+ align: "top" | "end" | "bottom" | "start" | "center";
2003
2003
  origin: string;
2004
2004
  viewportMargin: number;
2005
2005
  transition: string | (import("vue").TransitionProps & {
@@ -19,7 +19,7 @@ export declare const YMenuPropOptions: {
19
19
  default: string;
20
20
  };
21
21
  align: {
22
- type: PropType<"end" | "start" | "center">;
22
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
23
23
  default: string;
24
24
  };
25
25
  origin: {
@@ -126,7 +126,7 @@ export declare const YMenu: import("vue").DefineComponent<{
126
126
  default: string;
127
127
  };
128
128
  align: {
129
- type: PropType<"end" | "start" | "center">;
129
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
130
130
  default: string;
131
131
  };
132
132
  origin: {
@@ -214,7 +214,7 @@ export declare const YMenu: import("vue").DefineComponent<{
214
214
  default: string;
215
215
  };
216
216
  align: {
217
- type: PropType<"end" | "start" | "center">;
217
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
218
218
  default: string;
219
219
  };
220
220
  origin: {
@@ -1880,7 +1880,7 @@ export declare const YMenu: import("vue").DefineComponent<{
1880
1880
  default: string;
1881
1881
  };
1882
1882
  align: {
1883
- type: PropType<"end" | "start" | "center">;
1883
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
1884
1884
  default: string;
1885
1885
  };
1886
1886
  origin: {
@@ -1955,7 +1955,7 @@ export declare const YMenu: import("vue").DefineComponent<{
1955
1955
  closeDelay: number;
1956
1956
  coordinateStrategy: "levitation" | "arrangement" | import("../../composables/coordinate").CoordinateStrategyFn;
1957
1957
  position: "default" | "top" | "end" | "right" | "bottom" | "left" | "start";
1958
- align: "end" | "start" | "center";
1958
+ align: "top" | "end" | "bottom" | "start" | "center";
1959
1959
  origin: string;
1960
1960
  viewportMargin: number;
1961
1961
  transition: string | (import("vue").TransitionProps & {
@@ -1999,7 +1999,7 @@ export declare const YMenu: import("vue").DefineComponent<{
1999
1999
  default: string;
2000
2000
  };
2001
2001
  align: {
2002
- type: PropType<"end" | "start" | "center">;
2002
+ type: PropType<"top" | "end" | "bottom" | "start" | "center">;
2003
2003
  default: string;
2004
2004
  };
2005
2005
  origin: {
@@ -2081,7 +2081,7 @@ export declare const YMenu: import("vue").DefineComponent<{
2081
2081
  closeDelay: number;
2082
2082
  coordinateStrategy: string | import("../../composables/coordinate").CoordinateStrategyFn;
2083
2083
  position: "default" | "top" | "end" | "right" | "bottom" | "left" | "start";
2084
- align: "end" | "start" | "center";
2084
+ align: "top" | "end" | "bottom" | "start" | "center";
2085
2085
  origin: string;
2086
2086
  viewportMargin: number;
2087
2087
  transition: string | (import("vue").TransitionProps & {
@@ -85,8 +85,8 @@ export declare const pressYPaginationProps: <Defaults extends {
85
85
  type: PropType<"end" | "start" | "center">;
86
86
  default: string;
87
87
  }, "type" | "default"> & {
88
- type: PropType<unknown extends Defaults["align"] ? "end" | "start" | "center" : NonNullable<"end" | "start" | "center"> | Defaults["align"]>;
89
- default: unknown extends Defaults["align"] ? "end" | "start" | "center" : NonNullable<"end" | "start" | "center"> | Defaults["align"];
88
+ type: PropType<unknown extends Defaults["align"] ? "end" | "start" | "center" : Defaults["align"] | NonNullable<"end" | "start" | "center">>;
89
+ default: unknown extends Defaults["align"] ? "end" | "start" | "center" : Defaults["align"] | NonNullable<"end" | "start" | "center">;
90
90
  };
91
91
  };
92
92
  export declare const YPagination: import("vue").DefineComponent<{