yuyeon 0.0.42-rc15 → 0.0.42-rc16
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.
- package/dist/yuyeon.js +2632 -2678
- package/dist/yuyeon.umd.cjs +6 -6
- package/lib/components/field-input/YFieldInput.mjs +1 -1
- package/lib/components/field-input/YFieldInput.mjs.map +1 -1
- package/lib/components/input/YInput.mjs +170 -311
- package/lib/components/input/YInput.mjs.map +1 -1
- package/lib/components/select/YSelect.mjs +7 -3
- package/lib/components/select/YSelect.mjs.map +1 -1
- package/lib/components/textarea/YTextarea.mjs +1 -1
- package/lib/components/textarea/YTextarea.mjs.map +1 -1
- package/lib/composables/communication.mjs.map +1 -1
- package/lib/composables/icon.mjs +23 -3
- package/lib/composables/icon.mjs.map +1 -1
- package/lib/composables/validation.mjs +100 -0
- package/lib/composables/validation.mjs.map +1 -0
- package/package.json +1 -1
- package/types/components/date-picker/YDateCalendar.d.ts +9 -3
- package/types/components/dialog/YDialog.d.ts +3 -1
- package/types/components/field-input/YFieldInput.d.ts +86 -42
- package/types/components/input/YInput.d.ts +88 -84
- package/types/components/pagination/YPagination.d.ts +3 -1
- package/types/components/select/YSelect.d.ts +87 -43
- package/types/components/snackbar/YSnackbar.d.ts +3 -1
- package/types/components/table/composibles/pagination.d.ts +6 -2
- package/types/components/table/composibles/sorting.d.ts +3 -1
- package/types/components/textarea/YTextarea.d.ts +130 -215
- package/types/composables/communication.d.ts +7 -2
- package/types/composables/focus.d.ts +3 -1
- package/types/composables/icon.d.ts +1 -1
- package/types/composables/validation.d.ts +70 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YInput.mjs","names":["defineComponent","h","pressFocusPropsOptions","useFocus","pressThemePropsOptions","useLocalTheme","getSlot","propsFactory","NAME","uidCounter","pressYInputPropsOptions","name","String","width","type","Number","height","displayTag","default","label","modelValue","Array","Object","autoSelect","Boolean","floating","floated","placeholder","required","loading","variation","outlined","filled","ceramic","readonly","disabled","status","validator","value","includes","validators","YInput","props","emits","slots","data","iid","toString","lazyValue","undefined","inValue","hasMouseDown","errorResult","inError","computed","classes","variations","isFocused","isError","isSuccess","themeClasses","displayStyles","isNaN","getDisplayHeight","attrId","$attrs","id","isFloatedLabel","formLoading","split","map","trim","methods","createPrepend","slot","class","createAppend","createLabelSlot","createLabel","show","createDefaultChildren","createDefault","slotContent","onFocus","onBlur","createLeading","error","onClick","onClickLeading","createTrailing","createDisplay","onMousedown","onMouseup","ref","style","createHelperText","helperTextSlot","children","push","createStackChildren","createStack","createContent","event","$emit","e","whenFocus","whenBlur","invokeValidators","onChange","resetError","flag","isArray","some","result","getClasses","watch","neo","focused","created","setup","focusedClasses","render"],"sources":["../../../src/components/input/YInput.ts"],"sourcesContent":["import {\r\n PropType,\r\n VNode,\r\n defineComponent,\r\n h,\r\n resolveDirective,\r\n withDirectives, SlotsType,\r\n} from 'vue';\r\n\r\nimport { pressFocusPropsOptions, useFocus } from '../../composables/focus';\r\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\r\nimport DiMixin from '../../mixins/di';\r\nimport { getSlot, propsFactory } from '../../util/vue-component';\r\n\r\nimport './YInput.scss';\r\n\r\nconst NAME = 'y-input';\r\nlet uidCounter = 0;\r\n\r\nexport const pressYInputPropsOptions = propsFactory(\r\n {\r\n name: String,\r\n width: {\r\n type: [String, Number] as PropType<string | number>,\r\n },\r\n height: [Number, String],\r\n displayTag: {\r\n type: String as PropType<string>,\r\n default: 'div',\r\n },\r\n label: String as PropType<string>,\r\n modelValue: { type: [String, Number, Array, Object] as PropType<any> },\r\n autoSelect: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n floating: { type: Boolean as PropType<boolean>, default: false },\r\n floated: { type: Boolean as PropType<boolean>, default: () => false },\r\n placeholder: String as PropType<string>,\r\n required: Boolean as PropType<boolean>,\r\n loading: Boolean as PropType<boolean>,\r\n // variations\r\n variation: String as PropType<string>,\r\n outlined: Boolean as PropType<boolean>,\r\n filled: Boolean as PropType<boolean>,\r\n ceramic: Boolean as PropType<boolean>,\r\n // validate\r\n readonly: Boolean as PropType<boolean>,\r\n disabled: Boolean as PropType<boolean>,\r\n status: {\r\n type: String as PropType<'success' | 'warning' | 'error' | undefined>,\r\n validator(value: string) {\r\n return ['success', 'warning', 'error'].includes(value);\r\n },\r\n },\r\n validators: Array as PropType<((v: any) => boolean | string)[] | string[]>,\r\n ...pressFocusPropsOptions(),\r\n },\r\n 'YInput',\r\n);\r\n\r\nexport const YInput = defineComponent({\r\n name: 'YInput',\r\n props: {\r\n ...pressThemePropsOptions(),\r\n ...pressYInputPropsOptions(),\r\n },\r\n emits: [\r\n 'error',\r\n 'click',\r\n 'mousedown',\r\n 'mouseup',\r\n 'focus',\r\n 'blur',\r\n 'mousedown:display',\r\n 'mouseup:display',\r\n 'click:leading',\r\n 'update:modelValue',\r\n 'update:focused',\r\n ],\r\n slots: Object as SlotsType<{\r\n prepend: any,\r\n append: any,\r\n label: any,\r\n default: { value: any, formLoading: boolean, attrId: string },\r\n leading: { error: boolean },\r\n trailing: any,\r\n 'helper-text': { error: boolean, errorResult: string | undefined }\r\n }>,\r\n data() {\r\n const iid = uidCounter.toString();\r\n uidCounter += 1;\r\n return {\r\n iid,\r\n lazyValue: undefined as string | undefined,\r\n inValue: '' as string | number | undefined,\r\n hasMouseDown: false,\r\n errorResult: undefined as string | undefined,\r\n inError: false,\r\n };\r\n },\r\n computed: {\r\n classes(): Record<string, boolean> {\r\n return {\r\n 'y-input--ceramic': !!this.ceramic,\r\n 'y-input--outlined':\r\n !this.ceramic &&\r\n (this.variations.includes('outlined') || !!this.outlined),\r\n 'y-input--filled': this.variations.includes('filled') || !!this.filled,\r\n 'y-input--focused': this.isFocused,\r\n 'y-input--readonly': !!this.readonly,\r\n 'y-input--has-value': !!this.inValue,\r\n 'y-input--disabled': !!this.disabled,\r\n 'y-input--error': this.isError,\r\n 'y-input--success': this.isSuccess,\r\n [this.themeClasses as string]: true,\r\n };\r\n },\r\n displayStyles(): Record<string, any> {\r\n let { width } = this;\r\n if (!Number.isNaN(Number(width))) {\r\n width = `${width}px`;\r\n }\r\n return {\r\n width,\r\n height: this.getDisplayHeight(),\r\n };\r\n },\r\n attrId(): string {\r\n return (this.$attrs.id as string) ?? `y-input--${this.iid}`;\r\n },\r\n isFloatedLabel(): boolean {\r\n return (\r\n this.floated ||\r\n !!this.placeholder ||\r\n (!this.placeholder && this.isFocused) ||\r\n !!this.inValue\r\n );\r\n },\r\n formLoading(): boolean {\r\n // TODO: composable `form` binding\r\n // const form$ = (this as any)?.form$ as any;\r\n // if (form$) {\r\n // return form$.loading;\r\n // }\r\n return false;\r\n },\r\n isError(): boolean {\r\n return this.status === 'error' || this.inError;\r\n },\r\n isSuccess(): boolean {\r\n return !this.isError && this.status === 'success';\r\n },\r\n variations(): string[] {\r\n const { variation } = this;\r\n if (variation) {\r\n return variation.split(',').map((value) => {\r\n return value.trim();\r\n });\r\n }\r\n return [];\r\n },\r\n },\r\n methods: {\r\n createPrepend(): VNode | undefined {\r\n const slot = getSlot(this, 'prepend');\r\n return slot ? h('div', { class: `${NAME}__prepend` }, slot) : undefined;\r\n },\r\n createAppend(): VNode | undefined {\r\n const slot = getSlot(this, 'append');\r\n return slot ? h('div', { class: `${NAME}__append` }, slot) : undefined;\r\n },\r\n createLabelSlot(): (VNode | string | VNode[] | undefined)[] {\r\n const slot: VNode[] | undefined = getSlot(this, 'label');\r\n if (!slot) {\r\n if (this.label) {\r\n return [\r\n this.label,\r\n this.required ? h('span', { class: 'y-input__required-mark' }, '*') : undefined,\r\n ];\r\n }\r\n if (this.placeholder && !this.inValue) {\r\n return [this.placeholder];\r\n }\r\n }\r\n\r\n return slot ? [slot] : [];\r\n },\r\n createLabel(): VNode | undefined {\r\n const show = !!this.label || !!getSlot(this, 'label');\r\n if (!show) {\r\n return undefined;\r\n }\r\n return h(\r\n 'label',\r\n {\r\n class: {\r\n [`${NAME}__label`]: true,\r\n 'y-input__floating-label': this.floating,\r\n 'y-input__floating-label--floated':\r\n this.floating && this.isFloatedLabel,\r\n },\r\n '.for': this.attrId,\r\n },\r\n this.createLabelSlot(),\r\n );\r\n },\r\n createDefaultChildren(): (VNode | undefined | VNode[] | string)[] {\r\n const { modelValue } = this;\r\n return [\r\n this.floating ? this.createLabel() : undefined,\r\n modelValue?.toString(),\r\n ];\r\n },\r\n createDefault(): VNode[] | VNode {\r\n const { modelValue, formLoading, attrId } = this;\r\n const slotContent = getSlot(this, 'default', {\r\n value: modelValue,\r\n formLoading,\r\n attrId,\r\n });\r\n return (\r\n slotContent ??\r\n h(\r\n 'div',\r\n {\r\n [`.${NAME}__value`]: true,\r\n '.data-id': this.attrId,\r\n '.tabindex': 0,\r\n onFocus: this.onFocus,\r\n onBlur: this.onBlur,\r\n },\r\n this.createDefaultChildren(),\r\n )\r\n );\r\n },\r\n createLeading(): VNode | undefined {\r\n const slot = getSlot(this, 'leading', { error: this.isError });\r\n return slot\r\n ? h(\r\n 'div',\r\n {\r\n class: 'y-input__leading',\r\n onClick: this.onClickLeading,\r\n },\r\n slot,\r\n )\r\n : undefined;\r\n },\r\n createTrailing(): VNode | VNode[] | undefined {\r\n return getSlot(this, 'trailing');\r\n },\r\n getDisplayHeight() {\r\n const { height } = this;\r\n if (!isNaN(Number(height))) {\r\n return `${height}px`;\r\n }\r\n return height;\r\n },\r\n createDisplay(): VNode {\r\n return h(\r\n 'div',\r\n {\r\n class: {\r\n [`${NAME}__display`]: true,\r\n },\r\n onClick: this.onClick,\r\n onMousedown: this.onMousedown,\r\n onMouseup: this.onMouseup,\r\n ref: 'display',\r\n style: {\r\n ...this.displayStyles,\r\n },\r\n },\r\n [\r\n h('div', { class: `${NAME}__plate` }),\r\n this.createLeading(),\r\n this.createDefault(),\r\n this.createTrailing(),\r\n ],\r\n );\r\n },\r\n createHelperText(): VNode {\r\n const helperTextSlot = getSlot(this, 'helper-text', {\r\n error: this.status === 'error' || this.inError,\r\n errorResult: this.errorResult,\r\n });\r\n const children = [];\r\n if (helperTextSlot) {\r\n children.push(h('span', {}, helperTextSlot));\r\n } else {\r\n children.push(this.errorResult);\r\n }\r\n return h('div', { class: `${NAME}__helper-text` }, children);\r\n },\r\n createStackChildren(): (VNode | undefined)[] {\r\n return [\r\n !this.floating ? this.createLabel() : undefined,\r\n this.createDisplay(),\r\n this.createHelperText(),\r\n ];\r\n },\r\n createStack(): VNode {\r\n return h(\r\n 'div',\r\n {\r\n class: `${NAME}__stack`,\r\n ref: 'stack',\r\n },\r\n this.createStackChildren(),\r\n );\r\n },\r\n createContent(): (VNode | undefined)[] {\r\n return [this.createPrepend(), this.createStack(), this.createAppend()];\r\n },\r\n //\r\n onClick(event: MouseEvent) {\r\n this.$emit('click', event);\r\n },\r\n onMousedown(e: Event) {\r\n this.hasMouseDown = true;\r\n this.$emit('mousedown:display', e);\r\n },\r\n onMouseup(e: Event) {\r\n this.hasMouseDown = false;\r\n this.$emit('mouseup:display', e);\r\n },\r\n onFocus(event: FocusEvent) {\r\n this.whenFocus();\r\n this.$emit('focus', event);\r\n },\r\n onBlur(event: FocusEvent) {\r\n this.whenBlur();\r\n this.invokeValidators();\r\n this.$emit('blur', event);\r\n },\r\n onClickLeading(event: MouseEvent) {\r\n this.$emit('click:leading', event);\r\n },\r\n onChange(event?: Event) {\r\n this.invokeValidators();\r\n },\r\n //\r\n invokeValidators(): boolean {\r\n const { validators, inValue, $attrs } = this;\r\n const { required } = $attrs;\r\n this.resetError();\r\n let flag = true;\r\n if (Array.isArray(validators)) {\r\n validators.some((validator: any) => {\r\n const result = validator(inValue);\r\n if (typeof result === 'string') {\r\n this.inError = true;\r\n this.errorResult = result;\r\n flag = false;\r\n return true;\r\n }\r\n if (result === false) {\r\n this.inError = true;\r\n this.errorResult = '';\r\n flag = false;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n if (flag && required && !inValue) {\r\n this.inError = true;\r\n return false;\r\n }\r\n return flag;\r\n },\r\n resetError() {\r\n this.inError = false;\r\n this.errorResult = undefined;\r\n },\r\n getClasses() {\r\n return this.classes;\r\n },\r\n },\r\n watch: {\r\n modelValue(neo: string) {\r\n this.inValue = neo;\r\n },\r\n readonly(neo: boolean) {\r\n if (!neo) {\r\n this.inValue = this.modelValue;\r\n }\r\n },\r\n inValue(neo: string) {\r\n if (!this.readonly) {\r\n this.$emit('update:modelValue', neo);\r\n }\r\n },\r\n isError(neo: boolean) {\r\n this.$emit('error', neo);\r\n },\r\n focused(neo: boolean) {\r\n if (!neo) {\r\n this.invokeValidators();\r\n }\r\n }\r\n },\r\n created() {\r\n this.inValue = this.modelValue;\r\n },\r\n setup(props) {\r\n const { themeClasses } = useLocalTheme(props);\r\n const {\r\n focused: isFocused,\r\n focusedClasses,\r\n whenFocus,\r\n whenBlur,\r\n } = useFocus(props, 'y-input');\r\n return {\r\n themeClasses,\r\n isFocused,\r\n focusedClasses,\r\n whenFocus,\r\n whenBlur,\r\n };\r\n },\r\n render(): VNode {\r\n return h(\r\n 'div',\r\n {\r\n class: { ...this.getClasses(), [`${NAME}`]: true },\r\n },\r\n this.createContent(),\r\n );\r\n },\r\n});\r\n\r\nexport type YInput = InstanceType<typeof YInput>;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YInput.mjs","names":["computed","defineComponent","ref","shallowRef","watch","useRender","pressFocusPropsOptions","useFocus","pressThemePropsOptions","useLocalTheme","pressValidationPropsOptions","useValidation","getUid","toStyleSizeValue","propsFactory","NAME","uidCounter","pressYInputPropsOptions","name","String","width","type","Number","height","displayTag","default","label","modelValue","Array","Object","autoSelect","Boolean","floating","floated","placeholder","required","loading","variation","outlined","filled","ceramic","YInput","props","emits","slots","setup","_ref","attrs","expose","emit","UID","themeClasses","focused","isFocused","focusedClasses","whenFocus","whenBlur","invokeValidators","isError","isSuccess","errorResult","stack$","display$","inValue","lazyValue","hasMouseDown","variations","split","map","value","trim","isFloatedLabel","classes","includes","readonly","disabled","displayStyles","formLoading","neo","onClick","event","onMousedown","e","onMouseup","onFocus","onBlur","onClickLeading","onChange","createLabel","show","undefined","_createVNode","_Fragment","_createTextVNode","prepend","leading","error","attrId","toString","trailing","append"],"sources":["../../../src/components/input/YInput.tsx"],"sourcesContent":["import {\n PropType,\n SlotsType,\n VNode,\n computed,\n defineComponent,\n ref,\n shallowRef,\n watch,\n} from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { pressFocusPropsOptions, useFocus } from '../../composables/focus';\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\nimport {\n pressValidationPropsOptions,\n useValidation,\n} from '../../composables/validation';\nimport { getUid, toStyleSizeValue } from '../../util';\nimport { propsFactory } from '../../util/vue-component';\n\nimport './YInput.scss';\n\nconst NAME = 'y-input';\nlet uidCounter = 0;\n\nexport const pressYInputPropsOptions = propsFactory(\n {\n name: String,\n width: {\n type: [String, Number] as PropType<string | number>,\n },\n height: [Number, String],\n displayTag: {\n type: String as PropType<string>,\n default: 'div',\n },\n label: String as PropType<string>,\n modelValue: { type: [String, Number, Array, Object] as PropType<any> },\n autoSelect: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n floating: { type: Boolean as PropType<boolean>, default: false },\n floated: { type: Boolean as PropType<boolean>, default: () => false },\n placeholder: String as PropType<string>,\n required: Boolean as PropType<boolean>,\n loading: Boolean as PropType<boolean>,\n // variations\n variation: String as PropType<string>,\n outlined: Boolean as PropType<boolean>,\n filled: Boolean as PropType<boolean>,\n ceramic: Boolean as PropType<boolean>,\n // validate\n ...pressValidationPropsOptions(),\n ...pressFocusPropsOptions(),\n },\n 'YInput',\n);\n\nexport const YInput = defineComponent({\n name: 'YInput',\n props: {\n ...pressThemePropsOptions(),\n ...pressYInputPropsOptions(),\n },\n emits: [\n 'error',\n 'click',\n 'mousedown',\n 'mouseup',\n 'focus',\n 'blur',\n 'mousedown:display',\n 'mouseup:display',\n 'click:leading',\n 'update:modelValue',\n 'update:focused',\n ],\n slots: Object as SlotsType<{\n prepend: any;\n append: any;\n label: any;\n default: { value: any; formLoading: boolean; attrId: string };\n leading: { error: boolean };\n trailing: any;\n 'helper-text': { error: boolean; errorResult: string | undefined };\n }>,\n setup(props, { slots, attrs, expose, emit }) {\n const UID = getUid();\n const { themeClasses } = useLocalTheme(props);\n const {\n focused: isFocused,\n focusedClasses,\n whenFocus,\n whenBlur,\n } = useFocus(props, 'y-input');\n\n const { invokeValidators, isError, isSuccess, errorResult } = useValidation(\n props,\n NAME,\n UID,\n );\n\n const stack$ = ref();\n const display$ = ref();\n\n const inValue = ref();\n const lazyValue = ref();\n const hasMouseDown = shallowRef(false);\n\n const variations = computed(() => {\n if (props.variation) {\n return props.variation.split(',').map((value) => {\n return value.trim();\n });\n }\n return [];\n });\n\n const isFloatedLabel = computed(() => {\n return (\n props.floated ||\n !!props.placeholder ||\n (!props.placeholder && isFocused.value) ||\n !!inValue.value\n );\n });\n\n const classes = computed(() => {\n return {\n 'y-input--ceramic': !!props.ceramic,\n 'y-input--outlined':\n !props.ceramic &&\n (variations.value.includes('outlined') || !!props.outlined),\n 'y-input--filled':\n variations.value.includes('filled') || !!props.filled,\n 'y-input--focused': isFocused.value,\n 'y-input--readonly': !!props.readonly,\n 'y-input--has-value': !!inValue.value,\n 'y-input--disabled': !!props.disabled,\n 'y-input--error': isError.value,\n 'y-input--success': isSuccess.value,\n [themeClasses.value as string]: true,\n };\n });\n\n const displayStyles = computed<Record<string, any>>(() => {\n return {\n width: toStyleSizeValue(props.width),\n height: toStyleSizeValue(props.height),\n };\n });\n\n const formLoading = computed(() => {\n // TODO: composable `form` binding\n // const form$ = (this as any)?.form$ as any;\n // if (form$) {\n // return form$.loading;\n // }\n return false;\n });\n\n watch(\n () => props.modelValue,\n (neo) => {\n inValue.value = neo;\n },\n );\n\n watch(\n () => props.readonly,\n (neo) => {\n if (!neo) {\n inValue.value = props.modelValue;\n }\n },\n );\n\n watch(inValue, (neo) => {\n if (!props.readonly) {\n emit('update:modelValue', neo);\n }\n });\n\n watch(isError, (neo) => {\n emit('error', neo);\n });\n\n watch(\n () => props.focused,\n (neo) => {\n if (!neo) {\n invokeValidators();\n }\n },\n );\n\n function onClick(event: MouseEvent) {\n emit('click', event);\n }\n\n function onMousedown(e: Event) {\n hasMouseDown.value = true;\n emit('mousedown:display', e);\n }\n\n function onMouseup(e: Event) {\n hasMouseDown.value = false;\n emit('mouseup:display', e);\n }\n\n function onFocus(event: FocusEvent) {\n whenFocus();\n emit('focus', event);\n }\n\n function onBlur(event: FocusEvent) {\n whenBlur();\n invokeValidators();\n emit('blur', event);\n }\n\n function onClickLeading(event: MouseEvent) {\n emit('click:leading', event);\n }\n\n function onChange(event?: Event) {\n invokeValidators();\n }\n\n function createLabel(): VNode | undefined {\n const show = !!props.label || !!slots.label;\n if (!show) {\n return undefined;\n }\n return (\n <label\n class={[\n {\n [`${NAME}__label`]: true,\n 'y-input__floating-label': props.floating,\n 'y-input__floating-label--floated':\n props.floating && isFloatedLabel.value,\n },\n ]}\n for={`y-input--${UID}`}\n >\n {slots.label ? (\n slots.label()\n ) : props.label ? (\n <>\n {props.label}\n {props.required && (\n <span class={'y-input__required-mark'}>*</span>\n )}\n </>\n ) : (\n props.placeholder && !inValue.value && props.placeholder\n )}\n </label>\n );\n }\n\n expose({\n createLabel,\n });\n\n useRender(() => {\n return (\n <div class={[`${NAME}`, { ...classes.value }]}>\n {slots.prepend\n ? () => <div class={`${NAME}__prepend`}>slots.prepend()</div>\n : undefined}\n <div ref={stack$} class={[`${NAME}__stack`]}>\n {!props.floating && createLabel()}\n <div\n ref={display$}\n class={`${NAME}__display`}\n style={[{ ...displayStyles.value }]}\n onClick={onClick}\n onMousedown={onMousedown}\n onMouseup={onMouseup}\n >\n <div class={`${NAME}__plate`}></div>\n {slots.leading && (\n <div class={'y-input__leading'} onClick={onClickLeading}>\n {slots.leading({ error: isError.value })}\n </div>\n )}\n {slots.default ? (\n slots.default({\n value: props.modelValue,\n formLoading: formLoading.value,\n attrId: `y-input--${UID}`,\n })\n ) : (\n <div\n class={`${NAME}__value`}\n data-id={`y-input--${UID}`}\n tabindex={0}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n {props.floating && createLabel()}\n {props.modelValue?.toString()}\n </div>\n )}\n {slots.trailing?.()}\n </div>\n <div class={`${NAME}__helper-text`}>\n {slots['helper-text'] ? (\n <span>\n {slots['helper-text']({\n error: isError.value,\n errorResult: errorResult.value,\n })}\n </span>\n ) : (\n errorResult.value\n )}\n </div>\n </div>\n {slots.append\n ? () => <div class={`${NAME}__append`}>slots.append()</div>\n : undefined}\n </div>\n );\n });\n\n return {\n themeClasses,\n isFocused,\n focusedClasses,\n whenFocus,\n whenBlur,\n createLabel,\n };\n },\n});\n\nexport type YInput = InstanceType<typeof YInput>;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
|
2
2
|
import { shallowRef } from '@vue/runtime-core';
|
|
3
|
+
import { nextTick } from 'vue';
|
|
3
4
|
import { computed, defineComponent, mergeProps, onMounted, ref } from 'vue';
|
|
4
5
|
import { useModelDuplex } from "../../composables/communication.mjs";
|
|
5
6
|
import { useRender } from "../../composables/component.mjs";
|
|
@@ -127,11 +128,13 @@ export const YSelect = defineComponent({
|
|
|
127
128
|
function onClickItem(item, e) {
|
|
128
129
|
select(item);
|
|
129
130
|
if (!props.multiple) {
|
|
130
|
-
|
|
131
|
+
nextTick(() => {
|
|
132
|
+
opened.value = false;
|
|
133
|
+
});
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
136
|
function onAfterLeave() {
|
|
134
|
-
if (focused.value) {
|
|
137
|
+
if (!focused.value) {
|
|
135
138
|
fieldInputRef.value?.focus();
|
|
136
139
|
}
|
|
137
140
|
}
|
|
@@ -196,6 +199,7 @@ export const YSelect = defineComponent({
|
|
|
196
199
|
ref: fieldInputRef
|
|
197
200
|
})
|
|
198
201
|
}, {
|
|
202
|
+
"validationValue": model.rxValue,
|
|
199
203
|
"onMousedown:display": onMousedownDisplay,
|
|
200
204
|
"onBlur": onBlur,
|
|
201
205
|
"readonly": true,
|
|
@@ -203,7 +207,7 @@ export const YSelect = defineComponent({
|
|
|
203
207
|
'y-select--opened': opened.value
|
|
204
208
|
}]
|
|
205
209
|
}, attrs, {
|
|
206
|
-
"focused":
|
|
210
|
+
"focused": focused.value
|
|
207
211
|
}), {
|
|
208
212
|
default: () => {
|
|
209
213
|
return _createVNode("div", {
|
|
@@ -1 +1 @@
|
|
|
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","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","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 { 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 opened.value = false;\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$.value) {\n return (event.target as HTMLElement)?.contains(\n (menuRef.value as any)?.layer$?.content$.value,\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 onMousedown:display={onMousedownDisplay}\n onBlur={onBlur}\n readonly\n class={['y-select', { 'y-select--opened': opened.value }]}\n {...attrs}\n focused={opened.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","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$.value) {\n return (event.target as HTMLElement)?.contains(\n (menuRef.value as any)?.layer$?.content$.value,\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 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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"}
|
|
@@ -134,7 +134,7 @@ export const YTextarea = defineComponent({
|
|
|
134
134
|
"class": [`${CLASS_NAME}__field`],
|
|
135
135
|
"data-id": defaultProps.attrId,
|
|
136
136
|
"ref": 'field'
|
|
137
|
-
}, [props.floating ? el$.value
|
|
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
140
|
"id": `y-input--${UID}`
|
|
@@ -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","methods","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 &&\r\n YInput.methods!.createLabel.call(el$.value)\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","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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communication.mjs","names":["computed","getCurrentInstance","ref","toRaw","watch","hasOwnProperty","kebabToCamel","toKebabCase","useToggleScope","useModelDuplex","props","prop","arguments","length","undefined","defaultValue","getIn","v","setOut","vm","kebabProp","property","txValue","getProp","isDefinedProp","registeredProps","vnode","value","model","get","set","neo","current","emit","Object","defineProperty","useProvided","provided","internal"],"sources":["../../src/composables/communication.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, toRaw, watch } from 'vue';\r\nimport type { Ref } from 'vue';\r\n\r\nimport { hasOwnProperty } from '../util/common';\r\nimport { kebabToCamel, toKebabCase } from '../util/string';\r\nimport { useToggleScope } from './scope';\r\n\r\nexport function useModelDuplex(\r\n props: any,\r\n prop: string = 'modelValue',\r\n defaultValue?: any,\r\n getIn: (value?: any) => any = (v: any) => v,\r\n setOut: (value: any) => any = (v: any) => v,\r\n) {\r\n const vm = getCurrentInstance()!;\r\n const kebabProp = toKebabCase(prop);\r\n const property = kebabProp === prop ? kebabToCamel(prop) : prop;\r\n const txValue = ref(\r\n props[property] !== undefined ? props[property] : defaultValue,\r\n );\r\n\r\n function getProp() {\r\n return props[property];\r\n }\r\n\r\n const isDefinedProp = computed(() => {\r\n getProp();\r\n const registeredProps = vm.vnode.props;\r\n return (\r\n (hasOwnProperty(registeredProps, kebabProp) ||\r\n hasOwnProperty(registeredProps, property)) &&\r\n (hasOwnProperty(registeredProps, `onUpdate:${kebabProp}`) ||\r\n hasOwnProperty(registeredProps, `onUpdate:${property}`))\r\n );\r\n });\r\n\r\n useToggleScope(\r\n () => !isDefinedProp.value,\r\n () => {\r\n watch(\r\n () => getProp(),\r\n (value) => {\r\n txValue.value = value;\r\n },\r\n );\r\n },\r\n );\r\n\r\n const model = computed({\r\n get(): any {\r\n return getIn(isDefinedProp.value ? getProp() : txValue.value);\r\n },\r\n set(value) {\r\n const neo = setOut(value);\r\n const current = toRaw(isDefinedProp.value ? getProp() : txValue.value);\r\n if (current === neo || getIn(current) === value) {\r\n return;\r\n }\r\n txValue.value = neo;\r\n vm?.emit(`update:${property}`, neo);\r\n },\r\n });\r\n\r\n Object.defineProperty(model, 'rxValue', {\r\n get: () => (isDefinedProp.value ? getProp() : txValue.value),\r\n });\r\n\r\n return model;\r\n}\r\n\r\nexport function useProvided<T>(props: any, prop: string, provided: Ref<T>) {\r\n const internal = useModelDuplex(props, prop, props[prop] ?? provided.value);\r\n\r\n watch(provided, (value) => {\r\n if (props[prop] == null) {\r\n internal.value = value;\r\n }\r\n });\r\n return internal;\r\n}\r\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,kBAAkB,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAG7DC,cAAc;AAAA,SACdC,YAAY,EAAEC,WAAW;AAAA,SACzBC,cAAc;
|
|
1
|
+
{"version":3,"file":"communication.mjs","names":["computed","getCurrentInstance","ref","toRaw","watch","hasOwnProperty","kebabToCamel","toKebabCase","useToggleScope","useModelDuplex","props","prop","arguments","length","undefined","defaultValue","getIn","v","setOut","vm","kebabProp","property","txValue","getProp","isDefinedProp","registeredProps","vnode","value","model","get","set","neo","current","emit","Object","defineProperty","useProvided","provided","internal"],"sources":["../../src/composables/communication.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, toRaw, watch } from 'vue';\r\nimport type { Ref } from 'vue';\r\n\r\nimport { hasOwnProperty } from '../util/common';\r\nimport { kebabToCamel, toKebabCase } from '../util/string';\r\nimport { useToggleScope } from './scope';\r\nimport {WritableComputedRef} from \"@vue/runtime-core\";\r\n\r\nexport function useModelDuplex(\r\n props: any,\r\n prop: string = 'modelValue',\r\n defaultValue?: any,\r\n getIn: (value?: any) => any = (v: any) => v,\r\n setOut: (value: any) => any = (v: any) => v,\r\n) {\r\n const vm = getCurrentInstance()!;\r\n const kebabProp = toKebabCase(prop);\r\n const property = kebabProp === prop ? kebabToCamel(prop) : prop;\r\n const txValue = ref(\r\n props[property] !== undefined ? props[property] : defaultValue,\r\n );\r\n\r\n function getProp() {\r\n return props[property];\r\n }\r\n\r\n const isDefinedProp = computed(() => {\r\n getProp();\r\n const registeredProps = vm.vnode.props;\r\n return (\r\n (hasOwnProperty(registeredProps, kebabProp) ||\r\n hasOwnProperty(registeredProps, property)) &&\r\n (hasOwnProperty(registeredProps, `onUpdate:${kebabProp}`) ||\r\n hasOwnProperty(registeredProps, `onUpdate:${property}`))\r\n );\r\n });\r\n\r\n useToggleScope(\r\n () => !isDefinedProp.value,\r\n () => {\r\n watch(\r\n () => getProp(),\r\n (value) => {\r\n txValue.value = value;\r\n },\r\n );\r\n },\r\n );\r\n\r\n const model = computed({\r\n get(): any {\r\n return getIn(isDefinedProp.value ? getProp() : txValue.value);\r\n },\r\n set(value) {\r\n const neo = setOut(value);\r\n const current = toRaw(isDefinedProp.value ? getProp() : txValue.value);\r\n if (current === neo || getIn(current) === value) {\r\n return;\r\n }\r\n txValue.value = neo;\r\n vm?.emit(`update:${property}`, neo);\r\n },\r\n }) as WritableComputedRef<any> & { readonly rxValue: any };\r\n\r\n Object.defineProperty(model, 'rxValue', {\r\n get: () => (isDefinedProp.value ? getProp() : txValue.value),\r\n });\r\n\r\n return model;\r\n}\r\n\r\nexport function useProvided<T>(props: any, prop: string, provided: Ref<T>) {\r\n const internal = useModelDuplex(props, prop, props[prop] ?? provided.value);\r\n\r\n watch(provided, (value) => {\r\n if (props[prop] == null) {\r\n internal.value = value;\r\n }\r\n });\r\n return internal;\r\n}\r\n"],"mappings":"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"}
|
package/lib/composables/icon.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
2
|
+
import { h } from 'vue';
|
|
2
3
|
import { computed, defineComponent, inject, mergeProps, unref } from 'vue';
|
|
3
4
|
import { builtSet } from "../components/index.mjs";
|
|
4
5
|
import { mergeDeep, propsFactory } from "../util/index.mjs";
|
|
@@ -105,7 +106,6 @@ export function useIcon(iconProp) {
|
|
|
105
106
|
};
|
|
106
107
|
} else if (typeof icon !== 'string') {
|
|
107
108
|
const iconValue = unref(iconProp);
|
|
108
|
-
console.log(iconValue);
|
|
109
109
|
if (iconValue && typeof iconValue === 'object' && 'iconProps' in iconValue) {
|
|
110
110
|
icon = {
|
|
111
111
|
component: 'component' in icon ? icon.component : icon,
|
|
@@ -125,8 +125,28 @@ export function useIcon(iconProp) {
|
|
|
125
125
|
const svgNode = text.querySelector('svg');
|
|
126
126
|
if (svgNode) {
|
|
127
127
|
return {
|
|
128
|
-
component:
|
|
129
|
-
|
|
128
|
+
component: YComponentIcon,
|
|
129
|
+
icon: {
|
|
130
|
+
mounted() {
|
|
131
|
+
svgNode.childNodes.forEach(child => {
|
|
132
|
+
this.$el?.appendChild(child);
|
|
133
|
+
});
|
|
134
|
+
},
|
|
135
|
+
render: function () {
|
|
136
|
+
const attrs = {};
|
|
137
|
+
if (svgNode.hasAttributes()) {
|
|
138
|
+
for (let i = 0; i < svgNode.attributes.length; i += 1) {
|
|
139
|
+
const attr = svgNode.attributes.item(i);
|
|
140
|
+
if (attr) {
|
|
141
|
+
attrs[`^${attr.name}`] = attr.value;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const node = h('svg', {
|
|
146
|
+
...attrs
|
|
147
|
+
}, []);
|
|
148
|
+
return node;
|
|
149
|
+
}
|
|
130
150
|
}
|
|
131
151
|
};
|
|
132
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.mjs","names":["computed","defineComponent","inject","mergeProps","unref","builtSet","mergeDeep","propsFactory","IconPropOption","String","Function","Object","Array","IconValue","pressIconPropsOptions","icon","type","tag","required","YComponentIcon","name","props","setup","_ref","slots","Icon","_createVNode","_Fragment","iconProps","component","default","YSvgIcon","inheritAttrs","_ref2","attrs","isArray","map","path","YUYEON_ICON_KEY","Symbol","for","createIconModule","options","defaultSet","sets","svg","aliases","useIcon","iconProp","iconModule","Error","iconData","iconMeta","alias","trim","startsWith","slice","iconValue","console","log","iconSetName","keys","find","setName","iconName","length","iconSet","text","DOMParser","parseFromString","svgNode","querySelector","template"],"sources":["../../src/composables/icon.tsx"],"sourcesContent":["import { HTMLAttributes } from '@vue/runtime-dom';\nimport type { Component, InjectionKey, PropType, Ref } from 'vue';\nimport { computed, defineComponent, inject, mergeProps, unref } from 'vue';\n\nimport { builtSet } from '../components';\nimport { JSXComponent } from '../types';\nimport { mergeDeep, propsFactory } from '../util';\n\ntype IconComponent = JSXComponent<IconProps>;\n\nexport type IconValue =\n | string\n | (string | [path: string, opacity: number])[]\n | IconComponent\n | { component: JSXComponent; props?: any }\n | { alias: string; iconProps?: any };\n\nexport const IconPropOption = [\n String,\n Function,\n Object,\n Array,\n] as PropType<IconValue>;\n\ntype IconProps = {\n tag: string;\n icon?: IconValue;\n disabled?: Boolean;\n};\n\nexport interface IconSet {\n component: IconComponent;\n}\n\nexport const IconValue = [\n String,\n Object,\n Array,\n Function,\n] as PropType<IconValue>;\n\nexport type IconModuleOptions = {\n defaultSet?: string;\n sets?: Record<string, IconSet>;\n aliases?: Partial<Record<string, any>>;\n};\n\nexport const pressIconPropsOptions = propsFactory(\n {\n icon: {\n type: IconValue,\n },\n tag: {\n type: String,\n required: true,\n },\n },\n 'icon',\n);\n\nexport const YComponentIcon = defineComponent({\n name: 'YComponentIcon',\n props: pressIconPropsOptions(),\n setup(props, { slots }) {\n return () => {\n const icon = props.icon as unknown;\n let Icon: JSXComponent = () => <></>;\n let iconProps: any = {};\n if (icon instanceof Object) {\n Icon = icon as JSXComponent;\n if ('component' in icon) {\n Icon = icon.component as JSXComponent;\n iconProps = (icon as any)?.props;\n }\n }\n return (\n <props.tag>\n {props.icon ? <Icon {...mergeProps(iconProps)} /> : slots.default?.()}\n </props.tag>\n );\n };\n },\n});\nexport type YComponentIcon = InstanceType<typeof YComponentIcon>;\n\nexport const YSvgIcon = defineComponent({\n name: 'YSvgIcon',\n inheritAttrs: false,\n props: pressIconPropsOptions(),\n setup(props, { attrs }) {\n return () => {\n return (\n <props.tag {...attrs}>\n <svg\n class=\"y-icon__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n role=\"img\"\n aria-hidden=\"true\"\n >\n {Array.isArray(props.icon) ? (\n props.icon.map((path) =>\n Array.isArray(path) ? (\n <path d={path[0] as string} fill-opacity={path[1]}></path>\n ) : (\n <path d={path as string}></path>\n ),\n )\n ) : (\n <path d={props.icon as string}></path>\n )}\n </svg>\n </props.tag>\n );\n };\n },\n});\nexport type YSvgIcon = InstanceType<typeof YSvgIcon>;\n\nexport const YUYEON_ICON_KEY: InjectionKey<Required<IconModuleOptions>> =\n Symbol.for('yuyeon.icon');\n\nexport function createIconModule(options?: IconModuleOptions) {\n return mergeDeep(\n {\n defaultSet: 'built',\n sets: {\n svg: {\n component: YSvgIcon,\n },\n },\n aliases: {\n ...builtSet,\n },\n },\n options,\n );\n}\n\ntype IconInstance = {\n component: IconComponent;\n icon?: IconValue;\n};\n\nexport function useIcon(iconProp: Ref<IconValue | undefined>) {\n const iconModule = inject(YUYEON_ICON_KEY);\n\n if (!iconModule) throw new Error('Not found provided \"IconModule\"');\n\n const iconData = computed<IconInstance>(() => {\n const iconMeta = unref(iconProp);\n\n if (!iconMeta) return { component: YComponentIcon };\n\n let icon: IconValue | undefined = iconMeta;\n\n if (\n typeof icon === 'object' &&\n 'alias' in icon &&\n typeof icon.alias === 'string'\n ) {\n icon = icon.alias;\n }\n\n if (typeof icon === 'string') {\n icon = icon.trim();\n\n if (icon.startsWith('$')) {\n icon = iconModule.aliases?.[icon.slice(1)];\n }\n }\n\n if (!icon) throw new Error(`Could not find aliased icon \"${iconMeta}\"`);\n\n if (Array.isArray(icon)) {\n return {\n component: YSvgIcon,\n icon,\n };\n } else if (typeof icon !== 'string') {\n const iconValue = unref(iconProp);\n console.log(iconValue);\n if (\n iconValue &&\n typeof iconValue === 'object' &&\n 'iconProps' in iconValue\n ) {\n icon = {\n component:\n 'component' in icon ? icon.component : (icon as JSXComponent),\n props:\n 'props' in icon\n ? mergeDeep(icon.props, iconValue?.iconProps ?? {})\n : iconValue.iconProps,\n };\n }\n\n return {\n component: YComponentIcon,\n icon,\n };\n }\n\n const iconSetName = Object.keys(iconModule.sets).find(\n (setName) => typeof icon === 'string' && icon.startsWith(`${setName}:`),\n );\n\n const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;\n const iconSet = iconModule.sets[iconSetName ?? iconModule.defaultSet];\n\n if (!iconSet?.component && typeof icon === 'string') {\n const text = new DOMParser().parseFromString(icon, 'text/xml');\n const svgNode = text.querySelector('svg');\n if (svgNode) {\n return {\n component: () => { template: svgNode }\n }\n }\n }\n\n return {\n icon: iconName,\n component: iconSet.component,\n };\n });\n\n return {\n iconData,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"icon.mjs","names":["h","computed","defineComponent","inject","mergeProps","unref","builtSet","mergeDeep","propsFactory","IconPropOption","String","Function","Object","Array","IconValue","pressIconPropsOptions","icon","type","tag","required","YComponentIcon","name","props","setup","_ref","slots","Icon","_createVNode","_Fragment","iconProps","component","default","YSvgIcon","inheritAttrs","_ref2","attrs","isArray","map","path","YUYEON_ICON_KEY","Symbol","for","createIconModule","options","defaultSet","sets","svg","aliases","useIcon","iconProp","iconModule","Error","iconData","iconMeta","alias","trim","startsWith","slice","iconValue","iconSetName","keys","find","setName","iconName","length","iconSet","text","DOMParser","parseFromString","svgNode","querySelector","mounted","childNodes","forEach","child","$el","appendChild","render","hasAttributes","i","attributes","attr","item","value","node"],"sources":["../../src/composables/icon.tsx"],"sourcesContent":["import { HTMLAttributes } from '@vue/runtime-dom';\nimport { Component, InjectionKey, PropType, Ref, h } from 'vue';\nimport { computed, defineComponent, inject, mergeProps, unref } from 'vue';\n\nimport { builtSet } from '../components';\nimport { JSXComponent } from '../types';\nimport { mergeDeep, propsFactory } from '../util';\n\ntype IconComponent = JSXComponent<IconProps>;\n\nexport type IconValue =\n | string\n | (string | [path: string, opacity: number])[]\n | IconComponent\n | { component: JSXComponent; props?: any }\n | { alias: string; iconProps?: any };\n\nexport const IconPropOption = [\n String,\n Function,\n Object,\n Array,\n] as PropType<IconValue>;\n\ntype IconProps = {\n tag: string;\n icon?: IconValue;\n disabled?: Boolean;\n};\n\nexport interface IconSet {\n component: IconComponent;\n}\n\nexport const IconValue = [\n String,\n Object,\n Array,\n Function,\n] as PropType<IconValue>;\n\nexport type IconModuleOptions = {\n defaultSet?: string;\n sets?: Record<string, IconSet>;\n aliases?: Partial<Record<string, any>>;\n};\n\nexport const pressIconPropsOptions = propsFactory(\n {\n icon: {\n type: IconValue,\n },\n tag: {\n type: String,\n required: true,\n },\n },\n 'icon',\n);\n\nexport const YComponentIcon = defineComponent({\n name: 'YComponentIcon',\n props: pressIconPropsOptions(),\n setup(props, { slots }) {\n return () => {\n const icon = props.icon as unknown;\n let Icon: JSXComponent = () => <></>;\n let iconProps: any = {};\n if (icon instanceof Object) {\n Icon = icon as JSXComponent;\n if ('component' in icon) {\n Icon = icon.component as JSXComponent;\n iconProps = (icon as any)?.props;\n }\n }\n return (\n <props.tag>\n {props.icon ? <Icon {...mergeProps(iconProps)} /> : slots.default?.()}\n </props.tag>\n );\n };\n },\n});\nexport type YComponentIcon = InstanceType<typeof YComponentIcon>;\n\nexport const YSvgIcon = defineComponent({\n name: 'YSvgIcon',\n inheritAttrs: false,\n props: pressIconPropsOptions(),\n setup(props, { attrs }) {\n return () => {\n return (\n <props.tag {...attrs}>\n <svg\n class=\"y-icon__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n role=\"img\"\n aria-hidden=\"true\"\n >\n {Array.isArray(props.icon) ? (\n props.icon.map((path) =>\n Array.isArray(path) ? (\n <path d={path[0] as string} fill-opacity={path[1]}></path>\n ) : (\n <path d={path as string}></path>\n ),\n )\n ) : (\n <path d={props.icon as string}></path>\n )}\n </svg>\n </props.tag>\n );\n };\n },\n});\nexport type YSvgIcon = InstanceType<typeof YSvgIcon>;\n\nexport const YUYEON_ICON_KEY: InjectionKey<Required<IconModuleOptions>> =\n Symbol.for('yuyeon.icon');\n\nexport function createIconModule(options?: IconModuleOptions) {\n return mergeDeep(\n {\n defaultSet: 'built',\n sets: {\n svg: {\n component: YSvgIcon,\n },\n },\n aliases: {\n ...builtSet,\n },\n },\n options,\n );\n}\n\ntype IconInstance = {\n component: IconComponent;\n icon?: IconValue;\n};\n\nexport function useIcon(iconProp: Ref<IconValue | undefined>) {\n const iconModule = inject(YUYEON_ICON_KEY);\n\n if (!iconModule) throw new Error('Not found provided \"IconModule\"');\n\n const iconData = computed<IconInstance>(() => {\n const iconMeta = unref(iconProp);\n\n if (!iconMeta) return { component: YComponentIcon };\n\n let icon: IconValue | undefined = iconMeta;\n\n if (\n typeof icon === 'object' &&\n 'alias' in icon &&\n typeof icon.alias === 'string'\n ) {\n icon = icon.alias;\n }\n\n if (typeof icon === 'string') {\n icon = icon.trim();\n\n if (icon.startsWith('$')) {\n icon = iconModule.aliases?.[icon.slice(1)];\n }\n }\n\n if (!icon) throw new Error(`Could not find aliased icon \"${iconMeta}\"`);\n\n if (Array.isArray(icon)) {\n return {\n component: YSvgIcon,\n icon,\n };\n } else if (typeof icon !== 'string') {\n const iconValue = unref(iconProp);\n if (\n iconValue &&\n typeof iconValue === 'object' &&\n 'iconProps' in iconValue\n ) {\n icon = {\n component:\n 'component' in icon ? icon.component : (icon as JSXComponent),\n props:\n 'props' in icon\n ? mergeDeep(icon.props, iconValue?.iconProps ?? {})\n : iconValue.iconProps,\n };\n }\n\n return {\n component: YComponentIcon,\n icon,\n };\n }\n\n const iconSetName = Object.keys(iconModule.sets).find(\n (setName) => typeof icon === 'string' && icon.startsWith(`${setName}:`),\n );\n\n const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;\n const iconSet = iconModule.sets[iconSetName ?? iconModule.defaultSet];\n\n if (!iconSet?.component && typeof icon === 'string') {\n const text = new DOMParser().parseFromString(icon, 'text/xml');\n const svgNode = text.querySelector('svg');\n if (svgNode) {\n return {\n component: YComponentIcon,\n icon: {\n mounted() {\n svgNode.childNodes.forEach((child) => {\n this.$el?.appendChild(child);\n });\n },\n render: function () {\n const attrs: any = {};\n if (svgNode.hasAttributes()) {\n for (let i = 0; i < svgNode.attributes.length; i += 1) {\n const attr = svgNode.attributes.item(i);\n if (attr) {\n attrs[`^${attr.name}`] = attr.value;\n }\n }\n }\n\n const node = h('svg', { ...attrs }, []);\n return node;\n },\n } as any,\n };\n }\n }\n\n return {\n icon: iconName,\n component: iconSet.component,\n };\n });\n\n return {\n iconData,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { computed, ref, watch } from 'vue';
|
|
2
|
+
import { getUid, propsFactory } from "../util/index.mjs";
|
|
3
|
+
import { useModelDuplex } from "./communication.mjs";
|
|
4
|
+
import { useToggleScope } from "./scope.mjs";
|
|
5
|
+
export const pressValidationPropsOptions = propsFactory({
|
|
6
|
+
readonly: Boolean,
|
|
7
|
+
disabled: Boolean,
|
|
8
|
+
status: {
|
|
9
|
+
type: String,
|
|
10
|
+
validator(value) {
|
|
11
|
+
return ['success', 'warning', 'error'].includes(value);
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
validators: Array,
|
|
15
|
+
validateOn: {
|
|
16
|
+
type: String
|
|
17
|
+
},
|
|
18
|
+
validationValue: null,
|
|
19
|
+
maxErrors: {
|
|
20
|
+
type: [Number, String],
|
|
21
|
+
default: 1
|
|
22
|
+
}
|
|
23
|
+
}, 'validation');
|
|
24
|
+
export function useValidation(props, name) {
|
|
25
|
+
let uid = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getUid();
|
|
26
|
+
const model = useModelDuplex(props, 'modelValue');
|
|
27
|
+
const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);
|
|
28
|
+
const validating = ref(false);
|
|
29
|
+
const validateOn = computed(() => {
|
|
30
|
+
let value = props.validateOn || 'input';
|
|
31
|
+
if (value === 'lazy') value = 'input,lazy';
|
|
32
|
+
const onSet = new Set(value?.split(',') ?? []);
|
|
33
|
+
return {
|
|
34
|
+
blur: onSet.has('blur') || onSet.has('input'),
|
|
35
|
+
input: onSet.has('input'),
|
|
36
|
+
lazy: onSet.has('lazy'),
|
|
37
|
+
submit: onSet.has('submit')
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
const errorResult = ref();
|
|
41
|
+
const errors = ref([]);
|
|
42
|
+
const isError = computed(() => {
|
|
43
|
+
return props.status === 'error' || errors.value.length > 0;
|
|
44
|
+
});
|
|
45
|
+
const isSuccess = computed(() => {
|
|
46
|
+
return !isError.value && props.status === 'success';
|
|
47
|
+
});
|
|
48
|
+
useToggleScope(() => validateOn.value.input, () => {
|
|
49
|
+
watch(validationModel, () => {
|
|
50
|
+
if (validationModel.value != null) {
|
|
51
|
+
invokeValidators();
|
|
52
|
+
} else if (props.focused) {
|
|
53
|
+
const unwatch = watch(() => props.focused, val => {
|
|
54
|
+
if (!val) invokeValidators();
|
|
55
|
+
unwatch();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
async function invokeValidators() {
|
|
61
|
+
const results = [];
|
|
62
|
+
validating.value = true;
|
|
63
|
+
if (Array.isArray(props.validators)) {
|
|
64
|
+
for (const validator of props.validators) {
|
|
65
|
+
if (results.length >= +(props.maxErrors ?? 1)) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
const handler = typeof validator === 'function' ? validator : () => validator;
|
|
69
|
+
const result = await handler(validationModel.value);
|
|
70
|
+
if (result === true) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (result !== false && typeof result !== 'string') {
|
|
74
|
+
console.warn('Wrong validator return type');
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
results.push(result || '');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
validating.value = false;
|
|
81
|
+
errors.value = results;
|
|
82
|
+
errorResult.value = results?.[0];
|
|
83
|
+
return results;
|
|
84
|
+
}
|
|
85
|
+
function resetError() {
|
|
86
|
+
errors.value = [];
|
|
87
|
+
errorResult.value = undefined;
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
invokeValidators,
|
|
91
|
+
resetError,
|
|
92
|
+
validating,
|
|
93
|
+
validateOn,
|
|
94
|
+
errorResult,
|
|
95
|
+
errors,
|
|
96
|
+
isError,
|
|
97
|
+
isSuccess
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=validation.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.mjs","names":["computed","ref","watch","getUid","propsFactory","useModelDuplex","useToggleScope","pressValidationPropsOptions","readonly","Boolean","disabled","status","type","String","validator","value","includes","validators","Array","validateOn","validationValue","maxErrors","Number","default","useValidation","props","name","uid","arguments","length","undefined","model","validationModel","validating","onSet","Set","split","blur","has","input","lazy","submit","errorResult","errors","isError","isSuccess","invokeValidators","focused","unwatch","val","results","isArray","handler","result","console","warn","push","resetError"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["import { PropType, computed, ref, watch } from 'vue';\n\nimport { getUid, propsFactory } from '../util';\nimport { useModelDuplex } from './communication';\nimport { useToggleScope } from './scope';\n\nexport const pressValidationPropsOptions = propsFactory(\n {\n readonly: Boolean as PropType<boolean>,\n disabled: Boolean as PropType<boolean>,\n status: {\n type: String as PropType<'success' | 'warning' | 'error' | undefined>,\n validator(value: string) {\n return ['success', 'warning', 'error'].includes(value);\n },\n },\n validators: Array as PropType<((v: any) => boolean | string)[] | string[]>,\n validateOn: {\n type: String as PropType<string>,\n },\n validationValue: null,\n maxErrors: {\n type: [Number, String] as PropType<number | string>,\n default: 1,\n },\n },\n 'validation',\n);\n\nexport function useValidation(props: any, name: string, uid = getUid()) {\n const model = useModelDuplex(props, 'modelValue');\n const validationModel = computed(() =>\n props.validationValue === undefined ? model.value : props.validationValue,\n );\n\n const validating = ref(false);\n const validateOn = computed(() => {\n let value = props.validateOn || 'input';\n if (value === 'lazy') value = 'input,lazy';\n const onSet = new Set(value?.split(',') ?? []);\n\n return {\n blur: onSet.has('blur') || onSet.has('input'),\n input: onSet.has('input'),\n lazy: onSet.has('lazy'),\n submit: onSet.has('submit'),\n };\n });\n\n const errorResult = ref();\n const errors = ref<any[]>([]);\n\n const isError = computed(() => {\n return props.status === 'error' || errors.value.length > 0;\n });\n\n const isSuccess = computed(() => {\n return !isError.value && props.status === 'success';\n });\n\n useToggleScope(\n () => validateOn.value.input,\n () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n invokeValidators();\n } else if (props.focused) {\n const unwatch = watch(\n () => props.focused,\n (val) => {\n if (!val) invokeValidators();\n\n unwatch();\n },\n );\n }\n });\n },\n );\n\n async function invokeValidators() {\n const results: any[] = [];\n validating.value = true;\n\n if (Array.isArray(props.validators)) {\n for (const validator of props.validators) {\n if (results.length >= +(props.maxErrors ?? 1)) {\n break;\n }\n\n const handler =\n typeof validator === 'function' ? validator : () => validator;\n const result = await handler(validationModel.value);\n\n if (result === true) {\n continue;\n }\n\n if (result !== false && typeof result !== 'string') {\n console.warn('Wrong validator return type');\n continue;\n }\n results.push(result || '');\n }\n }\n validating.value = false;\n errors.value = results;\n errorResult.value = results?.[0];\n\n return results;\n }\n\n function resetError() {\n errors.value = [];\n errorResult.value = undefined;\n }\n\n return {\n invokeValidators,\n resetError,\n validating,\n validateOn,\n errorResult,\n errors,\n isError,\n isSuccess,\n };\n}\n"],"mappings":"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"}
|