yuyeon 0.0.42-rc6 → 0.0.42-rc8
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/style.css +1 -1
- package/dist/yuyeon.js +3129 -2941
- package/dist/yuyeon.umd.cjs +6 -6
- package/lib/components/dropdown/YDropdown.mjs +11 -5
- package/lib/components/dropdown/YDropdown.mjs.map +1 -1
- package/lib/components/dropdown/YDropdown.scss +3 -8
- package/lib/components/icon/YIcon.mjs +62 -0
- package/lib/components/icon/YIcon.mjs.map +1 -0
- package/lib/components/icon/YIcon.scss +18 -0
- package/lib/components/icon/index.mjs +2 -0
- package/lib/components/icon/index.mjs.map +1 -0
- package/lib/components/icon/poly.mjs +57 -0
- package/lib/components/icon/poly.mjs.map +1 -0
- package/lib/components/icons/index.mjs +14 -0
- package/lib/components/icons/index.mjs.map +1 -1
- package/lib/components/index.mjs +1 -0
- package/lib/components/index.mjs.map +1 -1
- package/lib/components/layer/YLayer.mjs +2 -0
- package/lib/components/layer/YLayer.mjs.map +1 -1
- package/lib/components/layer/active-stack.mjs.map +1 -1
- package/lib/components/menu/YMenu.mjs +16 -4
- package/lib/components/menu/YMenu.mjs.map +1 -1
- package/lib/components/select/YSelect.mjs +9 -6
- package/lib/components/select/YSelect.mjs.map +1 -1
- package/lib/components/select/YSelect.scss +3 -8
- package/lib/composables/icon.mjs +141 -0
- package/lib/composables/icon.mjs.map +1 -1
- package/lib/composables/theme/index.mjs.map +1 -1
- package/lib/index.mjs +3 -0
- package/lib/index.mjs.map +1 -1
- package/lib/types/index.mjs.map +1 -1
- package/lib/util/date/adapters/yuyeon-date-adapter.mjs +1 -1
- package/lib/util/date/adapters/yuyeon-date-adapter.mjs.map +1 -1
- package/lib/util/date/built-in.mjs +6 -2
- package/lib/util/date/built-in.mjs.map +1 -1
- package/package.json +2 -2
- package/types/abstract/items.d.ts +4 -4
- package/types/components/button/YButton.d.ts +10 -10
- package/types/components/checkbox/YInputCheckbox.d.ts +2 -2
- package/types/components/date-picker/YDateCalendar.d.ts +1 -1
- package/types/components/dialog/YDialog.d.ts +1 -0
- package/types/components/dropdown/YDropdown.d.ts +34 -13
- package/types/components/field-input/YFieldInput.d.ts +10 -10
- package/types/components/form/YForm.d.ts +1 -1
- package/types/components/icon/YIcon.d.ts +81 -0
- package/types/components/icon/index.d.ts +1 -0
- package/types/components/icons/YIconCheckbox.d.ts +2 -2
- package/types/components/icons/YIconSort.d.ts +2 -2
- package/types/components/icons/index.d.ts +48 -0
- package/types/components/index.d.ts +1 -0
- package/types/components/input/YInput.d.ts +7 -7
- package/types/components/layer/YLayer.d.ts +20 -19
- package/types/components/layer/active-stack.d.ts +1 -2
- package/types/components/list/YListItem.d.ts +2 -2
- package/types/components/menu/YMenu.d.ts +8 -3
- package/types/components/pagination/YPagination.d.ts +5 -5
- package/types/components/progress-bar/YProgressBar.d.ts +1 -1
- package/types/components/select/YSelect.d.ts +74 -58
- package/types/components/switch/YSwitch.d.ts +1 -1
- package/types/components/tab/YTab.d.ts +15 -15
- package/types/components/tab/YTabs.d.ts +5 -5
- package/types/components/table/YDataTable.d.ts +18 -18
- package/types/components/table/YDataTableBody.d.ts +5 -5
- package/types/components/table/YDataTableControl.d.ts +2 -2
- package/types/components/table/YDataTableHead.d.ts +2 -2
- package/types/components/table/YDataTableServer.d.ts +21 -21
- package/types/components/table/YTable.d.ts +4 -4
- package/types/components/table/composibles/header.d.ts +1 -1
- package/types/components/table/composibles/items.d.ts +3 -3
- package/types/components/table/composibles/pagination.d.ts +2 -2
- package/types/components/table/composibles/selection.d.ts +2 -2
- package/types/components/table/composibles/sorting.d.ts +1 -1
- package/types/components/textarea/YTextarea.d.ts +10 -10
- package/types/components/tooltip/YTooltip.d.ts +9 -8
- package/types/components/tree-view/YTreeView.d.ts +4 -4
- package/types/components/tree-view/YTreeViewNode.d.ts +9 -9
- package/types/composables/choice.d.ts +1 -1
- package/types/composables/coordinate/index.d.ts +6 -6
- package/types/composables/icon.d.ts +96 -0
- package/types/composables/list-items.d.ts +10 -10
- package/types/composables/theme/index.d.ts +2 -2
- package/types/globals.d.ts +12 -7
- package/types/shims.d.ts +88 -87
- package/types/types/index.d.ts +5 -0
- package/types/util/date/built-in.d.ts +2 -2
|
@@ -10,7 +10,7 @@ import { deepEqual, getObjectValueByPath, omit } from "../../util/common.mjs";
|
|
|
10
10
|
import { chooseProps, propsFactory } from "../../util/vue-component.mjs";
|
|
11
11
|
import { YCard } from "../card/index.mjs";
|
|
12
12
|
import { YFieldInput, pressYFieldInputPropsOptions } from "../field-input/index.mjs";
|
|
13
|
-
import {
|
|
13
|
+
import { YIcon } from "../icon/index.mjs";
|
|
14
14
|
import { YList, YListItem } from "../list/index.mjs";
|
|
15
15
|
import { YMenu } from "../menu/index.mjs";
|
|
16
16
|
import "./YSelect.scss";
|
|
@@ -36,8 +36,9 @@ export const pressYSelectPropsOptions = propsFactory({
|
|
|
36
36
|
type: [Number, String],
|
|
37
37
|
default: 310
|
|
38
38
|
},
|
|
39
|
-
|
|
40
|
-
type: Object
|
|
39
|
+
dropdownIcon: {
|
|
40
|
+
type: [String, Array, Object],
|
|
41
|
+
default: '$dropdown'
|
|
41
42
|
},
|
|
42
43
|
openDelay: {
|
|
43
44
|
type: Number,
|
|
@@ -158,6 +159,7 @@ export const YSelect = defineComponent({
|
|
|
158
159
|
});
|
|
159
160
|
useRender(() => {
|
|
160
161
|
const fieldInputProps = chooseProps(props, YFieldInput.props);
|
|
162
|
+
const dropdownIconProps = chooseProps(typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {}, YIcon.props);
|
|
161
163
|
return _createVNode(YMenu, {
|
|
162
164
|
"modelValue": opened.value,
|
|
163
165
|
"onUpdate:modelValue": $event => opened.value = $event,
|
|
@@ -208,9 +210,10 @@ export const YSelect = defineComponent({
|
|
|
208
210
|
return slots.leading?.(...args);
|
|
209
211
|
} : undefined,
|
|
210
212
|
trailing: function () {
|
|
211
|
-
return slots['
|
|
212
|
-
"
|
|
213
|
-
|
|
213
|
+
return slots['dropdown-icon'] ? slots['dropdown-icon']() : _createVNode(YIcon, _mergeProps(mergeProps(dropdownIconProps), {
|
|
214
|
+
"icon": props.dropdownIcon,
|
|
215
|
+
"class": ['y-select__icon']
|
|
216
|
+
}), null);
|
|
214
217
|
},
|
|
215
218
|
'helper-text': slots['helper-text'] ? slots['helper-text']?.() : undefined
|
|
216
219
|
});
|
|
@@ -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","YIconDropdown","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","pressYSelectPropsOptions","maxHeight","Number","String","expandIcon","Object","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","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","_createVNode","$event","offset","align","origin","base","_len","args","Array","_key","_mergeProps","leading","_len2","_key2","trailing","menu","_createTextVNode","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\r\nimport type { PropType, SlotsType } from 'vue';\r\nimport { computed, defineComponent, mergeProps, onMounted, ref } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressCoordinateProps } from '../../composables/coordinate';\r\nimport {\r\n ListItem,\r\n pressListItemsPropsOptions,\r\n useItems,\r\n} from '../../composables/list-items';\r\nimport { wrapInArray } from '../../util/array';\r\nimport { deepEqual, getObjectValueByPath, omit } from '../../util/common';\r\nimport { chooseProps, propsFactory } from '../../util/vue-component';\r\nimport { YCard } from '../card';\r\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\r\nimport { YIconDropdown } from '../icons/YIconDropdown';\r\nimport { YList, YListItem } from '../list';\r\nimport { YMenu } from '../menu';\r\n\r\nimport './YSelect.scss';\r\n\r\nexport type SelectEquals = (\r\n optionsItem: any,\r\n valueItem: any,\r\n valueKey?: string,\r\n) => boolean;\r\n\r\nexport function returnItemEquals(\r\n optionsItem: any,\r\n valueItem: any,\r\n valueKey = 'value',\r\n) {\r\n const valueItemType = typeof valueItem;\r\n const itemValue =\r\n valueItemType === 'string' || valueItemType === 'number'\r\n ? getObjectValueByPath(optionsItem, valueKey)\r\n : optionsItem;\r\n return deepEqual(itemValue, valueItem);\r\n}\r\n\r\nexport const pressSelectPropsOptions = propsFactory(\r\n {\r\n opened: Boolean as PropType<boolean>,\r\n multiple: Boolean,\r\n weakEquals: Boolean,\r\n valueEquals: {\r\n type: Function as PropType<SelectEquals>,\r\n default: deepEqual,\r\n },\r\n defaultSelect: Boolean,\r\n ...pressListItemsPropsOptions(),\r\n },\r\n 'Select',\r\n);\r\n\r\nexport const pressYSelectPropsOptions = propsFactory(\r\n {\r\n maxHeight: {\r\n type: [Number, String],\r\n default: 310,\r\n },\r\n expandIcon: {\r\n type: Object,\r\n },\r\n openDelay: {\r\n type: Number as PropType<number>,\r\n default: 200,\r\n },\r\n closeDelay: {\r\n type: Number as PropType<number>,\r\n default: 200,\r\n },\r\n ...pressSelectPropsOptions(),\r\n ...pressYFieldInputPropsOptions(),\r\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\r\n 'coordinateStrategy',\r\n ]),\r\n },\r\n 'YSelect',\r\n);\r\n\r\nexport const YSelect = defineComponent({\r\n name: 'YSelect',\r\n inheritAttrs: false,\r\n props: {\r\n ...pressYSelectPropsOptions(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: any) => true,\r\n 'update:opened': (opened: boolean) => true,\r\n 'click:item': (item: any, e: MouseEvent) => true,\r\n },\r\n slots: Object as SlotsType<{\r\n base: any;\r\n selection: any;\r\n leading: any;\r\n 'helper-text': any;\r\n menu: any;\r\n 'menu-prepend': any;\r\n 'menu-append': any;\r\n 'expand-icon': any;\r\n item: { item: any; selected: boolean; select: () => void };\r\n }>,\r\n setup(props, { slots, attrs, expose }) {\r\n const fieldInputRef = ref();\r\n const menuRef = ref<InstanceType<typeof YMenu>>();\r\n const listRef = ref<InstanceType<typeof YList>>();\r\n\r\n const opened = useModelDuplex(props, 'opened');\r\n const focused = shallowRef(false);\r\n\r\n const { items, toRefineItems, toEmitItems } = useItems(props);\r\n const model = useModelDuplex(\r\n props,\r\n 'modelValue',\r\n [],\r\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\r\n (v) => {\r\n const emitValue = toEmitItems(wrapInArray(v));\r\n return props.multiple ? emitValue : emitValue[0] ?? null;\r\n },\r\n );\r\n\r\n const selections = computed<ListItem[]>(() => {\r\n return model.value.map((v: any) => {\r\n return items.value.find((item) => {\r\n return props.valueEquals(item.value, v.value);\r\n });\r\n });\r\n });\r\n\r\n const selected = computed(() => {\r\n return selections.value.map((selection) => selection.props.value);\r\n });\r\n\r\n function isSelected(item: ListItem) {\r\n return !!selections.value.find((selectedItem) => {\r\n return selectedItem?.value === item.value;\r\n });\r\n }\r\n\r\n // Field\r\n function onMousedownDisplay(event: MouseEvent) {\r\n if (props.disabled) {\r\n return;\r\n }\r\n opened.value = !opened.value;\r\n }\r\n\r\n function onBlur(event: FocusEvent) {\r\n // if (listRef.value?.$el.contains(event.relatedTarget)) {\r\n // opened.value = false;\r\n // }\r\n }\r\n\r\n // Menu Contents\r\n function onClickItem(item: ListItem, e: MouseEvent) {\r\n select(item);\r\n if (!props.multiple) {\r\n opened.value = false;\r\n }\r\n }\r\n\r\n function onAfterLeave() {\r\n if (focused.value) {\r\n fieldInputRef.value?.focus();\r\n }\r\n }\r\n\r\n function closeCondition(event: MouseEvent) {\r\n if (event.target && (menuRef.value as any)?.layer$?.content$.value) {\r\n return (event.target as HTMLElement)?.contains((menuRef.value as any)?.layer$?.content$.value)\r\n }\r\n }\r\n\r\n function select(item: ListItem) {\r\n if (props.multiple) {\r\n const index = selections.value.findIndex((selectedItem) => {\r\n return selectedItem.value === item.value;\r\n });\r\n if (index === -1) {\r\n model.value = [...model.value, item];\r\n } else {\r\n const neo = model.value.slice();\r\n neo.splice(index, 1);\r\n model.value = neo;\r\n }\r\n } else {\r\n model.value = [item];\r\n }\r\n }\r\n\r\n const displayText = computed(() => {\r\n if (props.multiple) {\r\n return selections.value.map((item) => item.text).join(', ');\r\n }\r\n return selections.value?.[0]?.text ?? '';\r\n });\r\n\r\n const baseEl = computed(() => {\r\n return menuRef.value?.baseEl;\r\n });\r\n\r\n useRender(() => {\r\n const fieldInputProps = chooseProps(props, YFieldInput.props);\r\n return (\r\n <YMenu\r\n v-model={opened.value}\r\n ref={menuRef}\r\n offset={props.offset}\r\n position={props.position}\r\n align={props.align}\r\n origin={props.origin}\r\n content-classes={['y-select__content']}\r\n maxHeight={props.maxHeight}\r\n open-on-click-base={false}\r\n onAfterLeave={onAfterLeave}\r\n open-delay={props.openDelay}\r\n close-delay={props.closeDelay}\r\n closeCondition={closeCondition}\r\n >\r\n {{\r\n base: (...args: any[]) =>\r\n slots.base ? (\r\n slots.base?.(...args)\r\n ) : (\r\n <YFieldInput\r\n {...{\r\n ...fieldInputProps,\r\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\r\n }}\r\n onMousedown:display={onMousedownDisplay}\r\n onBlur={onBlur}\r\n readonly\r\n class={['y-select', { 'y-select--opened': opened.value }]}\r\n {...attrs}\r\n v-model:focused={focused.value}\r\n >\r\n {{\r\n default: () => {\r\n return (\r\n <div class={['y-select__selection']}>\r\n {slots.selection\r\n ? slots.selection?.()\r\n : displayText.value}\r\n </div>\r\n );\r\n },\r\n leading: slots.leading\r\n ? (...args: any[]) => slots.leading?.(...args)\r\n : undefined,\r\n trailing: (...args: any[]) => {\r\n return slots['expand-icon'] ? (\r\n slots['expand-icon']()\r\n ) : (\r\n <i class=\"y-select__icon\">\r\n <YIconDropdown></YIconDropdown>\r\n </i>\r\n );\r\n },\r\n 'helper-text': slots['helper-text']\r\n ? slots['helper-text']?.()\r\n : undefined,\r\n }}\r\n </YFieldInput>\r\n ),\r\n default: slots.menu\r\n ? () => slots.menu()\r\n : () => (\r\n <YCard>\r\n {slots['menu-prepend']?.()}\r\n {items.value.length > 0 ? (\r\n <YList ref={listRef}>\r\n {items.value.map((item) => {\r\n return (\r\n <YListItem\r\n onClick={(e) => onClickItem(item, e)}\r\n class={{\r\n 'y-list-item--active': isSelected(item),\r\n }}\r\n >\r\n {slots.item\r\n ? slots.item({\r\n item,\r\n selected: isSelected(item),\r\n select: () => {\r\n select(item);\r\n },\r\n })\r\n : item.text}\r\n </YListItem>\r\n );\r\n })}\r\n </YList>\r\n ) : (\r\n <div class=\"y-select__no-options\">항목이 없습니다.</div>\r\n )}\r\n {slots['menu-append']?.()}\r\n </YCard>\r\n ),\r\n }}\r\n </YMenu>\r\n );\r\n });\r\n\r\n onMounted(() => {\r\n if (\r\n props.defaultSelect &&\r\n (props.modelValue === undefined ||\r\n (Array.isArray(props.modelValue) && props.modelValue.length === 0)) &&\r\n items.value?.length\r\n ) {\r\n select(items.value[0]);\r\n }\r\n });\r\n\r\n expose({\r\n fieldInputRef,\r\n baseEl,\r\n });\r\n\r\n return {\r\n fieldInputRef,\r\n model,\r\n selections,\r\n selected,\r\n menuRef,\r\n baseEl,\r\n };\r\n },\r\n});\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YSelect.mjs","names":["shallowRef","computed","defineComponent","mergeProps","onMounted","ref","useModelDuplex","useRender","pressCoordinateProps","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIcon","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","pressYSelectPropsOptions","maxHeight","Number","String","dropdownIcon","Array","Object","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","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","$event","offset","align","origin","base","_len","args","_key","_mergeProps","leading","_len2","_key2","trailing","menu","_createTextVNode","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport type { PropType, SlotsType } from 'vue';\nimport { computed, defineComponent, mergeProps, onMounted, ref } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { pressCoordinateProps } from '../../composables/coordinate';\nimport {\n ListItem,\n pressListItemsPropsOptions,\n useItems,\n} from '../../composables/list-items';\nimport { wrapInArray } from '../../util/array';\nimport { 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 ...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 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 >\n {{\n base: (...args: any[]) =>\n slots.base ? (\n slots.base?.(...args)\n ) : (\n <YFieldInput\n {...{\n ...fieldInputProps,\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\n }}\n onMousedown:display={onMousedownDisplay}\n onBlur={onBlur}\n readonly\n class={['y-select', { 'y-select--opened': opened.value }]}\n {...attrs}\n v-model:focused={focused.value}\n >\n {{\n default: () => {\n return (\n <div class={['y-select__selection']}>\n {slots.selection\n ? slots.selection?.()\n : displayText.value}\n </div>\n );\n },\n leading: slots.leading\n ? (...args: any[]) => slots.leading?.(...args)\n : undefined,\n trailing: (...args: any[]) => {\n return slots['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":";AAAA,SAASA,UAAU,QAAQ,mBAAmB;AAE9C,SAASC,QAAQ,EAAEC,eAAe,EAAEC,UAAU,EAAEC,SAAS,EAAEC,GAAG,QAAQ,KAAK;AAAC,SAEnEC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,oBAAoB;AAAA,SAG3BC,0BAA0B,EAC1BC,QAAQ;AAAA,SAEDC,WAAW;AAAA,SACXC,SAAS,EAAEC,oBAAoB,EAAEC,IAAI;AAAA,SACrCC,WAAW,EAAEC,YAAY;AAAA,SACzBC,KAAK;AAAA,SACLC,WAAW,EAAEC,4BAA4B;AAAA,SACzCC,KAAK;AAAA,SAELC,KAAK,EAAEC,SAAS;AAAA,SAChBC,KAAK;AAEd;AAQA,OAAO,SAASC,gBAAgBA,CAC9BC,WAAgB,EAChBC,SAAc,EAEd;EAAA,IADAC,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,OAAO;EAElB,MAAMG,aAAa,GAAG,OAAOL,SAAS;EACtC,MAAMM,SAAS,GACbD,aAAa,KAAK,QAAQ,IAAIA,aAAa,KAAK,QAAQ,GACpDlB,oBAAoB,CAACY,WAAW,EAAEE,QAAQ,CAAC,GAC3CF,WAAW;EACjB,OAAOb,SAAS,CAACoB,SAAS,EAAEN,SAAS,CAAC;AACxC;AAEA,OAAO,MAAMO,uBAAuB,GAAGjB,YAAY,CACjD;EACEkB,MAAM,EAAEC,OAA4B;EACpCC,QAAQ,EAAED,OAAO;EACjBE,UAAU,EAAEF,OAAO;EACnBG,WAAW,EAAE;IACXC,IAAI,EAAEC,QAAkC;IACxCC,OAAO,EAAE7B;EACX,CAAC;EACD8B,aAAa,EAAEP,OAAO;EACtB,GAAG1B,0BAA0B,CAAC;AAChC,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAMkC,wBAAwB,GAAG3B,YAAY,CAClD;EACE4B,SAAS,EAAE;IACTL,IAAI,EAAE,CAACM,MAAM,EAAEC,MAAM,CAAC;IACtBL,OAAO,EAAE;EACX,CAAC;EACDM,YAAY,EAAE;IACZR,IAAI,EAAE,CAACO,MAAM,EAAEE,KAAK,EAAEC,MAAM,CAA4B;IACxDR,OAAO,EAAE;EACX,CAAC;EACDS,SAAS,EAAE;IACTX,IAAI,EAAEM,MAA0B;IAChCJ,OAAO,EAAE;EACX,CAAC;EACDU,UAAU,EAAE;IACVZ,IAAI,EAAEM,MAA0B;IAChCJ,OAAO,EAAE;EACX,CAAC;EACD,GAAGR,uBAAuB,CAAC,CAAC;EAC5B,GAAGd,4BAA4B,CAAC,CAAC;EACjC,GAAGL,IAAI,CAACN,oBAAoB,CAAC;IAAE4C,QAAQ,EAAE;EAAqB,CAAC,CAAC,EAAE,CAChE,oBAAoB,CACrB;AACH,CAAC,EACD,SACF,CAAC;AAED,OAAO,MAAMC,OAAO,GAAGnD,eAAe,CAAC;EACrCoD,IAAI,EAAE,SAAS;EACfC,YAAY,EAAE,KAAK;EACnBC,KAAK,EAAE;IACL,GAAGb,wBAAwB,CAAC;EAC9B,CAAC;EACDc,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAU,IAAK,IAAI;IACzC,eAAe,EAAGxB,MAAe,IAAK,IAAI;IAC1C,YAAY,EAAEyB,CAACC,IAAS,EAAEC,CAAa,KAAK;EAC9C,CAAC;EACDC,KAAK,EAAEb,MAUL;EACFc,KAAKA,CAACP,KAAK,EAAAQ,IAAA,EAA4B;IAAA,IAA1B;MAAEF,KAAK;MAAEG,KAAK;MAAEC;IAAO,CAAC,GAAAF,IAAA;IACnC,MAAMG,aAAa,GAAG9D,GAAG,CAAC,CAAC;IAC3B,MAAM+D,OAAO,GAAG/D,GAAG,CAA6B,CAAC;IACjD,MAAMgE,OAAO,GAAGhE,GAAG,CAA6B,CAAC;IAEjD,MAAM6B,MAAM,GAAG5B,cAAc,CAACkD,KAAK,EAAE,QAAQ,CAAC;IAC9C,MAAMc,OAAO,GAAGtE,UAAU,CAAC,KAAK,CAAC;IAEjC,MAAM;MAAEuE,KAAK;MAAEC,aAAa;MAAEC;IAAY,CAAC,GAAG/D,QAAQ,CAAC8C,KAAK,CAAC;IAC7D,MAAMkB,KAAK,GAAGpE,cAAc,CAC1BkD,KAAK,EACL,YAAY,EACZ,EAAE,EACDmB,CAAC,IAAKH,aAAa,CAACG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,GAAGhE,WAAW,CAACgE,CAAC,CAAC,CAAC,EACzDA,CAAC,IAAK;MACL,MAAMC,SAAS,GAAGH,WAAW,CAAC9D,WAAW,CAACgE,CAAC,CAAC,CAAC;MAC7C,OAAOnB,KAAK,CAACpB,QAAQ,GAAGwC,SAAS,GAAGA,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI;IAC1D,CACF,CAAC;IAED,MAAMC,UAAU,GAAG5E,QAAQ,CAAa,MAAM;MAC5C,OAAOyE,KAAK,CAAChB,KAAK,CAACoB,GAAG,CAAEH,CAAM,IAAK;QACjC,OAAOJ,KAAK,CAACb,KAAK,CAACqB,IAAI,CAAEnB,IAAI,IAAK;UAChC,OAAOJ,KAAK,CAAClB,WAAW,CAACsB,IAAI,CAACF,KAAK,EAAEiB,CAAC,CAACjB,KAAK,CAAC;QAC/C,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAMsB,QAAQ,GAAG/E,QAAQ,CAAC,MAAM;MAC9B,OAAO4E,UAAU,CAACnB,KAAK,CAACoB,GAAG,CAAEG,SAAS,IAAKA,SAAS,CAACzB,KAAK,CAACE,KAAK,CAAC;IACnE,CAAC,CAAC;IAEF,SAASwB,UAAUA,CAACtB,IAAc,EAAE;MAClC,OAAO,CAAC,CAACiB,UAAU,CAACnB,KAAK,CAACqB,IAAI,CAAEI,YAAY,IAAK;QAC/C,OAAOA,YAAY,EAAEzB,KAAK,KAAKE,IAAI,CAACF,KAAK;MAC3C,CAAC,CAAC;IACJ;;IAEA;IACA,SAAS0B,kBAAkBA,CAACC,KAAiB,EAAE;MAC7C,IAAI7B,KAAK,CAAC8B,QAAQ,EAAE;QAClB;MACF;MACApD,MAAM,CAACwB,KAAK,GAAG,CAACxB,MAAM,CAACwB,KAAK;IAC9B;IAEA,SAAS6B,MAAMA,CAACF,KAAiB,EAAE;MACjC;MACA;MACA;IAAA;;IAGF;IACA,SAASG,WAAWA,CAAC5B,IAAc,EAAEC,CAAa,EAAE;MAClD4B,MAAM,CAAC7B,IAAI,CAAC;MACZ,IAAI,CAACJ,KAAK,CAACpB,QAAQ,EAAE;QACnBF,MAAM,CAACwB,KAAK,GAAG,KAAK;MACtB;IACF;IAEA,SAASgC,YAAYA,CAAA,EAAG;MACtB,IAAIpB,OAAO,CAACZ,KAAK,EAAE;QACjBS,aAAa,CAACT,KAAK,EAAEiC,KAAK,CAAC,CAAC;MAC9B;IACF;IAEA,SAASC,cAAcA,CAACP,KAAiB,EAAE;MACzC,IAAIA,KAAK,CAACQ,MAAM,IAAKzB,OAAO,CAACV,KAAK,EAAUoC,MAAM,EAAEC,QAAQ,CAACrC,KAAK,EAAE;QAClE,OAAQ2B,KAAK,CAACQ,MAAM,EAAkBG,QAAQ,CAC3C5B,OAAO,CAACV,KAAK,EAAUoC,MAAM,EAAEC,QAAQ,CAACrC,KAC3C,CAAC;MACH;IACF;IAEA,SAAS+B,MAAMA,CAAC7B,IAAc,EAAE;MAC9B,IAAIJ,KAAK,CAACpB,QAAQ,EAAE;QAClB,MAAM6D,KAAK,GAAGpB,UAAU,CAACnB,KAAK,CAACwC,SAAS,CAAEf,YAAY,IAAK;UACzD,OAAOA,YAAY,CAACzB,KAAK,KAAKE,IAAI,CAACF,KAAK;QAC1C,CAAC,CAAC;QACF,IAAIuC,KAAK,KAAK,CAAC,CAAC,EAAE;UAChBvB,KAAK,CAAChB,KAAK,GAAG,CAAC,GAAGgB,KAAK,CAAChB,KAAK,EAAEE,IAAI,CAAC;QACtC,CAAC,MAAM;UACL,MAAMuC,GAAG,GAAGzB,KAAK,CAAChB,KAAK,CAAC0C,KAAK,CAAC,CAAC;UAC/BD,GAAG,CAACE,MAAM,CAACJ,KAAK,EAAE,CAAC,CAAC;UACpBvB,KAAK,CAAChB,KAAK,GAAGyC,GAAG;QACnB;MACF,CAAC,MAAM;QACLzB,KAAK,CAAChB,KAAK,GAAG,CAACE,IAAI,CAAC;MACtB;IACF;IAEA,MAAM0C,WAAW,GAAGrG,QAAQ,CAAC,MAAM;MACjC,IAAIuD,KAAK,CAACpB,QAAQ,EAAE;QAClB,OAAOyC,UAAU,CAACnB,KAAK,CAACoB,GAAG,CAAElB,IAAI,IAAKA,IAAI,CAAC2C,IAAI,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;MAC7D;MACA,OAAO3B,UAAU,CAACnB,KAAK,GAAG,CAAC,CAAC,EAAE6C,IAAI,IAAI,EAAE;IAC1C,CAAC,CAAC;IAEF,MAAME,MAAM,GAAGxG,QAAQ,CAAC,MAAM;MAC5B,OAAOmE,OAAO,CAACV,KAAK,EAAE+C,MAAM;IAC9B,CAAC,CAAC;IAEFlG,SAAS,CAAC,MAAM;MACd,MAAMmG,eAAe,GAAG3F,WAAW,CAACyC,KAAK,EAAEtC,WAAW,CAACsC,KAAK,CAAC;MAC7D,MAAMmD,iBAAiB,GAAG5F,WAAW,CACjC,OAAOyC,KAAK,CAACT,YAAY,KAAK,QAAQ,GAAGS,KAAK,CAACT,YAAY,GAAG,CAAC,CAAC,EAChE3B,KAAK,CAACoC,KACV,CAAC;MACD,OAAAoD,YAAA,CAAArF,KAAA;QAAA,cAEaW,MAAM,CAACwB,KAAK;QAAA,uBAAAmD,MAAA,IAAZ3E,MAAM,CAACwB,KAAK,GAAAmD,MAAA;QAAA,OAChBzC,OAAO;QAAA,UACJZ,KAAK,CAACsD,MAAM;QAAA,YACVtD,KAAK,CAACJ,QAAQ;QAAA,SACjBI,KAAK,CAACuD,KAAK;QAAA,UACVvD,KAAK,CAACwD,MAAM;QAAA,mBACH,CAAC,mBAAmB,CAAC;QAAA,aAC3BxD,KAAK,CAACZ,SAAS;QAAA,sBACN,KAAK;QAAA,gBACX8C,YAAY;QAAA,cACdlC,KAAK,CAACN,SAAS;QAAA,eACdM,KAAK,CAACL,UAAU;QAAA,kBACbyC;MAAc;QAG5BqB,IAAI,EAAE,SAAAA,CAAA;UAAA,SAAAC,IAAA,GAAAtF,SAAA,CAAAC,MAAA,EAAIsF,IAAI,OAAAnE,KAAA,CAAAkE,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;YAAJD,IAAI,CAAAC,IAAA,IAAAxF,SAAA,CAAAwF,IAAA;UAAA;UAAA,OACZtD,KAAK,CAACmD,IAAI,GACRnD,KAAK,CAACmD,IAAI,GAAG,GAAGE,IAAI,CAAC,GAAAP,YAAA,CAAA1F,WAAA,EAAAmG,WAAA;YAIjB,GAAGX,eAAe;YAClB,GAAGvG,UAAU,CAAC;cAAE,GAAGgH,IAAI,CAAC,CAAC,CAAC,CAAC3D;YAAM,CAAC,EAAE;cAAEnD,GAAG,EAAE8D;YAAc,CAAC;UAAC;YAAA,uBAExCiB,kBAAkB;YAAA,UAC/BG,MAAM;YAAA;YAAA,SAEP,CAAC,UAAU,EAAE;cAAE,kBAAkB,EAAErD,MAAM,CAACwB;YAAM,CAAC;UAAC,GACrDO,KAAK;YAAA,WACQK,OAAO,CAACZ,KAAK;YAAA,oBAAAmD,MAAA,IAAbvC,OAAO,CAACZ,KAAK,GAAAmD;UAAA;YAG5BpE,OAAO,EAAEA,CAAA,KAAM;cACb,OAAAmE,YAAA;gBAAA,SACc,CAAC,qBAAqB;cAAC,IAChC9C,KAAK,CAACmB,SAAS,GACZnB,KAAK,CAACmB,SAAS,GAAG,CAAC,GACnBqB,WAAW,CAAC5C,KAAK;YAG3B,CAAC;YACD4D,OAAO,EAAExD,KAAK,CAACwD,OAAO,GAClB;cAAA,SAAAC,KAAA,GAAA3F,SAAA,CAAAC,MAAA,EAAIsF,IAAI,OAAAnE,KAAA,CAAAuE,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;gBAAJL,IAAI,CAAAK,KAAA,IAAA5F,SAAA,CAAA4F,KAAA;cAAA;cAAA,OAAY1D,KAAK,CAACwD,OAAO,GAAG,GAAGH,IAAI,CAAC;YAAA,IAC5CrF,SAAS;YACb2F,QAAQ,EAAE,SAAAA,CAAA,EAAoB;cAC5B,OAAO3D,KAAK,CAAC,eAAe,CAAC,GAC3BA,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAA8C,YAAA,CAAAxF,KAAA,EAAAiG,WAAA,CAGlBlH,UAAU,CAACwG,iBAAiB,CAAC;gBAAA,QAC3BnD,KAAK,CAACT,YAAY;gBAAA,SACjB,CAAC,gBAAgB;cAAC,SAE5B;YACH,CAAC;YACD,aAAa,EAAEe,KAAK,CAAC,aAAa,CAAC,GAC/BA,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GACxBhC;UAAS,EAGlB;QAAA;QACHW,OAAO,EAAEqB,KAAK,CAAC4D,IAAI,GACf,MAAM5D,KAAK,CAAC4D,IAAI,CAAC,CAAC,GAClB,MAAAd,YAAA,CAAA3F,KAAA;UAAAwB,OAAA,EAAAA,CAAA,MAEKqB,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EACzBS,KAAK,CAACb,KAAK,CAAC7B,MAAM,GAAG,CAAC,GAAA+E,YAAA,CAAAvF,KAAA;YAAA,OACTgD;UAAO;YAAA5B,OAAA,EAAAA,CAAA,MAChB8B,KAAK,CAACb,KAAK,CAACoB,GAAG,CAAElB,IAAI,IAAK;cACzB,OAAAgD,YAAA,CAAAtF,SAAA;gBAAA,WAEcuC,CAAC,IAAK2B,WAAW,CAAC5B,IAAI,EAAEC,CAAC,CAAC;gBAAA,SAC7B;kBACL,qBAAqB,EAAEqB,UAAU,CAACtB,IAAI;gBACxC;cAAC;gBAAAnB,OAAA,EAAAA,CAAA,MAEAqB,KAAK,CAACF,IAAI,GACPE,KAAK,CAACF,IAAI,CAAC;kBACTA,IAAI;kBACJoB,QAAQ,EAAEE,UAAU,CAACtB,IAAI,CAAC;kBAC1B6B,MAAM,EAAEA,CAAA,KAAM;oBACZA,MAAM,CAAC7B,IAAI,CAAC;kBACd;gBACF,CAAC,CAAC,GACFA,IAAI,CAAC2C,IAAI;cAAA;YAGnB,CAAC,CAAC;UAAA,KAAAK,YAAA;YAAA,SAGO;UAAsB,IAAAe,gBAAA,kDAClC,EACA7D,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC;QAAA;MAE5B;IAIb,CAAC,CAAC;IAEF1D,SAAS,CAAC,MAAM;MACd,IACEoD,KAAK,CAACd,aAAa,KAClBc,KAAK,CAACoE,UAAU,KAAK9F,SAAS,IAC5BkB,KAAK,CAAC6E,OAAO,CAACrE,KAAK,CAACoE,UAAU,CAAC,IAAIpE,KAAK,CAACoE,UAAU,CAAC/F,MAAM,KAAK,CAAE,CAAC,IACrE0C,KAAK,CAACb,KAAK,EAAE7B,MAAM,EACnB;QACA4D,MAAM,CAAClB,KAAK,CAACb,KAAK,CAAC,CAAC,CAAC,CAAC;MACxB;IACF,CAAC,CAAC;IAEFQ,MAAM,CAAC;MACLC,aAAa;MACbsC;IACF,CAAC,CAAC;IAEF,OAAO;MACLtC,aAAa;MACbO,KAAK;MACLG,UAAU;MACVG,QAAQ;MACRZ,OAAO;MACPqC;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
.y-select {
|
|
2
2
|
&__icon {
|
|
3
3
|
transition: 200ms ease;
|
|
4
|
-
width: 1.5em;
|
|
5
|
-
height: 1.5em;
|
|
6
4
|
margin-right: 8px;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
width: 1.5em;
|
|
10
|
-
height: 1.5em;
|
|
11
|
-
}
|
|
5
|
+
width: 24px;
|
|
6
|
+
height: 24px;
|
|
12
7
|
}
|
|
13
8
|
|
|
14
9
|
&--opened &__icon {
|
|
15
|
-
transform: rotate3d(1, 0, 0, 180deg)
|
|
10
|
+
transform: rotate3d(1, 0, 0, 180deg);
|
|
16
11
|
}
|
|
17
12
|
|
|
18
13
|
&__content {
|
package/lib/composables/icon.mjs
CHANGED
|
@@ -1,2 +1,143 @@
|
|
|
1
|
+
import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
2
|
+
import { computed, defineComponent, inject, mergeProps, unref } from 'vue';
|
|
3
|
+
import { builtSet } from "../components/index.mjs";
|
|
4
|
+
import { mergeDeep, propsFactory } from "../util/index.mjs";
|
|
1
5
|
export const IconPropOption = [String, Function, Object, Array];
|
|
6
|
+
export const IconValue = [String, Object, Array, Function];
|
|
7
|
+
export const pressIconPropsOptions = propsFactory({
|
|
8
|
+
icon: {
|
|
9
|
+
type: IconValue
|
|
10
|
+
},
|
|
11
|
+
tag: {
|
|
12
|
+
type: String,
|
|
13
|
+
required: true
|
|
14
|
+
}
|
|
15
|
+
}, 'icon');
|
|
16
|
+
export const YComponentIcon = defineComponent({
|
|
17
|
+
name: 'YComponentIcon',
|
|
18
|
+
props: pressIconPropsOptions(),
|
|
19
|
+
setup(props, _ref) {
|
|
20
|
+
let {
|
|
21
|
+
slots
|
|
22
|
+
} = _ref;
|
|
23
|
+
return () => {
|
|
24
|
+
const icon = props.icon;
|
|
25
|
+
let Icon = () => _createVNode(_Fragment, null, null);
|
|
26
|
+
let iconProps = {};
|
|
27
|
+
if (icon instanceof Object) {
|
|
28
|
+
Icon = icon;
|
|
29
|
+
if ('component' in icon) {
|
|
30
|
+
Icon = icon.component;
|
|
31
|
+
iconProps = icon?.props;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return _createVNode(props.tag, null, {
|
|
35
|
+
default: () => [props.icon ? _createVNode(Icon, mergeProps(iconProps), null) : slots.default?.()]
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
export const YSvgIcon = defineComponent({
|
|
41
|
+
name: 'YSvgIcon',
|
|
42
|
+
inheritAttrs: false,
|
|
43
|
+
props: pressIconPropsOptions(),
|
|
44
|
+
setup(props, _ref2) {
|
|
45
|
+
let {
|
|
46
|
+
attrs
|
|
47
|
+
} = _ref2;
|
|
48
|
+
return () => {
|
|
49
|
+
return _createVNode(props.tag, attrs, {
|
|
50
|
+
default: () => [_createVNode("svg", {
|
|
51
|
+
"class": "y-icon__svg",
|
|
52
|
+
"xmlns": "http://www.w3.org/2000/svg",
|
|
53
|
+
"viewBox": "0 0 24 24",
|
|
54
|
+
"role": "img",
|
|
55
|
+
"aria-hidden": "true"
|
|
56
|
+
}, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? _createVNode("path", {
|
|
57
|
+
"d": path[0],
|
|
58
|
+
"fill-opacity": path[1]
|
|
59
|
+
}, null) : _createVNode("path", {
|
|
60
|
+
"d": path
|
|
61
|
+
}, null)) : _createVNode("path", {
|
|
62
|
+
"d": props.icon
|
|
63
|
+
}, null)])]
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
export const YUYEON_ICON_KEY = Symbol.for('yuyeon.icon');
|
|
69
|
+
export function createIconModule(options) {
|
|
70
|
+
return mergeDeep({
|
|
71
|
+
defaultSet: 'built',
|
|
72
|
+
sets: {
|
|
73
|
+
svg: {
|
|
74
|
+
component: YSvgIcon
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
aliases: {
|
|
78
|
+
...builtSet
|
|
79
|
+
}
|
|
80
|
+
}, options);
|
|
81
|
+
}
|
|
82
|
+
export function useIcon(iconProp) {
|
|
83
|
+
const iconModule = inject(YUYEON_ICON_KEY);
|
|
84
|
+
if (!iconModule) throw new Error('Not found provided "IconModule"');
|
|
85
|
+
const iconData = computed(() => {
|
|
86
|
+
const iconMeta = unref(iconProp);
|
|
87
|
+
if (!iconMeta) return {
|
|
88
|
+
component: YComponentIcon
|
|
89
|
+
};
|
|
90
|
+
let icon = iconMeta;
|
|
91
|
+
if (typeof icon === 'object' && 'alias' in icon && typeof icon.alias === 'string') {
|
|
92
|
+
icon = icon.alias;
|
|
93
|
+
}
|
|
94
|
+
if (typeof icon === 'string') {
|
|
95
|
+
icon = icon.trim();
|
|
96
|
+
if (icon.startsWith('$')) {
|
|
97
|
+
icon = iconModule.aliases?.[icon.slice(1)];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (!icon) throw new Error(`Could not find aliased icon "${iconMeta}"`);
|
|
101
|
+
if (Array.isArray(icon)) {
|
|
102
|
+
return {
|
|
103
|
+
component: YSvgIcon,
|
|
104
|
+
icon
|
|
105
|
+
};
|
|
106
|
+
} else if (typeof icon !== 'string') {
|
|
107
|
+
const iconValue = unref(iconProp);
|
|
108
|
+
console.log(iconValue);
|
|
109
|
+
if (iconValue && typeof iconValue === 'object' && 'iconProps' in iconValue) {
|
|
110
|
+
icon = {
|
|
111
|
+
component: 'component' in icon ? icon.component : icon,
|
|
112
|
+
props: 'props' in icon ? mergeDeep(icon.props, iconValue?.iconProps ?? {}) : iconValue.iconProps
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
component: YComponentIcon,
|
|
117
|
+
icon
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const iconSetName = Object.keys(iconModule.sets).find(setName => typeof icon === 'string' && icon.startsWith(`${setName}:`));
|
|
121
|
+
const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;
|
|
122
|
+
const iconSet = iconModule.sets[iconSetName ?? iconModule.defaultSet];
|
|
123
|
+
if (!iconSet?.component && typeof icon === 'string') {
|
|
124
|
+
const text = new DOMParser().parseFromString(icon, 'text/xml');
|
|
125
|
+
const svgNode = text.querySelector('svg');
|
|
126
|
+
if (svgNode) {
|
|
127
|
+
return {
|
|
128
|
+
component: () => {
|
|
129
|
+
template: svgNode;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
icon: iconName,
|
|
136
|
+
component: iconSet.component
|
|
137
|
+
};
|
|
138
|
+
});
|
|
139
|
+
return {
|
|
140
|
+
iconData
|
|
141
|
+
};
|
|
142
|
+
}
|
|
2
143
|
//# sourceMappingURL=icon.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.mjs","names":["IconPropOption","String","Function","Object","Array"],"sources":["../../src/composables/icon.ts"],"sourcesContent":["\r\nimport type { Component, PropType } from \"vue\";\r\n\r\nexport type IconValue = string | (string | [path: string, opacity: number])[] | Component;\r\n\r\nexport const IconPropOption = [String, Function, Object, Array] as PropType<IconValue>;\r\n\r\ntype IconProps = {\r\n tag: string;\r\n icon?: IconValue,\r\n disabled?: Boolean,\r\n}\r\n\r\ntype IconComponent = Component<IconProps>;\r\n"],"mappings":"AAKA,OAAO,MAAMA,cAAc,GAAG,CAACC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,CAAwB"}
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["computed","effectScope","getCurrentInstance","inject","provide","reactive","readonly","ref","unref","watch","bindThemeClass","propsFactory","createPalette","createThemes","cssClass","cssVariables","configureOptions","Y_THEME_PREFIX","YUYEON_THEME_KEY","Symbol","for","pressThemePropsOptions","theme","String","isDarkMode","window","matchMedia","matches","isSupportAutoScheme","media","createThemeModule","options","appMountedScope","config","scheme","themes","palette","supportedAutoMode","preferColorScheme","darkModeWatcher","mediaQueryList","value","currentColorScheme","currentThemeKey","computedThemes","Array","isArray","computedPalette","styles","lines","push","themeKey","themeDefs","Object","entries","colors","variables","isDark","records","themeScheme","join","install","app","directive","styleEl","document","getElementById","updateStyleEl","immediate","el","createElement","type","id","cspNonce","setAttribute","head","appendChild","innerHTML","bindTheme","yuyeon","mql","addEventListener","neo","lightTheme","darkTheme","root","dataset","init","run","themeClasses","scope","instance","global","useLocalTheme","props","themeModule","Error","newTheme","useTheme"],"sources":["../../../src/composables/theme/index.ts"],"sourcesContent":["import type {App, ComputedRef, PropType, Ref} from 'vue';\r\nimport {\r\n computed,\r\n effectScope,\r\n getCurrentInstance,\r\n inject,\r\n provide,\r\n reactive,\r\n readonly,\r\n ref,\r\n unref,\r\n watch,\r\n} from 'vue';\r\n\r\nimport bindThemeClass from '../../directives/theme-class';\r\nimport { propsFactory } from '../../util/vue-component';\r\nimport { createPalette, createThemes } from './factory';\r\nimport { cssClass, cssVariables } from './helper';\r\nimport { ThemeScheme, configureOptions } from './setting';\r\nimport type { ThemeOptions } from './types';\r\n\r\nexport type { ThemeOptions };\r\n\r\nexport const Y_THEME_PREFIX = 'y-theme';\r\n\r\nexport interface ThemeModuleInstance {\r\n scheme: keyof typeof ThemeScheme | 'auto';\r\n theme: Ref<[string, string?]>;\r\n // theme values(schemes) for colors & variables\r\n readonly themes: any;\r\n readonly global: {\r\n // currentThemeKeys: [lightThemeKey, darkThemeKey]\r\n // If used manually, fix the scheme to 'light' and have a [lightThemeKey] value.\r\n // Use the appropriate default theme scheme if it does not match the themeKey\r\n scheme: keyof typeof ThemeScheme | 'auto';\r\n theme: Ref<[string, string?]>;\r\n };\r\n /* computed */\r\n readonly currentThemeKey: Readonly<ComputedRef<string>>;\r\n readonly themeClasses: Readonly<ComputedRef<string | undefined>>;\r\n readonly computedThemes: Readonly<ComputedRef<any>>;\r\n readonly computedPalette: Readonly<ComputedRef<any>>;\r\n /* */\r\n readonly supportedAutoMode: Readonly<Ref<boolean>>;\r\n readonly preferColorScheme: Readonly<Ref<'light' | 'dark'>>;\r\n}\r\n\r\nexport const YUYEON_THEME_KEY = Symbol.for('yuyeon.theme');\r\n\r\nexport const pressThemePropsOptions = propsFactory(\r\n {\r\n theme: String as PropType<string>,\r\n },\r\n 'theme',\r\n);\r\n\r\nexport function isDarkMode() {\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n}\r\n\r\nexport function isSupportAutoScheme() {\r\n return window.matchMedia('(prefers-color-scheme)').media !== 'not all';\r\n}\r\n\r\nexport function createThemeModule(options: ThemeOptions) {\r\n const appMountedScope = effectScope();\r\n const config = reactive(configureOptions(options));\r\n const scheme = ref<string>(config.scheme);\r\n const theme = ref<[string, string]>(config.theme);\r\n const themes = ref(config.themes);\r\n const palette = ref(config.palette);\r\n const supportedAutoMode = ref(true);\r\n const preferColorScheme = ref('');\r\n\r\n function darkModeWatcher(\r\n mediaQueryList: MediaQueryListEvent | MediaQueryList,\r\n ) {\r\n preferColorScheme.value = mediaQueryList.matches ? 'dark' : 'light';\r\n }\r\n\r\n const currentColorScheme = computed<'light' | 'dark'>(() => {\r\n if (scheme.value === 'auto') {\r\n return preferColorScheme.value as 'light' | 'dark';\r\n }\r\n if (scheme.value === 'dark') {\r\n return 'dark';\r\n }\r\n return 'light';\r\n });\r\n\r\n const currentThemeKey = computed(() => {\r\n if (typeof theme.value === 'string') {\r\n if (theme.value in computedThemes) {\r\n return theme.value;\r\n }\r\n }\r\n if (Array.isArray(theme.value)) {\r\n return currentColorScheme.value === 'dark'\r\n ? theme.value?.[1] ?? 'dark'\r\n : theme.value?.[0] ?? 'light';\r\n }\r\n return currentColorScheme.value;\r\n });\r\n\r\n const computedPalette = computed(() => {\r\n return createPalette(palette.value);\r\n });\r\n\r\n const computedThemes = computed(() => {\r\n return createThemes(themes.value);\r\n });\r\n\r\n const styles = computed(() => {\r\n const lines = [];\r\n lines.push(\r\n ...cssClass(':root', cssVariables(computedPalette.value, 'palette')),\r\n );\r\n for (const [themeKey, themeDefs] of Object.entries(computedThemes.value)) {\r\n const { colors, variables, isDark } = themeDefs;\r\n const records: Record<string, string> = {\r\n ...colors,\r\n ...variables,\r\n };\r\n // if (currentThemeKey.value === themeKey) {\r\n // lines.push(...cssClass(':root', cssVariables(records, 'theme')));\r\n // }\r\n const themeScheme = isDark ? 'dark' : 'light';\r\n if (scheme.value === 'auto') {\r\n lines.push(\r\n ...cssClass(\r\n `@media (prefers-color-scheme: ${themeScheme})`,\r\n cssClass(\r\n `[data-theme-scheme='auto'][data-${themeScheme}-theme='${themeKey}']`,\r\n cssVariables(records, 'theme'),\r\n ),\r\n ),\r\n );\r\n } else {\r\n lines.push(\r\n ...cssClass(\r\n `[data-theme-scheme='${themeScheme}'][data-${themeScheme}-theme='${themeKey}']`,\r\n cssVariables(records, 'theme'),\r\n ),\r\n );\r\n }\r\n\r\n lines.push(\r\n ...cssClass(`.y-theme--${themeKey}`, cssVariables(records, 'theme')),\r\n );\r\n }\r\n return lines.join('');\r\n });\r\n\r\n function install(app: App) {\r\n app.directive('theme', bindThemeClass);\r\n\r\n let styleEl = document.getElementById('yuyeon-theme-palette');\r\n\r\n watch(styles, updateStyleEl, { immediate: true });\r\n\r\n function updateStyleEl() {\r\n if (typeof document !== 'undefined' && !styleEl) {\r\n const el = document.createElement('style');\r\n el.type = 'text/css';\r\n el.id = 'yuyeon-theme-palette';\r\n if (options?.cspNonce) el.setAttribute('nonce', options.cspNonce);\r\n styleEl = el;\r\n document.head.appendChild(styleEl);\r\n }\r\n if (styleEl) {\r\n styleEl.innerHTML = styles.value;\r\n }\r\n }\r\n }\r\n\r\n function bindTheme(yuyeon: any) {\r\n supportedAutoMode.value = isSupportAutoScheme();\r\n if (supportedAutoMode.value) {\r\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\r\n darkModeWatcher(mql);\r\n mql.addEventListener('change' as 'change', darkModeWatcher);\r\n }\r\n watch(\r\n theme,\r\n (neo) => {\r\n const [lightTheme, darkTheme] = neo;\r\n yuyeon.root.dataset.lightTheme = lightTheme;\r\n yuyeon.root.dataset.darkTheme = darkTheme;\r\n },\r\n { immediate: true },\r\n );\r\n watch(\r\n scheme,\r\n (neo) => {\r\n yuyeon.root.setAttribute(\r\n 'data-theme-scheme',\r\n neo === 'auto' ? 'auto' : currentColorScheme.value,\r\n );\r\n },\r\n { immediate: true },\r\n );\r\n }\r\n\r\n function init(yuyeon: any) {\r\n appMountedScope.run(() => {\r\n bindTheme(yuyeon);\r\n });\r\n }\r\n\r\n const themeClasses = computed(() => `y-theme--${currentThemeKey.value}`);\r\n\r\n return {\r\n install,\r\n init,\r\n scope: appMountedScope,\r\n instance: {\r\n global: {\r\n scheme,\r\n theme,\r\n },\r\n themes,\r\n scheme,\r\n theme,\r\n currentThemeKey,\r\n themeClasses,\r\n computedThemes,\r\n computedPalette,\r\n supportedAutoMode: readonly(supportedAutoMode),\r\n preferColorScheme: readonly(preferColorScheme),\r\n },\r\n };\r\n}\r\n\r\nexport function useLocalTheme(props: { theme?: string }) {\r\n getCurrentInstance();\r\n\r\n const themeModule = inject<ThemeModuleInstance | null>(\r\n YUYEON_THEME_KEY,\r\n null,\r\n );\r\n\r\n if (!themeModule) throw new Error('Not found provided \"ThemeModule\"');\r\n\r\n const palette = themeModule.computedPalette;\r\n\r\n const currentThemeKey = computed<string>(() => {\r\n if (props.theme) {\r\n switch (props.theme) {\r\n case 'light':\r\n return themeModule.theme.value?.[0] ?? 'light';\r\n case 'dark':\r\n return themeModule.theme.value?.[1] ?? 'dark';\r\n // TODO: props.theme(themeKey) validation in themes\r\n default:\r\n return props.theme;\r\n }\r\n }\r\n return unref(themeModule.currentThemeKey);\r\n });\r\n\r\n const themeClasses = computed(() => `y-theme--${currentThemeKey.value}`);\r\n\r\n const newTheme: ThemeModuleInstance = {\r\n ...themeModule,\r\n currentThemeKey,\r\n themeClasses,\r\n };\r\n\r\n provide(YUYEON_THEME_KEY, newTheme);\r\n\r\n return newTheme;\r\n}\r\n\r\nexport function useTheme() {\r\n getCurrentInstance();\r\n\r\n const theme = inject<ThemeModuleInstance | null>(YUYEON_THEME_KEY, null);\r\n\r\n if (!theme) throw new Error('Not found provided \"ThemeModule\"');\r\n\r\n return theme;\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["computed","effectScope","getCurrentInstance","inject","provide","reactive","readonly","ref","unref","watch","bindThemeClass","propsFactory","createPalette","createThemes","cssClass","cssVariables","configureOptions","Y_THEME_PREFIX","YUYEON_THEME_KEY","Symbol","for","pressThemePropsOptions","theme","String","isDarkMode","window","matchMedia","matches","isSupportAutoScheme","media","createThemeModule","options","appMountedScope","config","scheme","themes","palette","supportedAutoMode","preferColorScheme","darkModeWatcher","mediaQueryList","value","currentColorScheme","currentThemeKey","computedThemes","Array","isArray","computedPalette","styles","lines","push","themeKey","themeDefs","Object","entries","colors","variables","isDark","records","themeScheme","join","install","app","directive","styleEl","document","getElementById","updateStyleEl","immediate","el","createElement","type","id","cspNonce","setAttribute","head","appendChild","innerHTML","bindTheme","yuyeon","mql","addEventListener","neo","lightTheme","darkTheme","root","dataset","init","run","themeClasses","scope","instance","global","useLocalTheme","props","themeModule","Error","newTheme","useTheme"],"sources":["../../../src/composables/theme/index.ts"],"sourcesContent":["import type {App, ComputedRef, PropType, Ref} from 'vue';\r\nimport {\r\n computed,\r\n effectScope,\r\n getCurrentInstance,\r\n inject,\r\n provide,\r\n reactive,\r\n readonly,\r\n ref,\r\n unref,\r\n watch,\r\n} from 'vue';\r\n\r\nimport bindThemeClass from '../../directives/theme-class';\r\nimport { propsFactory } from '../../util/vue-component';\r\nimport { createPalette, createThemes } from './factory';\r\nimport { cssClass, cssVariables } from './helper';\r\nimport { ThemeScheme, configureOptions } from './setting';\r\nimport type { ThemeOptions } from './types';\r\n\r\nexport type { ThemeOptions };\r\n\r\nexport const Y_THEME_PREFIX = 'y-theme';\r\n\r\nexport interface ThemeModuleInstance {\r\n scheme: Ref<keyof typeof ThemeScheme | 'auto'>;\r\n theme: Ref<[string, string?]>;\r\n // theme values(schemes) for colors & variables\r\n readonly themes: any;\r\n readonly global: {\r\n // currentThemeKeys: [lightThemeKey, darkThemeKey]\r\n // If used manually, fix the scheme to 'light' and have a [lightThemeKey] value.\r\n // Use the appropriate default theme scheme if it does not match the themeKey\r\n scheme: Ref<keyof typeof ThemeScheme | 'auto'>;\r\n theme: Ref<[string, string?]>;\r\n };\r\n /* computed */\r\n readonly currentThemeKey: Readonly<ComputedRef<string>>;\r\n readonly themeClasses: Readonly<ComputedRef<string | undefined>>;\r\n readonly computedThemes: Readonly<ComputedRef<any>>;\r\n readonly computedPalette: Readonly<ComputedRef<any>>;\r\n /* */\r\n readonly supportedAutoMode: Readonly<Ref<boolean>>;\r\n readonly preferColorScheme: Readonly<Ref<'light' | 'dark'>>;\r\n}\r\n\r\nexport const YUYEON_THEME_KEY = Symbol.for('yuyeon.theme');\r\n\r\nexport const pressThemePropsOptions = propsFactory(\r\n {\r\n theme: String as PropType<string>,\r\n },\r\n 'theme',\r\n);\r\n\r\nexport function isDarkMode() {\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n}\r\n\r\nexport function isSupportAutoScheme() {\r\n return window.matchMedia('(prefers-color-scheme)').media !== 'not all';\r\n}\r\n\r\nexport function createThemeModule(options: ThemeOptions) {\r\n const appMountedScope = effectScope();\r\n const config = reactive(configureOptions(options));\r\n const scheme = ref<string>(config.scheme);\r\n const theme = ref<[string, string]>(config.theme);\r\n const themes = ref(config.themes);\r\n const palette = ref(config.palette);\r\n const supportedAutoMode = ref(true);\r\n const preferColorScheme = ref('');\r\n\r\n function darkModeWatcher(\r\n mediaQueryList: MediaQueryListEvent | MediaQueryList,\r\n ) {\r\n preferColorScheme.value = mediaQueryList.matches ? 'dark' : 'light';\r\n }\r\n\r\n const currentColorScheme = computed<'light' | 'dark'>(() => {\r\n if (scheme.value === 'auto') {\r\n return preferColorScheme.value as 'light' | 'dark';\r\n }\r\n if (scheme.value === 'dark') {\r\n return 'dark';\r\n }\r\n return 'light';\r\n });\r\n\r\n const currentThemeKey = computed(() => {\r\n if (typeof theme.value === 'string') {\r\n if (theme.value in computedThemes) {\r\n return theme.value;\r\n }\r\n }\r\n if (Array.isArray(theme.value)) {\r\n return currentColorScheme.value === 'dark'\r\n ? theme.value?.[1] ?? 'dark'\r\n : theme.value?.[0] ?? 'light';\r\n }\r\n return currentColorScheme.value;\r\n });\r\n\r\n const computedPalette = computed(() => {\r\n return createPalette(palette.value);\r\n });\r\n\r\n const computedThemes = computed(() => {\r\n return createThemes(themes.value);\r\n });\r\n\r\n const styles = computed(() => {\r\n const lines = [];\r\n lines.push(\r\n ...cssClass(':root', cssVariables(computedPalette.value, 'palette')),\r\n );\r\n for (const [themeKey, themeDefs] of Object.entries(computedThemes.value)) {\r\n const { colors, variables, isDark } = themeDefs;\r\n const records: Record<string, string> = {\r\n ...colors,\r\n ...variables,\r\n };\r\n // if (currentThemeKey.value === themeKey) {\r\n // lines.push(...cssClass(':root', cssVariables(records, 'theme')));\r\n // }\r\n const themeScheme = isDark ? 'dark' : 'light';\r\n if (scheme.value === 'auto') {\r\n lines.push(\r\n ...cssClass(\r\n `@media (prefers-color-scheme: ${themeScheme})`,\r\n cssClass(\r\n `[data-theme-scheme='auto'][data-${themeScheme}-theme='${themeKey}']`,\r\n cssVariables(records, 'theme'),\r\n ),\r\n ),\r\n );\r\n } else {\r\n lines.push(\r\n ...cssClass(\r\n `[data-theme-scheme='${themeScheme}'][data-${themeScheme}-theme='${themeKey}']`,\r\n cssVariables(records, 'theme'),\r\n ),\r\n );\r\n }\r\n\r\n lines.push(\r\n ...cssClass(`.y-theme--${themeKey}`, cssVariables(records, 'theme')),\r\n );\r\n }\r\n return lines.join('');\r\n });\r\n\r\n function install(app: App) {\r\n app.directive('theme', bindThemeClass);\r\n\r\n let styleEl = document.getElementById('yuyeon-theme-palette');\r\n\r\n watch(styles, updateStyleEl, { immediate: true });\r\n\r\n function updateStyleEl() {\r\n if (typeof document !== 'undefined' && !styleEl) {\r\n const el = document.createElement('style');\r\n el.type = 'text/css';\r\n el.id = 'yuyeon-theme-palette';\r\n if (options?.cspNonce) el.setAttribute('nonce', options.cspNonce);\r\n styleEl = el;\r\n document.head.appendChild(styleEl);\r\n }\r\n if (styleEl) {\r\n styleEl.innerHTML = styles.value;\r\n }\r\n }\r\n }\r\n\r\n function bindTheme(yuyeon: any) {\r\n supportedAutoMode.value = isSupportAutoScheme();\r\n if (supportedAutoMode.value) {\r\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\r\n darkModeWatcher(mql);\r\n mql.addEventListener('change' as 'change', darkModeWatcher);\r\n }\r\n watch(\r\n theme,\r\n (neo) => {\r\n const [lightTheme, darkTheme] = neo;\r\n yuyeon.root.dataset.lightTheme = lightTheme;\r\n yuyeon.root.dataset.darkTheme = darkTheme;\r\n },\r\n { immediate: true },\r\n );\r\n watch(\r\n scheme,\r\n (neo) => {\r\n yuyeon.root.setAttribute(\r\n 'data-theme-scheme',\r\n neo === 'auto' ? 'auto' : currentColorScheme.value,\r\n );\r\n },\r\n { immediate: true },\r\n );\r\n }\r\n\r\n function init(yuyeon: any) {\r\n appMountedScope.run(() => {\r\n bindTheme(yuyeon);\r\n });\r\n }\r\n\r\n const themeClasses = computed(() => `y-theme--${currentThemeKey.value}`);\r\n\r\n return {\r\n install,\r\n init,\r\n scope: appMountedScope,\r\n instance: {\r\n global: {\r\n scheme,\r\n theme,\r\n },\r\n themes,\r\n scheme,\r\n theme,\r\n currentThemeKey,\r\n themeClasses,\r\n computedThemes,\r\n computedPalette,\r\n supportedAutoMode: readonly(supportedAutoMode),\r\n preferColorScheme: readonly(preferColorScheme),\r\n },\r\n };\r\n}\r\n\r\nexport function useLocalTheme(props: { theme?: string }) {\r\n getCurrentInstance();\r\n\r\n const themeModule = inject<ThemeModuleInstance | null>(\r\n YUYEON_THEME_KEY,\r\n null,\r\n );\r\n\r\n if (!themeModule) throw new Error('Not found provided \"ThemeModule\"');\r\n\r\n const palette = themeModule.computedPalette;\r\n\r\n const currentThemeKey = computed<string>(() => {\r\n if (props.theme) {\r\n switch (props.theme) {\r\n case 'light':\r\n return themeModule.theme.value?.[0] ?? 'light';\r\n case 'dark':\r\n return themeModule.theme.value?.[1] ?? 'dark';\r\n // TODO: props.theme(themeKey) validation in themes\r\n default:\r\n return props.theme;\r\n }\r\n }\r\n return unref(themeModule.currentThemeKey);\r\n });\r\n\r\n const themeClasses = computed(() => `y-theme--${currentThemeKey.value}`);\r\n\r\n const newTheme: ThemeModuleInstance = {\r\n ...themeModule,\r\n currentThemeKey,\r\n themeClasses,\r\n };\r\n\r\n provide(YUYEON_THEME_KEY, newTheme);\r\n\r\n return newTheme;\r\n}\r\n\r\nexport function useTheme() {\r\n getCurrentInstance();\r\n\r\n const theme = inject<ThemeModuleInstance | null>(YUYEON_THEME_KEY, null);\r\n\r\n if (!theme) throw new Error('Not found provided \"ThemeModule\"');\r\n\r\n return theme;\r\n}\r\n"],"mappings":"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"}
|
package/lib/index.mjs
CHANGED
|
@@ -7,6 +7,7 @@ import { YUYEON_THEME_KEY, createThemeModule, useTheme } from "./composables/the
|
|
|
7
7
|
import PlateWave from "./directives/plate-wave/index.mjs";
|
|
8
8
|
import { YUYEON_LOGO } from "./etc/index.mjs"; //
|
|
9
9
|
import "./styles/base.scss";
|
|
10
|
+
import { createIconModule, YUYEON_ICON_KEY } from "./composables/icon.mjs";
|
|
10
11
|
const defaultOptions = {
|
|
11
12
|
credit: true
|
|
12
13
|
};
|
|
@@ -15,6 +16,7 @@ export function init() {
|
|
|
15
16
|
const themeModule = createThemeModule(options?.theme);
|
|
16
17
|
const i18nModule = createI18nModule(options?.i18n);
|
|
17
18
|
const dateModule = createDateModule(options?.date, i18nModule.localeModule);
|
|
19
|
+
const iconModule = createIconModule(options?.icon);
|
|
18
20
|
const install = app => {
|
|
19
21
|
themeModule.install(app);
|
|
20
22
|
const yuyeon = reactive({
|
|
@@ -33,6 +35,7 @@ export function init() {
|
|
|
33
35
|
});
|
|
34
36
|
app.directive('plate-wave', PlateWave);
|
|
35
37
|
app.provide(YUYEON_THEME_KEY, themeModule.instance);
|
|
38
|
+
app.provide(YUYEON_ICON_KEY, iconModule);
|
|
36
39
|
app.provide(YUYEON_I18N_KEY, {
|
|
37
40
|
...i18nModule.localeModule,
|
|
38
41
|
...i18nModule.rtlModule
|
package/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["nextTick","reactive","components","YUYEON_DATE_KEY","YUYEON_DATE_OPTIONS_KEY","createDateModule","createI18nModule","YUYEON_I18N_KEY","YUYEON_THEME_KEY","createThemeModule","useTheme","PlateWave","YUYEON_LOGO","defaultOptions","credit","init","options","arguments","length","undefined","themeModule","theme","i18nModule","i18n","dateModule","date","localeModule","install","app","yuyeon","root","instance","rtlModule","Object","keys","forEach","componentName","comp","component","directive","provide","config","globalProperties","$yuyeon","_instance","_container","Error","$el","classList","add","setAttribute","console","log","unmount","scope","stop"],"sources":["../src/index.ts"],"sourcesContent":["import { Component, ComponentInternalInstance } from '@vue/runtime-core';\r\nimport type { App } from 'vue';\r\nimport { nextTick, reactive } from 'vue';\r\n\r\nimport * as components from './components';\r\nimport {\r\n YUYEON_DATE_KEY,\r\n YUYEON_DATE_OPTIONS_KEY,\r\n createDateModule,\r\n} from './composables/date';\r\nimport { createI18nModule } from './composables/i18n';\r\nimport { YUYEON_I18N_KEY } from './composables/i18n/share';\r\nimport {\r\n YUYEON_THEME_KEY,\r\n createThemeModule,\r\n useTheme,\r\n} from './composables/theme';\r\nimport PlateWave from './directives/plate-wave';\r\nimport { YUYEON_LOGO } from './etc';\r\n\r\n//\r\nimport './styles/base.scss';\r\n\r\nconst defaultOptions = {\r\n credit: true,\r\n};\r\n\r\ndeclare module 'vue' {\r\n interface ComponentCustomProperties {\r\n $yuyeon: any;\r\n }\r\n}\r\n\r\nexport function init(options: any = defaultOptions) {\r\n const themeModule = createThemeModule(options?.theme);\r\n const i18nModule = createI18nModule(options?.i18n);\r\n const dateModule = createDateModule(options?.date, i18nModule.localeModule);\r\n
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["nextTick","reactive","components","YUYEON_DATE_KEY","YUYEON_DATE_OPTIONS_KEY","createDateModule","createI18nModule","YUYEON_I18N_KEY","YUYEON_THEME_KEY","createThemeModule","useTheme","PlateWave","YUYEON_LOGO","createIconModule","YUYEON_ICON_KEY","defaultOptions","credit","init","options","arguments","length","undefined","themeModule","theme","i18nModule","i18n","dateModule","date","localeModule","iconModule","icon","install","app","yuyeon","root","instance","rtlModule","Object","keys","forEach","componentName","comp","component","directive","provide","config","globalProperties","$yuyeon","_instance","_container","Error","$el","classList","add","setAttribute","console","log","unmount","scope","stop"],"sources":["../src/index.ts"],"sourcesContent":["import { Component, ComponentInternalInstance } from '@vue/runtime-core';\r\nimport type { App } from 'vue';\r\nimport { nextTick, reactive } from 'vue';\r\n\r\nimport * as components from './components';\r\nimport {\r\n YUYEON_DATE_KEY,\r\n YUYEON_DATE_OPTIONS_KEY,\r\n createDateModule,\r\n} from './composables/date';\r\nimport { createI18nModule } from './composables/i18n';\r\nimport { YUYEON_I18N_KEY } from './composables/i18n/share';\r\nimport {\r\n YUYEON_THEME_KEY,\r\n createThemeModule,\r\n useTheme,\r\n} from './composables/theme';\r\nimport PlateWave from './directives/plate-wave';\r\nimport { YUYEON_LOGO } from './etc';\r\n\r\n//\r\nimport './styles/base.scss';\r\nimport {createIconModule, YUYEON_ICON_KEY} from \"./composables/icon\";\r\n\r\nconst defaultOptions = {\r\n credit: true,\r\n};\r\n\r\ndeclare module 'vue' {\r\n interface ComponentCustomProperties {\r\n $yuyeon: any;\r\n }\r\n}\r\n\r\nexport function init(options: any = defaultOptions) {\r\n const themeModule = createThemeModule(options?.theme);\r\n const i18nModule = createI18nModule(options?.i18n);\r\n const dateModule = createDateModule(options?.date, i18nModule.localeModule);\r\n const iconModule = createIconModule(options?.icon);\r\n const install = (app: App): any => {\r\n themeModule.install(app);\r\n\r\n const yuyeon = reactive({\r\n app: null as ComponentInternalInstance | null,\r\n root: null as HTMLElement | null,\r\n theme: themeModule.instance,\r\n i18n: {\r\n ...i18nModule.localeModule,\r\n ...i18nModule.rtlModule,\r\n },\r\n date: dateModule,\r\n });\r\n\r\n Object.keys(components).forEach((componentName) => {\r\n const comp = components[componentName as keyof typeof components];\r\n app.component(componentName, comp as Component);\r\n });\r\n\r\n app.directive('plate-wave', PlateWave);\r\n\r\n app.provide(YUYEON_THEME_KEY, themeModule.instance);\r\n app.provide(YUYEON_ICON_KEY, iconModule);\r\n app.provide(YUYEON_I18N_KEY, {\r\n ...i18nModule.localeModule,\r\n ...i18nModule.rtlModule,\r\n });\r\n app.provide(YUYEON_DATE_OPTIONS_KEY, dateModule.options);\r\n app.provide(YUYEON_DATE_KEY, dateModule.instance);\r\n\r\n app.config.globalProperties.$yuyeon = yuyeon;\r\n\r\n nextTick(() => {\r\n yuyeon.app = app._instance as any;\r\n yuyeon.root = app._container;\r\n if (!yuyeon.root) {\r\n throw new Error(`yuyeon: Can't found instance`);\r\n }\r\n const $el = yuyeon.root;\r\n $el.classList.add('y-root');\r\n $el.setAttribute('data-y-root', '');\r\n themeModule.init(yuyeon);\r\n });\r\n if (options?.credit) {\r\n console.log(YUYEON_LOGO);\r\n }\r\n const { unmount } = app;\r\n app.unmount = () => {\r\n unmount();\r\n themeModule.scope.stop();\r\n app.unmount = unmount;\r\n };\r\n };\r\n\r\n return {\r\n install,\r\n };\r\n}\r\n\r\nexport { useTheme };\r\n"],"mappings":"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"}
|
package/lib/types/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/types/index.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/types/index.ts"],"sourcesContent":["import { HTMLAttributes } from '@vue/runtime-dom';\nimport type { ComponentPublicInstance, FunctionalComponent } from 'vue';\n\nexport type CandidateKey = string | number;\nexport type JSXComponent<Props = any> =\n | FunctionalComponent<Props | Props & HTMLAttributes>\n | { new (): ComponentPublicInstance<Props | Props & HTMLAttributes> };\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuyeon-date-adapter.mjs","names":["DateUtil","YuyeonDateAdapter","constructor","options","_defineProperty","locale","formats","getWeekArray","date","startOfMonth","endOfMonth","addDays","amount","addMonths","value","endOfDay","endOfYear","format","formatString","getDiff","comparing","unit","getYear","getMonth","getDay","getNextMonth","getWeekdays","isAfter","isBefore","isEqual","isSameDay","isSameMonth","isValid","isWithinRange","range","parseISO","setMonth","month","setYear","year","startOfDay","startOfYear","toISO","toJsDate"],"sources":["../../../../src/util/date/adapters/yuyeon-date-adapter.ts"],"sourcesContent":["import { DateUtil } from '../built-in';\r\nimport { DateAdapter, DateFormatOptions } from '../types';\r\n\r\nexport class YuyeonDateAdapter implements DateAdapter<Date> {\r\n public locale = 'ko-kr';\r\n\r\n public formats?: Record<string, DateFormatOptions>;\r\n\r\n constructor(options: {\r\n locale: string;\r\n formats?: Record<string, DateFormatOptions>;\r\n }) {\r\n this.locale = options.locale;\r\n this.formats = options.formats;\r\n }\r\n\r\n public getWeekArray(date: Date) {\r\n return DateUtil.getWeekArray(date, this.locale);\r\n }\r\n\r\n public startOfMonth(date: Date) {\r\n return DateUtil.startOfMonth(date);\r\n }\r\n\r\n public endOfMonth(date: Date) {\r\n return DateUtil.endOfMonth(date);\r\n }\r\n\r\n public addDays(date: Date, amount: number): Date {\r\n return DateUtil.addDays(date, amount);\r\n }\r\n\r\n public addMonths(date: Date, amount: number): Date {\r\n return DateUtil.addMonths(date, amount);\r\n }\r\n\r\n public date(value?: any): Date | null {\r\n return DateUtil.date(value);\r\n }\r\n\r\n public endOfDay(date: Date): Date {\r\n return DateUtil.endOfDay(date);\r\n }\r\n\r\n public endOfYear(date: Date): Date {\r\n return DateUtil.endOfYear(date);\r\n }\r\n\r\n public format(date: Date, formatString: string): string {\r\n return DateUtil.format(date, formatString, this.locale, this.formats);\r\n }\r\n\r\n public getDiff(date: Date, comparing: string | Date, unit?: string): number {\r\n return DateUtil.getDiff(date, comparing, unit);\r\n }\r\n\r\n public getYear(date: Date): number {\r\n return DateUtil.getYear(date);\r\n }\r\n\r\n public getMonth(date: Date): number {\r\n return DateUtil.getMonth(date);\r\n }\r\n\r\n public getDay(date: Date): number {\r\n return DateUtil.getDay(date);\r\n }\r\n\r\n public getNextMonth(date: Date): Date {\r\n return DateUtil.getNextMonth(date);\r\n }\r\n\r\n public getWeekdays(): string[] {\r\n return DateUtil.getWeekdays(this.locale);\r\n }\r\n\r\n public isAfter(date: Date, comparing: Date): boolean {\r\n return DateUtil.isAfter(date, comparing);\r\n }\r\n\r\n public isBefore(date: Date, comparing: Date): boolean {\r\n return DateUtil.isBefore(date, comparing);\r\n }\r\n\r\n public isEqual(date: Date, comparing: Date): boolean {\r\n return DateUtil.isEqual(date, comparing);\r\n }\r\n\r\n public isSameDay(date: Date, comparing: Date): boolean {\r\n return DateUtil.isSameDay(date, comparing);\r\n }\r\n\r\n public isSameMonth(date: Date, comparing: Date): boolean {\r\n return DateUtil.isSameMonth(date, comparing);\r\n }\r\n\r\n public isValid(date: any): boolean {\r\n return DateUtil.isValid(date);\r\n }\r\n\r\n public isWithinRange(date: Date, range: [Date, Date]): boolean {\r\n return DateUtil.isWithinRange(date, range);\r\n }\r\n\r\n public parseISO(date: string): Date {\r\n return DateUtil.parseISO(date);\r\n }\r\n\r\n public setMonth(date: Date, month: number): Date {\r\n return DateUtil.setMonth(date, month);\r\n }\r\n\r\n public setYear(date: Date, year: number): Date {\r\n return DateUtil.setYear(date, year);\r\n }\r\n\r\n public startOfDay(date: Date): Date {\r\n return DateUtil.startOfDay(date);\r\n }\r\n\r\n public startOfYear(date: Date): Date {\r\n return DateUtil.startOfYear(date);\r\n }\r\n\r\n public toISO(date: Date): string {\r\n return DateUtil.toISO(date);\r\n }\r\n\r\n public toJsDate(date: Date): Date {\r\n return date;\r\n }\r\n}\r\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"yuyeon-date-adapter.mjs","names":["DateUtil","YuyeonDateAdapter","constructor","options","_defineProperty","locale","formats","getWeekArray","date","startOfMonth","endOfMonth","addDays","amount","addMonths","value","endOfDay","endOfYear","format","formatString","getDiff","comparing","unit","getYear","getMonth","getDay","getNextMonth","getWeekdays","isAfter","isBefore","isEqual","isSameDay","isSameMonth","isValid","isWithinRange","range","parseISO","setMonth","month","setYear","year","startOfDay","startOfYear","toISO","toJsDate"],"sources":["../../../../src/util/date/adapters/yuyeon-date-adapter.ts"],"sourcesContent":["import { DateUtil } from '../built-in';\r\nimport { DateAdapter, DateFormatOptions } from '../types';\r\n\r\nexport class YuyeonDateAdapter implements DateAdapter<Date> {\r\n public locale = 'ko-kr';\r\n\r\n public formats?: Record<string, DateFormatOptions>;\r\n\r\n constructor(options: {\r\n locale: string;\r\n formats?: Record<string, DateFormatOptions>;\r\n }) {\r\n this.locale = options.locale;\r\n this.formats = options.formats;\r\n }\r\n\r\n public getWeekArray(date: Date) {\r\n return DateUtil.getWeekArray(date, this.locale);\r\n }\r\n\r\n public startOfMonth(date: Date) {\r\n return DateUtil.startOfMonth(date);\r\n }\r\n\r\n public endOfMonth(date: Date) {\r\n return DateUtil.endOfMonth(date);\r\n }\r\n\r\n public addDays(date: Date, amount: number): Date {\r\n return DateUtil.addDays(date, amount);\r\n }\r\n\r\n public addMonths(date: Date, amount: number): Date {\r\n return DateUtil.addMonths(date, amount);\r\n }\r\n\r\n public date(value?: any): Date | null {\r\n return DateUtil.date(value);\r\n }\r\n\r\n public endOfDay(date: Date): Date {\r\n return DateUtil.endOfDay(date);\r\n }\r\n\r\n public endOfYear(date: Date): Date {\r\n return DateUtil.endOfYear(date);\r\n }\r\n\r\n public format(date: Date, formatString: string): string {\r\n return DateUtil.format(date, formatString, this.locale, this.formats);\r\n }\r\n\r\n public getDiff(date: Date, comparing: string | Date, unit?: string): number {\r\n return DateUtil.getDiff(date, comparing, unit);\r\n }\r\n\r\n public getYear(date: Date): number {\r\n return DateUtil.getYear(date);\r\n }\r\n\r\n public getMonth(date: Date): number {\r\n return DateUtil.getMonth(date);\r\n }\r\n\r\n public getDay(date: Date): number {\r\n return DateUtil.getDay(date);\r\n }\r\n\r\n public getNextMonth(date: Date): Date {\r\n return DateUtil.getNextMonth(date);\r\n }\r\n\r\n public getWeekdays(): string[] {\r\n return DateUtil.getWeekdays(this.locale);\r\n }\r\n\r\n public isAfter(date: Date, comparing: Date): boolean {\r\n return DateUtil.isAfter(date, comparing);\r\n }\r\n\r\n public isBefore(date: Date, comparing: Date): boolean {\r\n return DateUtil.isBefore(date, comparing);\r\n }\r\n\r\n public isEqual(date: Date, comparing: Date): boolean {\r\n return DateUtil.isEqual(date, comparing);\r\n }\r\n\r\n public isSameDay(date: Date, comparing: Date): boolean {\r\n return DateUtil.isSameDay(date, comparing);\r\n }\r\n\r\n public isSameMonth(date: Date, comparing: Date): boolean {\r\n return DateUtil.isSameMonth(date, comparing);\r\n }\r\n\r\n public isValid(date: any): boolean {\r\n return DateUtil.isValid(date);\r\n }\r\n\r\n public isWithinRange(date: Date, range: [Date, Date]): boolean {\r\n return DateUtil.isWithinRange(date, range);\r\n }\r\n\r\n public parseISO(date: string): Date {\r\n return DateUtil.parseISO(date);\r\n }\r\n\r\n public setMonth(date: Date, month: number): Date {\r\n return DateUtil.setMonth(date, month);\r\n }\r\n\r\n public setYear(date: Date, year: number): Date {\r\n return DateUtil.setYear(date, year);\r\n }\r\n\r\n public startOfDay(date: Date): Date {\r\n return DateUtil.startOfDay(date);\r\n }\r\n\r\n public startOfYear(date: Date): Date {\r\n return DateUtil.startOfYear(date);\r\n }\r\n\r\n public toISO(date: Date): string {\r\n return DateUtil.toISO(this, date);\r\n }\r\n\r\n public toJsDate(date: Date): Date {\r\n return date;\r\n }\r\n}\r\n"],"mappings":";;;SAASA,QAAQ;AAGjB,OAAO,MAAMC,iBAAiB,CAA8B;EAKxDC,WAAWA,CAACC,OAGX,EAAE;IAAAC,eAAA,iBAPa,OAAO;IAQnB,IAAI,CAACC,MAAM,GAAGF,OAAO,CAACE,MAAM;IAC5B,IAAI,CAACC,OAAO,GAAGH,OAAO,CAACG,OAAO;EAClC;EAEOC,YAAYA,CAACC,IAAU,EAAE;IAC5B,OAAOR,QAAQ,CAACO,YAAY,CAACC,IAAI,EAAE,IAAI,CAACH,MAAM,CAAC;EACnD;EAEOI,YAAYA,CAACD,IAAU,EAAE;IAC5B,OAAOR,QAAQ,CAACS,YAAY,CAACD,IAAI,CAAC;EACtC;EAEOE,UAAUA,CAACF,IAAU,EAAE;IAC1B,OAAOR,QAAQ,CAACU,UAAU,CAACF,IAAI,CAAC;EACpC;EAEOG,OAAOA,CAACH,IAAU,EAAEI,MAAc,EAAQ;IAC7C,OAAOZ,QAAQ,CAACW,OAAO,CAACH,IAAI,EAAEI,MAAM,CAAC;EACzC;EAEOC,SAASA,CAACL,IAAU,EAAEI,MAAc,EAAQ;IAC/C,OAAOZ,QAAQ,CAACa,SAAS,CAACL,IAAI,EAAEI,MAAM,CAAC;EAC3C;EAEOJ,IAAIA,CAACM,KAAW,EAAe;IAClC,OAAOd,QAAQ,CAACQ,IAAI,CAACM,KAAK,CAAC;EAC/B;EAEOC,QAAQA,CAACP,IAAU,EAAQ;IAC9B,OAAOR,QAAQ,CAACe,QAAQ,CAACP,IAAI,CAAC;EAClC;EAEOQ,SAASA,CAACR,IAAU,EAAQ;IAC/B,OAAOR,QAAQ,CAACgB,SAAS,CAACR,IAAI,CAAC;EACnC;EAEOS,MAAMA,CAACT,IAAU,EAAEU,YAAoB,EAAU;IACpD,OAAOlB,QAAQ,CAACiB,MAAM,CAACT,IAAI,EAAEU,YAAY,EAAE,IAAI,CAACb,MAAM,EAAE,IAAI,CAACC,OAAO,CAAC;EACzE;EAEOa,OAAOA,CAACX,IAAU,EAAEY,SAAwB,EAAEC,IAAa,EAAU;IACxE,OAAOrB,QAAQ,CAACmB,OAAO,CAACX,IAAI,EAAEY,SAAS,EAAEC,IAAI,CAAC;EAClD;EAEOC,OAAOA,CAACd,IAAU,EAAU;IAC/B,OAAOR,QAAQ,CAACsB,OAAO,CAACd,IAAI,CAAC;EACjC;EAEOe,QAAQA,CAACf,IAAU,EAAU;IAChC,OAAOR,QAAQ,CAACuB,QAAQ,CAACf,IAAI,CAAC;EAClC;EAEOgB,MAAMA,CAAChB,IAAU,EAAU;IAC9B,OAAOR,QAAQ,CAACwB,MAAM,CAAChB,IAAI,CAAC;EAChC;EAEOiB,YAAYA,CAACjB,IAAU,EAAQ;IAClC,OAAOR,QAAQ,CAACyB,YAAY,CAACjB,IAAI,CAAC;EACtC;EAEOkB,WAAWA,CAAA,EAAa;IAC3B,OAAO1B,QAAQ,CAAC0B,WAAW,CAAC,IAAI,CAACrB,MAAM,CAAC;EAC5C;EAEOsB,OAAOA,CAACnB,IAAU,EAAEY,SAAe,EAAW;IACjD,OAAOpB,QAAQ,CAAC2B,OAAO,CAACnB,IAAI,EAAEY,SAAS,CAAC;EAC5C;EAEOQ,QAAQA,CAACpB,IAAU,EAAEY,SAAe,EAAW;IAClD,OAAOpB,QAAQ,CAAC4B,QAAQ,CAACpB,IAAI,EAAEY,SAAS,CAAC;EAC7C;EAEOS,OAAOA,CAACrB,IAAU,EAAEY,SAAe,EAAW;IACjD,OAAOpB,QAAQ,CAAC6B,OAAO,CAACrB,IAAI,EAAEY,SAAS,CAAC;EAC5C;EAEOU,SAASA,CAACtB,IAAU,EAAEY,SAAe,EAAW;IACnD,OAAOpB,QAAQ,CAAC8B,SAAS,CAACtB,IAAI,EAAEY,SAAS,CAAC;EAC9C;EAEOW,WAAWA,CAACvB,IAAU,EAAEY,SAAe,EAAW;IACrD,OAAOpB,QAAQ,CAAC+B,WAAW,CAACvB,IAAI,EAAEY,SAAS,CAAC;EAChD;EAEOY,OAAOA,CAACxB,IAAS,EAAW;IAC/B,OAAOR,QAAQ,CAACgC,OAAO,CAACxB,IAAI,CAAC;EACjC;EAEOyB,aAAaA,CAACzB,IAAU,EAAE0B,KAAmB,EAAW;IAC3D,OAAOlC,QAAQ,CAACiC,aAAa,CAACzB,IAAI,EAAE0B,KAAK,CAAC;EAC9C;EAEOC,QAAQA,CAAC3B,IAAY,EAAQ;IAChC,OAAOR,QAAQ,CAACmC,QAAQ,CAAC3B,IAAI,CAAC;EAClC;EAEO4B,QAAQA,CAAC5B,IAAU,EAAE6B,KAAa,EAAQ;IAC7C,OAAOrC,QAAQ,CAACoC,QAAQ,CAAC5B,IAAI,EAAE6B,KAAK,CAAC;EACzC;EAEOC,OAAOA,CAAC9B,IAAU,EAAE+B,IAAY,EAAQ;IAC3C,OAAOvC,QAAQ,CAACsC,OAAO,CAAC9B,IAAI,EAAE+B,IAAI,CAAC;EACvC;EAEOC,UAAUA,CAAChC,IAAU,EAAQ;IAChC,OAAOR,QAAQ,CAACwC,UAAU,CAAChC,IAAI,CAAC;EACpC;EAEOiC,WAAWA,CAACjC,IAAU,EAAQ;IACjC,OAAOR,QAAQ,CAACyC,WAAW,CAACjC,IAAI,CAAC;EACrC;EAEOkC,KAAKA,CAAClC,IAAU,EAAU;IAC7B,OAAOR,QAAQ,CAAC0C,KAAK,CAAC,IAAI,EAAElC,IAAI,CAAC;EACrC;EAEOmC,QAAQA,CAACnC,IAAU,EAAQ;IAC9B,OAAOA,IAAI;EACf;AACJ"}
|
|
@@ -256,8 +256,12 @@ export class DateUtil {
|
|
|
256
256
|
const [year, month, day] = value.split('-').map(Number);
|
|
257
257
|
return new Date(year, month - 1, day);
|
|
258
258
|
}
|
|
259
|
-
static toISO(
|
|
260
|
-
|
|
259
|
+
static toISO(adapter, value) {
|
|
260
|
+
const date = adapter.toJsDate(value);
|
|
261
|
+
const year = date.getFullYear();
|
|
262
|
+
const month = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : `${date.getMonth() + 1}`;
|
|
263
|
+
const day = date.getDate() < 10 ? `0${date.getDate()}` : `${date.getDate()}`;
|
|
264
|
+
return `${year}-${month}-${day}`;
|
|
261
265
|
}
|
|
262
266
|
static getWeekArray(date, locale) {
|
|
263
267
|
const weeks = [];
|