yuyeon 0.3.2-rc.9 → 0.3.4-rc.0
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 +3359 -3164
- package/dist/yuyeon.umd.cjs +3 -3
- package/lib/components/field-input/YFieldInput.js +4 -2
- package/lib/components/field-input/YFieldInput.js.map +1 -1
- package/lib/components/select/YSelect.js +0 -1
- package/lib/components/select/YSelect.js.map +1 -1
- package/lib/components/table/YDataTable.js +20 -10
- package/lib/components/table/YDataTable.js.map +1 -1
- package/lib/components/table/YDataTableBody.js +14 -18
- package/lib/components/table/YDataTableBody.js.map +1 -1
- package/lib/components/table/YDataTableLayerRow.js +87 -0
- package/lib/components/table/YDataTableLayerRow.js.map +1 -0
- package/lib/components/table/YDataTableLayerRow.vue +7 -6
- package/lib/components/table/YDataTableLayerRows.js +60 -0
- package/lib/components/table/YDataTableLayerRows.js.map +1 -0
- package/lib/components/table/YDataTableLayerRows.scss +14 -0
- package/lib/components/table/YDataTableRow.js +13 -5
- package/lib/components/table/YDataTableRow.js.map +1 -1
- package/lib/components/table/YDataTableRows.scss +14 -0
- package/lib/components/table/YDataTableServer.js +13 -4
- package/lib/components/table/YDataTableServer.js.map +1 -1
- package/lib/components/table/composables/expand.js +49 -0
- package/lib/components/table/composables/expand.js.map +1 -0
- package/lib/components/table/composables/items.js +8 -2
- package/lib/components/table/composables/items.js.map +1 -1
- package/lib/components/table/index.js +2 -0
- package/lib/components/table/index.js.map +1 -1
- package/lib/components/table/types/item.js.map +1 -1
- package/lib/components/tree-view/YTreeViewNode.js +6 -2
- package/lib/components/tree-view/YTreeViewNode.js.map +1 -1
- package/package.json +5 -2
- package/types/abstract/items.d.ts +4 -4
- package/types/components/badge/YBadge.d.ts +4 -4
- package/types/components/button/YButton.d.ts +8 -8
- package/types/components/chip/YChip.d.ts +1 -1
- package/types/components/date-picker/YDateCalendar.d.ts +1 -1
- package/types/components/date-picker/YDatePicker.d.ts +1 -1
- package/types/components/date-picker/YDatePickerControl.d.ts +5 -5
- package/types/components/dialog/YDialog.d.ts +58 -58
- package/types/components/dropdown/YDropdown.d.ts +55 -55
- package/types/components/field-input/YFieldInput.d.ts +19 -13
- package/types/components/hover/YHover.d.ts +3 -3
- package/types/components/icon/YIcon.d.ts +2 -2
- package/types/components/img/YImg.d.ts +5 -5
- package/types/components/input/YInput.d.ts +9 -9
- package/types/components/ip-field/YIpv4Field.d.ts +1 -1
- package/types/components/layer/YLayer.d.ts +26 -26
- package/types/components/layer/content.d.ts +1 -1
- package/types/components/layer/scroll-strategies.d.ts +1 -1
- package/types/components/list/YListItem.d.ts +1 -1
- package/types/components/menu/YMenu.d.ts +9 -9
- package/types/components/pagination/YPagination.d.ts +5 -5
- package/types/components/select/YSelect.d.ts +68 -62
- package/types/components/snackbar/YSnackbar.d.ts +33 -33
- package/types/components/switch/YSwitch.d.ts +10 -10
- package/types/components/tab/YTab.d.ts +12 -12
- package/types/components/tab/YTabs.d.ts +4 -4
- package/types/components/table/YDataTable.d.ts +37 -15
- package/types/components/table/YDataTableBody.d.ts +3 -5
- package/types/components/table/YDataTableControl.d.ts +2 -2
- package/types/components/table/YDataTableHead.d.ts +2 -2
- package/types/components/table/YDataTableLayerRow.d.ts +22 -0
- package/types/components/table/YDataTableLayerRows.d.ts +9 -0
- package/types/components/table/YDataTableServer.d.ts +40 -18
- package/types/components/table/YTable.d.ts +4 -4
- package/types/components/table/composables/expand.d.ts +42 -0
- package/types/components/table/composables/header.d.ts +1 -1
- package/types/components/table/composables/items.d.ts +3 -3
- package/types/components/table/composables/pagination.d.ts +2 -2
- package/types/components/table/composables/selection.d.ts +3 -3
- package/types/components/table/composables/sorting.d.ts +1 -1
- package/types/components/table/index.d.ts +2 -0
- package/types/components/table/types/item.d.ts +1 -0
- package/types/components/textarea/YTextarea.d.ts +18 -18
- package/types/components/tooltip/YTooltip.d.ts +46 -46
- package/types/components/tree-view/YTreeView.d.ts +4 -4
- package/types/components/tree-view/YTreeViewNode.d.ts +8 -8
- package/types/composables/choice.d.ts +1 -1
- package/types/composables/coordinate/index.d.ts +8 -8
- package/types/composables/form.d.ts +2 -2
- package/types/composables/icon.d.ts +2 -2
- package/types/composables/list-items.d.ts +10 -10
- package/types/composables/transition.d.ts +1 -1
- package/types/composables/validation.d.ts +3 -3
- package/types/shims.d.ts +58 -56
|
@@ -21,6 +21,7 @@ export const pressYFieldInputPropsOptions = propsFactory({
|
|
|
21
21
|
type: String,
|
|
22
22
|
default: 'text'
|
|
23
23
|
},
|
|
24
|
+
inputStyle: Object,
|
|
24
25
|
...pressYInputPropsOptions({
|
|
25
26
|
variation: 'filled'
|
|
26
27
|
})
|
|
@@ -161,7 +162,8 @@ export const YFieldInput = defineComponent({
|
|
|
161
162
|
"onUpdate:modelValue": onUpdateModel,
|
|
162
163
|
"onClick": onClick,
|
|
163
164
|
"onMousedown:display": $event => emit('mousedown:display', $event),
|
|
164
|
-
"onKeydown:display": $event => emit('keydown:display', $event)
|
|
165
|
+
"onKeydown:display": $event => emit('keydown:display', $event),
|
|
166
|
+
"style": [attrs.style]
|
|
165
167
|
}), {
|
|
166
168
|
leading: slots.leading ? args => {
|
|
167
169
|
const leadingChildren = [];
|
|
@@ -194,7 +196,7 @@ export const YFieldInput = defineComponent({
|
|
|
194
196
|
"maxlength": attrs.maxlength,
|
|
195
197
|
"min": attrs.min,
|
|
196
198
|
"max": attrs.max,
|
|
197
|
-
"style": [
|
|
199
|
+
"style": [props.inputStyle, {
|
|
198
200
|
textAlign: props.inputAlign
|
|
199
201
|
}],
|
|
200
202
|
"size": attrs.size ?? 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YFieldInput.js","names":["computed","getCurrentInstance","nextTick","ref","toRef","watch","useRender","useFocus","chooseProps","defineComponent","propsFactory","YIconClear","YInput","pressYInputPropsOptions","NAME","pressYFieldInputPropsOptions","enableClear","Boolean","inputAlign","String","inlineLabel","displayText","Function","whenInputValid","Number","tabindex","type","default","variation","YFieldInput","name","props","emits","slots","Object","setup","_ref","attrs","expose","emit","yInput$","input$","focused","whenFocus","whenBlur","inValue","displayValue","inputType","classes","onClick","event","onFocus","value","onBlur","changeDisplay","onInput","target","onChange","onKeydown","onKeyup","onClickClear","clear","onKeydownClear","code","focus","select","vm","undefined","text","call","modelValue","neo","immediate","extended","validate","invokeValidators","resetError","onUpdateModel","_createVNode","_mergeProps","$event","leading","args","leadingChildren","slot","push","defaultProps","attrId","floating","createLabel","readonly","loading","placeholder","disabled","autocomplete","maxlength","min","max","style","textAlign","size","trailing","_Fragment","label","prepend","append","slotProps"],"sources":["../../../src/components/field-input/YFieldInput.tsx"],"sourcesContent":["import {\n type PropType,\n type SlotsType,\n computed,\n getCurrentInstance,\n nextTick,\n ref,\n toRef,\n watch,\n} from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { useFocus } from '@/composables/focus';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\n\nimport { YIconClear } from '../icons/YIconClear';\nimport {\n YInput,\n YInputDefaultSlotProps,\n pressYInputPropsOptions,\n} from '../input';\n\nimport './YFieldInput.scss';\n\nconst NAME = 'y-field-input';\n\nexport const pressYFieldInputPropsOptions = propsFactory(\n {\n enableClear: Boolean as PropType<boolean>,\n inputAlign: String as PropType<string>,\n inlineLabel: Boolean as PropType<boolean>,\n displayText: [String, Function] as PropType<\n string | ((value: any) => string)\n >,\n whenInputValid: [Boolean, Number] as PropType<boolean | number>,\n tabindex: {\n type: String as PropType<string>,\n default: '0',\n },\n type: {\n type: String as PropType<string>,\n default: 'text',\n },\n ...pressYInputPropsOptions({\n variation: 'filled',\n }),\n },\n 'YFieldInput',\n);\n\nexport const YFieldInput = defineComponent({\n name: 'YFieldInput',\n props: {\n ...pressYFieldInputPropsOptions(),\n },\n emits: [\n 'update:modelValue',\n 'update:focused',\n 'input',\n 'change',\n 'click',\n 'mousedown',\n 'mouseup',\n 'keydown',\n 'keyup',\n 'focus',\n 'blur',\n 'mousedown:display',\n 'keydown:display',\n 'click:clear',\n ],\n slots: Object as SlotsType<{\n prepend: any;\n append: any;\n label: any;\n default: YInputDefaultSlotProps & { focused: boolean };\n leading: { error: boolean };\n trailing: any;\n 'leading-out': any;\n 'trailing-out': any;\n 'helper-text': { error: boolean; errorResult: string | undefined };\n }>,\n setup(props, { attrs, expose, emit, slots }) {\n const yInput$ = ref<YInput>();\n const input$ = ref<HTMLInputElement>();\n const { focused, whenFocus, whenBlur } = useFocus(props, 'y-field-input');\n const inValue = ref<any>('');\n const displayValue = ref('');\n const inputType = toRef(props, 'type');\n\n const classes = computed(() => {\n return {\n [NAME]: true,\n [`${NAME}--inline-label`]: !!props.inlineLabel,\n };\n });\n\n function onClick(event: MouseEvent) {\n emit('click', event);\n }\n\n function onFocus(event: FocusEvent) {\n whenFocus();\n displayValue.value = inValue.value as string;\n emit('focus', event);\n }\n\n function onBlur(event: FocusEvent) {\n whenBlur();\n emit('blur', event);\n changeDisplay();\n }\n\n function onInput(event: Event) {\n emit('input', event);\n const target = event.target as HTMLInputElement | null;\n inValue.value = target?.value;\n displayValue.value = target?.value as string;\n }\n\n function onChange(event: Event) {\n emit('change', inValue.value);\n }\n\n function onKeydown(event: KeyboardEvent) {\n emit('keydown', event);\n }\n\n function onKeyup(event: KeyboardEvent) {\n emit('keyup', event);\n }\n\n function onClickClear(event: MouseEvent) {\n emit('click:clear', event);\n clear();\n }\n\n function onKeydownClear(event: KeyboardEvent) {\n if (event.code === 'Space' || event.code === 'Enter') {\n clear();\n }\n }\n\n function focus() {\n input$.value?.focus();\n }\n\n function select() {\n input$.value?.select();\n }\n\n function clear() {\n inValue.value = '';\n displayValue.value = '';\n emit('update:modelValue', inValue.value);\n emit('change', inValue.value);\n }\n\n function changeDisplay() {\n const vm = getCurrentInstance();\n const { displayText } = props;\n if (displayText !== undefined) {\n let text = inValue.value;\n if (typeof displayText === 'string') {\n text = displayText;\n }\n if (displayText && typeof displayText === 'function') {\n text = (displayText as any).call(vm, text);\n }\n nextTick(() => {\n displayValue.value = text as string;\n });\n }\n }\n\n watch(\n () => props.modelValue,\n (neo: any) => {\n inValue.value = neo;\n displayValue.value = neo;\n },\n {\n immediate: true,\n },\n );\n\n watch(\n inValue,\n (neo: string) => {\n if (!focused.value) {\n changeDisplay();\n } else {\n displayValue.value = neo;\n }\n },\n { immediate: true },\n );\n\n const extended = {\n focus,\n select,\n clear,\n };\n\n expose({\n ...extended,\n input$,\n validate: () => yInput$.value?.invokeValidators(),\n resetError: () => yInput$.value?.resetError(),\n });\n\n function onUpdateModel(value: any) {\n emit('update:modelValue', value);\n }\n\n useRender(() => (\n <YInput\n class={classes.value}\n ref={yInput$}\n {...chooseProps(props, YInput.props)}\n modelValue={inValue.value}\n focused={focused.value}\n extended={extended}\n onUpdate:modelValue={onUpdateModel}\n onClick={onClick}\n onMousedown:display={($event) => emit('mousedown:display', $event)}\n onKeydown:display={($event) => emit('keydown:display', $event)}\n >\n {{\n leading: slots.leading\n ? (args: any) => {\n const leadingChildren = [];\n const slot = slots.leading?.(args);\n if (slot) {\n leadingChildren.push(slot);\n } else {\n return undefined;\n }\n return leadingChildren;\n }\n : undefined,\n default: (defaultProps: YInputDefaultSlotProps) => (\n <div\n class={[`${NAME}__field`]}\n data-id={defaultProps.attrId}\n ref={'field'}\n >\n {props.floating ? yInput$.value?.createLabel?.() : undefined}\n {slots.default?.({ ...defaultProps, focused: focused.value })}\n {\n <input\n ref={input$}\n value={displayValue.value}\n name={props.name}\n id={defaultProps.attrId}\n type={inputType.value}\n readonly={\n props.readonly || props.loading || defaultProps.loading\n }\n placeholder={props.placeholder}\n disabled={props.disabled}\n tabindex={props.tabindex || '0'}\n autocomplete={attrs.autocomplete as string}\n maxlength={attrs.maxlength as number | string}\n min={attrs.min as number | string}\n max={attrs.max as number | string}\n style={[attrs?.style, { textAlign: props.inputAlign } as any]}\n size={(attrs.size ?? 1) as number}\n onInput={onInput}\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={onChange}\n onKeydown={onKeydown}\n onKeyup={onKeyup}\n />\n }\n </div>\n ),\n trailing:\n slots.trailing || (props.enableClear && inValue.value)\n ? () => (\n <>\n {props.enableClear && inValue.value && (\n <div\n class={[\n 'y-input__trailing',\n 'y-input__trailing--clear',\n ]}\n >\n <button\n class={[`${NAME}__clear`]}\n disabled={props.disabled}\n onClick={onClickClear}\n onKeydown={onKeydownClear}\n tabindex={2}\n >\n <YIconClear></YIconClear>\n </button>\n </div>\n )}\n {slots.trailing && (\n <div class={['y-input__trailing']}>\n {slots.trailing()}\n </div>\n )}\n </>\n )\n : undefined,\n label: slots.label ? () => slots.label?.() : undefined,\n prepend: slots.prepend ? () => slots.prepend?.() : undefined,\n append: slots.append ? () => slots.append?.() : undefined,\n 'leading-out': slots['leading-out']\n ? () => slots['leading-out']?.()\n : undefined,\n 'trailing-out': slots['trailing-out']\n ? () => slots['trailing-out']?.()\n : undefined,\n 'helper-text': slots['helper-text']\n ? (slotProps: any) => slots['helper-text']?.(slotProps)\n : undefined,\n }}\n </YInput>\n ));\n\n return {\n focused,\n inValue,\n };\n },\n});\n\nexport type YFieldInput = InstanceType<typeof YFieldInput>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YFieldInput.js","names":["computed","getCurrentInstance","nextTick","ref","toRef","watch","useRender","useFocus","chooseProps","defineComponent","propsFactory","YIconClear","YInput","pressYInputPropsOptions","NAME","pressYFieldInputPropsOptions","enableClear","Boolean","inputAlign","String","inlineLabel","displayText","Function","whenInputValid","Number","tabindex","type","default","inputStyle","Object","variation","YFieldInput","name","props","emits","slots","setup","_ref","attrs","expose","emit","yInput$","input$","focused","whenFocus","whenBlur","inValue","displayValue","inputType","classes","onClick","event","onFocus","value","onBlur","changeDisplay","onInput","target","onChange","onKeydown","onKeyup","onClickClear","clear","onKeydownClear","code","focus","select","vm","undefined","text","call","modelValue","neo","immediate","extended","validate","invokeValidators","resetError","onUpdateModel","_createVNode","_mergeProps","$event","style","leading","args","leadingChildren","slot","push","defaultProps","attrId","floating","createLabel","readonly","loading","placeholder","disabled","autocomplete","maxlength","min","max","textAlign","size","trailing","_Fragment","label","prepend","append","slotProps"],"sources":["../../../src/components/field-input/YFieldInput.tsx"],"sourcesContent":["import {\n type PropType,\n type SlotsType,\n computed,\n getCurrentInstance,\n nextTick,\n ref,\n toRef,\n watch,\n} from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { useFocus } from '@/composables/focus';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\n\nimport { YIconClear } from '../icons/YIconClear';\nimport {\n YInput,\n YInputDefaultSlotProps,\n pressYInputPropsOptions,\n} from '../input';\n\nimport './YFieldInput.scss';\n\nconst NAME = 'y-field-input';\n\nexport const pressYFieldInputPropsOptions = propsFactory(\n {\n enableClear: Boolean as PropType<boolean>,\n inputAlign: String as PropType<string>,\n inlineLabel: Boolean as PropType<boolean>,\n displayText: [String, Function] as PropType<\n string | ((value: any) => string)\n >,\n whenInputValid: [Boolean, Number] as PropType<boolean | number>,\n tabindex: {\n type: String as PropType<string>,\n default: '0',\n },\n type: {\n type: String as PropType<string>,\n default: 'text',\n },\n inputStyle: Object as PropType<any>,\n ...pressYInputPropsOptions({\n variation: 'filled',\n }),\n },\n 'YFieldInput',\n);\n\nexport const YFieldInput = defineComponent({\n name: 'YFieldInput',\n props: {\n ...pressYFieldInputPropsOptions(),\n },\n emits: [\n 'update:modelValue',\n 'update:focused',\n 'input',\n 'change',\n 'click',\n 'mousedown',\n 'mouseup',\n 'keydown',\n 'keyup',\n 'focus',\n 'blur',\n 'mousedown:display',\n 'keydown:display',\n 'click:clear',\n ],\n slots: Object as SlotsType<{\n prepend: any;\n append: any;\n label: any;\n default: YInputDefaultSlotProps & { focused: boolean };\n leading: { error: boolean };\n trailing: any;\n 'leading-out': any;\n 'trailing-out': any;\n 'helper-text': { error: boolean; errorResult: string | undefined };\n }>,\n setup(props, { attrs, expose, emit, slots }) {\n const yInput$ = ref<YInput>();\n const input$ = ref<HTMLInputElement>();\n const { focused, whenFocus, whenBlur } = useFocus(props, 'y-field-input');\n const inValue = ref<any>('');\n const displayValue = ref('');\n const inputType = toRef(props, 'type');\n\n const classes = computed(() => {\n return {\n [NAME]: true,\n [`${NAME}--inline-label`]: !!props.inlineLabel,\n };\n });\n\n function onClick(event: MouseEvent) {\n emit('click', event);\n }\n\n function onFocus(event: FocusEvent) {\n whenFocus();\n displayValue.value = inValue.value as string;\n emit('focus', event);\n }\n\n function onBlur(event: FocusEvent) {\n whenBlur();\n emit('blur', event);\n changeDisplay();\n }\n\n function onInput(event: Event) {\n emit('input', event);\n const target = event.target as HTMLInputElement | null;\n inValue.value = target?.value;\n displayValue.value = target?.value as string;\n }\n\n function onChange(event: Event) {\n emit('change', inValue.value);\n }\n\n function onKeydown(event: KeyboardEvent) {\n emit('keydown', event);\n }\n\n function onKeyup(event: KeyboardEvent) {\n emit('keyup', event);\n }\n\n function onClickClear(event: MouseEvent) {\n emit('click:clear', event);\n clear();\n }\n\n function onKeydownClear(event: KeyboardEvent) {\n if (event.code === 'Space' || event.code === 'Enter') {\n clear();\n }\n }\n\n function focus() {\n input$.value?.focus();\n }\n\n function select() {\n input$.value?.select();\n }\n\n function clear() {\n inValue.value = '';\n displayValue.value = '';\n emit('update:modelValue', inValue.value);\n emit('change', inValue.value);\n }\n\n function changeDisplay() {\n const vm = getCurrentInstance();\n const { displayText } = props;\n if (displayText !== undefined) {\n let text = inValue.value;\n if (typeof displayText === 'string') {\n text = displayText;\n }\n if (displayText && typeof displayText === 'function') {\n text = (displayText as any).call(vm, text);\n }\n nextTick(() => {\n displayValue.value = text as string;\n });\n }\n }\n\n watch(\n () => props.modelValue,\n (neo: any) => {\n inValue.value = neo;\n displayValue.value = neo;\n },\n {\n immediate: true,\n },\n );\n\n watch(\n inValue,\n (neo: string) => {\n if (!focused.value) {\n changeDisplay();\n } else {\n displayValue.value = neo;\n }\n },\n { immediate: true },\n );\n\n const extended = {\n focus,\n select,\n clear,\n };\n\n expose({\n ...extended,\n input$,\n validate: () => yInput$.value?.invokeValidators(),\n resetError: () => yInput$.value?.resetError(),\n });\n\n function onUpdateModel(value: any) {\n emit('update:modelValue', value);\n }\n\n useRender(() => (\n <YInput\n class={classes.value}\n ref={yInput$}\n {...chooseProps(props, YInput.props)}\n modelValue={inValue.value}\n focused={focused.value}\n extended={extended}\n onUpdate:modelValue={onUpdateModel}\n onClick={onClick}\n onMousedown:display={($event) => emit('mousedown:display', $event)}\n onKeydown:display={($event) => emit('keydown:display', $event)}\n style={[attrs.style]}\n >\n {{\n leading: slots.leading\n ? (args: any) => {\n const leadingChildren = [];\n const slot = slots.leading?.(args);\n if (slot) {\n leadingChildren.push(slot);\n } else {\n return undefined;\n }\n return leadingChildren;\n }\n : undefined,\n default: (defaultProps: YInputDefaultSlotProps) => (\n <div\n class={[`${NAME}__field`]}\n data-id={defaultProps.attrId}\n ref={'field'}\n >\n {props.floating ? yInput$.value?.createLabel?.() : undefined}\n {slots.default?.({ ...defaultProps, focused: focused.value })}\n {\n <input\n ref={input$}\n value={displayValue.value}\n name={props.name}\n id={defaultProps.attrId}\n type={inputType.value}\n readonly={\n props.readonly || props.loading || defaultProps.loading\n }\n placeholder={props.placeholder}\n disabled={props.disabled}\n tabindex={props.tabindex || '0'}\n autocomplete={attrs.autocomplete as string}\n maxlength={attrs.maxlength as number | string}\n min={attrs.min as number | string}\n max={attrs.max as number | string}\n style={[props.inputStyle, { textAlign: props.inputAlign } as any]}\n size={(attrs.size ?? 1) as number}\n onInput={onInput}\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={onChange}\n onKeydown={onKeydown}\n onKeyup={onKeyup}\n />\n }\n </div>\n ),\n trailing:\n slots.trailing || (props.enableClear && inValue.value)\n ? () => (\n <>\n {props.enableClear && inValue.value && (\n <div\n class={[\n 'y-input__trailing',\n 'y-input__trailing--clear',\n ]}\n >\n <button\n class={[`${NAME}__clear`]}\n disabled={props.disabled}\n onClick={onClickClear}\n onKeydown={onKeydownClear}\n tabindex={2}\n >\n <YIconClear></YIconClear>\n </button>\n </div>\n )}\n {slots.trailing && (\n <div class={['y-input__trailing']}>\n {slots.trailing()}\n </div>\n )}\n </>\n )\n : undefined,\n label: slots.label ? () => slots.label?.() : undefined,\n prepend: slots.prepend ? () => slots.prepend?.() : undefined,\n append: slots.append ? () => slots.append?.() : undefined,\n 'leading-out': slots['leading-out']\n ? () => slots['leading-out']?.()\n : undefined,\n 'trailing-out': slots['trailing-out']\n ? () => slots['trailing-out']?.()\n : undefined,\n 'helper-text': slots['helper-text']\n ? (slotProps: any) => slots['helper-text']?.(slotProps)\n : undefined,\n }}\n </YInput>\n ));\n\n return {\n focused,\n inValue,\n };\n },\n});\n\nexport type YFieldInput = InstanceType<typeof YFieldInput>;\n"],"mappings":"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"}
|
|
@@ -124,7 +124,6 @@ export const YSelect = defineComponent({
|
|
|
124
124
|
opened.value = !opened.value;
|
|
125
125
|
}
|
|
126
126
|
function onKeydownDisplay(event) {
|
|
127
|
-
console.log(event);
|
|
128
127
|
if (props.disabled) return;
|
|
129
128
|
if (event.key === 'Enter' || event.key === ' ') {
|
|
130
129
|
opened.value = !opened.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YSelect.js","names":["computed","mergeProps","nextTick","onMounted","ref","shallowRef","vShow","watch","withDirectives","useModelDuplex","useRender","pressCoordinateProps","useI18n","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","omit","chooseProps","defineComponent","getHtmlElement","propsFactory","getScrollParent","YCard","YFieldInput","pressYFieldInputPropsOptions","YIcon","YList","YListItem","YMenu","pressSelectPropsOptions","opened","Boolean","closeOnBlur","multiple","itemComparator","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","change","slots","setup","_ref","attrs","expose","emit","fieldInputRef","menuRef","listRef","cardRef","focused","items","toRefineItems","toEmitItems","t","setOut","v","emitValue","model","selections","ret","found","find","undefined","push","selected","map","selection","extraMenuProps","preventCloseBubble","isSelected","selectedItem","onMousedownDisplay","event","disabled","onKeydownDisplay","console","log","key","onBlur","requestAnimationFrame","contentEl","layer$","content$","contains","document","activeElement","onClickItem","select","setTimeout","onAfterLeave","closeCondition","target","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","scrollToActiveItem","length","listEl","activeEl","querySelector","scrollEl","isSameNode","scrollTo","top","offsetTop","behavior","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","rxValue","selectionProps","raw","placeholder","internalItems","_Fragment","offset","align","origin","$event","menu","itemProps","leading","trailing","hide","_len","arguments","args","_key","label","_len2","_key2","_len3","_key3","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import {\n ExtractPropTypes,\n type PropType,\n type SlotsType,\n computed,\n mergeProps,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { pressCoordinateProps } from '@/composables/coordinate';\nimport { useI18n } from '@/composables/i18n';\nimport {\n ListItem,\n pressListItemsPropsOptions,\n useItems,\n} from '@/composables/list-items';\nimport { wrapInArray } from '@/util/array';\nimport { deepEqual, omit } from '@/util/common';\nimport {\n chooseProps,\n defineComponent,\n getHtmlElement,\n propsFactory,\n} from '@/util/component';\nimport { getScrollParent } from '@/util/scroll';\n\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIcon, YIconIconProp } from '../icon';\nimport { YList, YListItem } from '../list';\nimport { YMenu } from '../menu';\n\nimport './YSelect.scss';\n\nexport type ItemComparator = (\n optionsItem: any,\n valueItem: any,\n valueKey?: string,\n) => boolean;\n\nexport const pressSelectPropsOptions = propsFactory(\n {\n opened: Boolean as PropType<boolean>,\n closeOnBlur: Boolean as PropType<boolean>,\n multiple: Boolean,\n itemComparator: {\n type: Function as PropType<ItemComparator>,\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 ReturnType<typeof pressYSelectPropsOptions>\n>({\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 change: (value: any) => true,\n },\n slots: Object as SlotsType<{\n base: any;\n selection: {\n displayText: string;\n placeholder: undefined | string;\n items: any[];\n internalItems: ListItem[];\n };\n leading: any;\n label: 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 'item-leading': { item: any; selected: boolean; select: () => void };\n 'item-trailing': { item: any; selected: boolean; select: () => void };\n }>,\n setup(props, { slots, attrs, expose, emit }) {\n const fieldInputRef = ref();\n const menuRef = ref<InstanceType<typeof YMenu>>();\n const listRef = ref<InstanceType<typeof YList>>();\n const cardRef = ref<any>();\n\n const opened = useModelDuplex(props, 'opened');\n const focused = shallowRef(false);\n\n const { items, toRefineItems, toEmitItems } = useItems(props);\n const { t } = useI18n();\n const setOut = (v: any) => {\n const emitValue = toEmitItems(wrapInArray(v));\n return props.multiple ? emitValue : emitValue[0] ?? null;\n };\n const model = useModelDuplex(\n props,\n 'modelValue',\n [],\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\n setOut,\n );\n\n const selections = computed<ListItem[]>(() => {\n const ret: ListItem<any>[] = [];\n for (const v of model.value) {\n const found = items.value.find((item) => {\n return props.itemComparator(item.value, v.value);\n });\n if (found !== undefined) {\n ret.push(found);\n }\n }\n return ret;\n });\n\n const selected = computed(() => {\n return selections.value.map((selection) => selection?.props?.value);\n });\n\n const extraMenuProps = computed(() => {\n return {\n ...props.menuProps,\n preventCloseBubble: true,\n };\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) return;\n opened.value = !opened.value;\n }\n\n function onKeydownDisplay(event: KeyboardEvent) {\n console.log(event);\n if (props.disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n opened.value = !opened.value;\n }\n }\n\n function onBlur(event: FocusEvent) {\n requestAnimationFrame(() => {\n const contentEl = (menuRef.value as any)?.layer$?.content$;\n if (contentEl?.contains(document.activeElement)) {\n return;\n }\n if (opened.value && props.closeOnBlur) {\n opened.value = false;\n }\n });\n }\n\n // Menu Contents\n function onClickItem(item: ListItem, e: MouseEvent) {\n if (item.disabled) return;\n select(item);\n if (!props.multiple) {\n setTimeout(() => {\n opened.value = false;\n }, 40);\n }\n }\n\n function onAfterLeave() {\n if (!focused.value) {\n // fieldInputRef.value?.focus();\n }\n }\n\n function closeCondition(event: MouseEvent) {\n if (event.target && (menuRef.value as any)?.layer$?.content$) {\n return (event.target as HTMLElement)?.contains(\n (menuRef.value as any)?.layer$?.content$,\n );\n }\n }\n\n function select(item: ListItem) {\n let value;\n if (props.multiple) {\n const index = selections.value.findIndex((selectedItem) => {\n return selectedItem.value === item.value;\n });\n if (index === -1) {\n value = [...model.value, item];\n } else {\n const neo = model.value.slice();\n neo.splice(index, 1);\n value = neo;\n }\n } else {\n value = [item];\n }\n model.value = value;\n emit('change', setOut(value));\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 watch(opened, (neo) => {\n if (neo) {\n nextTick(() => {\n scrollToActiveItem();\n });\n }\n });\n\n function scrollToActiveItem() {\n if (selections.value.length === 0) {\n return;\n }\n const listEl = getHtmlElement(listRef.value);\n if (listEl) {\n const activeEl = listEl?.querySelector('.y-list-item--active') as\n | HTMLElement\n | undefined;\n const contentEl = (menuRef.value as any)?.layer$\n ?.content$ as HTMLElement;\n if (activeEl && contentEl) {\n const scrollEl = getScrollParent(activeEl);\n if (\n scrollEl &&\n (contentEl.contains(scrollEl) || contentEl.isSameNode(scrollEl))\n ) {\n scrollEl.scrollTo({ top: activeEl.offsetTop, behavior: 'smooth' });\n }\n }\n }\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 <YFieldInput\n ref={fieldInputRef}\n {...fieldInputProps}\n modelValue={model.value.map((v: any) => v.props.value).join(', ')}\n validationValue={model.rxValue}\n onMousedown:display={onMousedownDisplay}\n onKeydown:display={onKeydownDisplay}\n onBlur={onBlur}\n readonly\n class={[\n 'y-select',\n {\n 'y-select--opened': opened.value,\n 'y-select--selected': selected.value.length > 0,\n },\n ]}\n {...attrs}\n focused={focused.value}\n >\n {{\n default: () => {\n const selectionProps = {\n items: selections.value.map((item) => item.raw),\n displayText: displayText.value,\n placeholder: props.placeholder,\n internalItems: selections.value,\n };\n return (\n <>\n <div class={['y-select__selection']}>\n {slots.selection\n ? slots.selection?.(selectionProps)\n : selected.value.length > 0\n ? displayText.value\n : props.placeholder}\n </div>\n <YMenu\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 base=\"parent\"\n {...extraMenuProps.value}\n v-model={opened.value}\n >\n {{\n default: slots.menu\n ? () => slots.menu?.()\n : () => (\n <YCard ref={cardRef}>\n {slots['menu-prepend']?.()}\n {items.value.length > 0 ? (\n <YList ref={listRef}>\n {items.value.map((item) => {\n const itemProps = {\n item,\n selected: isSelected(item),\n select: () => {\n select(item);\n },\n };\n return withDirectives(\n <YListItem\n onClick={(e) => onClickItem(item, e)}\n class={[\n {\n 'y-list-item--active':\n isSelected(item),\n },\n ]}\n disabled={item.disabled}\n >\n {{\n default: () =>\n slots.item\n ? slots.item?.(itemProps)\n : item.text,\n leading:\n slots['item-leading'] &&\n (() =>\n slots['item-leading']?.(\n itemProps,\n )),\n trailing:\n slots['item-trailing'] &&\n (() =>\n slots['item-trailing']?.(\n itemProps,\n )),\n }}\n </YListItem>,\n [[vShow, !item.hide]],\n );\n })}\n </YList>\n ) : (\n <div class=\"y-select__no-options\">\n {t('$yuyeon.noItems')}\n </div>\n )}\n {slots['menu-append']?.()}\n </YCard>\n ),\n }}\n </YMenu>\n </>\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 label: slots.label\n ? (...args: any[]) => slots.label?.(...args)\n : undefined,\n 'helper-text': slots['helper-text']\n ? (...args: any[]) => slots['helper-text']?.(...args)\n : undefined,\n }}\n </YFieldInput>\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 opened,\n });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n menuRef,\n baseEl,\n opened,\n };\n },\n});\n\nexport type YSelect = InstanceType<typeof YSelect>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YSelect.js","names":["computed","mergeProps","nextTick","onMounted","ref","shallowRef","vShow","watch","withDirectives","useModelDuplex","useRender","pressCoordinateProps","useI18n","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","omit","chooseProps","defineComponent","getHtmlElement","propsFactory","getScrollParent","YCard","YFieldInput","pressYFieldInputPropsOptions","YIcon","YList","YListItem","YMenu","pressSelectPropsOptions","opened","Boolean","closeOnBlur","multiple","itemComparator","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","change","slots","setup","_ref","attrs","expose","emit","fieldInputRef","menuRef","listRef","cardRef","focused","items","toRefineItems","toEmitItems","t","setOut","v","emitValue","model","selections","ret","found","find","undefined","push","selected","map","selection","extraMenuProps","preventCloseBubble","isSelected","selectedItem","onMousedownDisplay","event","disabled","onKeydownDisplay","key","onBlur","requestAnimationFrame","contentEl","layer$","content$","contains","document","activeElement","onClickItem","select","setTimeout","onAfterLeave","closeCondition","target","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","scrollToActiveItem","length","listEl","activeEl","querySelector","scrollEl","isSameNode","scrollTo","top","offsetTop","behavior","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","rxValue","selectionProps","raw","placeholder","internalItems","_Fragment","offset","align","origin","$event","menu","itemProps","leading","trailing","hide","_len","arguments","args","_key","label","_len2","_key2","_len3","_key3","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import {\n ExtractPropTypes,\n type PropType,\n type SlotsType,\n computed,\n mergeProps,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { pressCoordinateProps } from '@/composables/coordinate';\nimport { useI18n } from '@/composables/i18n';\nimport {\n ListItem,\n pressListItemsPropsOptions,\n useItems,\n} from '@/composables/list-items';\nimport { wrapInArray } from '@/util/array';\nimport { deepEqual, omit } from '@/util/common';\nimport {\n chooseProps,\n defineComponent,\n getHtmlElement,\n propsFactory,\n} from '@/util/component';\nimport { getScrollParent } from '@/util/scroll';\n\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIcon, YIconIconProp } from '../icon';\nimport { YList, YListItem } from '../list';\nimport { YMenu } from '../menu';\n\nimport './YSelect.scss';\n\nexport type ItemComparator = (\n optionsItem: any,\n valueItem: any,\n valueKey?: string,\n) => boolean;\n\nexport const pressSelectPropsOptions = propsFactory(\n {\n opened: Boolean as PropType<boolean>,\n closeOnBlur: Boolean as PropType<boolean>,\n multiple: Boolean,\n itemComparator: {\n type: Function as PropType<ItemComparator>,\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 ReturnType<typeof pressYSelectPropsOptions>\n>({\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 change: (value: any) => true,\n },\n slots: Object as SlotsType<{\n base: any;\n selection: {\n displayText: string;\n placeholder: undefined | string;\n items: any[];\n internalItems: ListItem[];\n };\n leading: any;\n label: 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 'item-leading': { item: any; selected: boolean; select: () => void };\n 'item-trailing': { item: any; selected: boolean; select: () => void };\n }>,\n setup(props, { slots, attrs, expose, emit }) {\n const fieldInputRef = ref();\n const menuRef = ref<InstanceType<typeof YMenu>>();\n const listRef = ref<InstanceType<typeof YList>>();\n const cardRef = ref<any>();\n\n const opened = useModelDuplex(props, 'opened');\n const focused = shallowRef(false);\n\n const { items, toRefineItems, toEmitItems } = useItems(props);\n const { t } = useI18n();\n const setOut = (v: any) => {\n const emitValue = toEmitItems(wrapInArray(v));\n return props.multiple ? emitValue : emitValue[0] ?? null;\n };\n const model = useModelDuplex(\n props,\n 'modelValue',\n [],\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\n setOut,\n );\n\n const selections = computed<ListItem[]>(() => {\n const ret: ListItem<any>[] = [];\n for (const v of model.value) {\n const found = items.value.find((item) => {\n return props.itemComparator(item.value, v.value);\n });\n if (found !== undefined) {\n ret.push(found);\n }\n }\n return ret;\n });\n\n const selected = computed(() => {\n return selections.value.map((selection) => selection?.props?.value);\n });\n\n const extraMenuProps = computed(() => {\n return {\n ...props.menuProps,\n preventCloseBubble: true,\n };\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) return;\n opened.value = !opened.value;\n }\n\n function onKeydownDisplay(event: KeyboardEvent) {\n if (props.disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n opened.value = !opened.value;\n }\n }\n\n function onBlur(event: FocusEvent) {\n requestAnimationFrame(() => {\n const contentEl = (menuRef.value as any)?.layer$?.content$;\n if (contentEl?.contains(document.activeElement)) {\n return;\n }\n if (opened.value && props.closeOnBlur) {\n opened.value = false;\n }\n });\n }\n\n // Menu Contents\n function onClickItem(item: ListItem, e: MouseEvent) {\n if (item.disabled) return;\n select(item);\n if (!props.multiple) {\n setTimeout(() => {\n opened.value = false;\n }, 40);\n }\n }\n\n function onAfterLeave() {\n if (!focused.value) {\n // fieldInputRef.value?.focus();\n }\n }\n\n function closeCondition(event: MouseEvent) {\n if (event.target && (menuRef.value as any)?.layer$?.content$) {\n return (event.target as HTMLElement)?.contains(\n (menuRef.value as any)?.layer$?.content$,\n );\n }\n }\n\n function select(item: ListItem) {\n let value;\n if (props.multiple) {\n const index = selections.value.findIndex((selectedItem) => {\n return selectedItem.value === item.value;\n });\n if (index === -1) {\n value = [...model.value, item];\n } else {\n const neo = model.value.slice();\n neo.splice(index, 1);\n value = neo;\n }\n } else {\n value = [item];\n }\n model.value = value;\n emit('change', setOut(value));\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 watch(opened, (neo) => {\n if (neo) {\n nextTick(() => {\n scrollToActiveItem();\n });\n }\n });\n\n function scrollToActiveItem() {\n if (selections.value.length === 0) {\n return;\n }\n const listEl = getHtmlElement(listRef.value);\n if (listEl) {\n const activeEl = listEl?.querySelector('.y-list-item--active') as\n | HTMLElement\n | undefined;\n const contentEl = (menuRef.value as any)?.layer$\n ?.content$ as HTMLElement;\n if (activeEl && contentEl) {\n const scrollEl = getScrollParent(activeEl);\n if (\n scrollEl &&\n (contentEl.contains(scrollEl) || contentEl.isSameNode(scrollEl))\n ) {\n scrollEl.scrollTo({ top: activeEl.offsetTop, behavior: 'smooth' });\n }\n }\n }\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 <YFieldInput\n ref={fieldInputRef}\n {...fieldInputProps}\n modelValue={model.value.map((v: any) => v.props.value).join(', ')}\n validationValue={model.rxValue}\n onMousedown:display={onMousedownDisplay}\n onKeydown:display={onKeydownDisplay}\n onBlur={onBlur}\n readonly\n class={[\n 'y-select',\n {\n 'y-select--opened': opened.value,\n 'y-select--selected': selected.value.length > 0,\n },\n ]}\n {...attrs}\n focused={focused.value}\n >\n {{\n default: () => {\n const selectionProps = {\n items: selections.value.map((item) => item.raw),\n displayText: displayText.value,\n placeholder: props.placeholder,\n internalItems: selections.value,\n };\n return (\n <>\n <div class={['y-select__selection']}>\n {slots.selection\n ? slots.selection?.(selectionProps)\n : selected.value.length > 0\n ? displayText.value\n : props.placeholder}\n </div>\n <YMenu\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 base=\"parent\"\n {...extraMenuProps.value}\n v-model={opened.value}\n >\n {{\n default: slots.menu\n ? () => slots.menu?.()\n : () => (\n <YCard ref={cardRef}>\n {slots['menu-prepend']?.()}\n {items.value.length > 0 ? (\n <YList ref={listRef}>\n {items.value.map((item) => {\n const itemProps = {\n item,\n selected: isSelected(item),\n select: () => {\n select(item);\n },\n };\n return withDirectives(\n <YListItem\n onClick={(e) => onClickItem(item, e)}\n class={[\n {\n 'y-list-item--active':\n isSelected(item),\n },\n ]}\n disabled={item.disabled}\n >\n {{\n default: () =>\n slots.item\n ? slots.item?.(itemProps)\n : item.text,\n leading:\n slots['item-leading'] &&\n (() =>\n slots['item-leading']?.(\n itemProps,\n )),\n trailing:\n slots['item-trailing'] &&\n (() =>\n slots['item-trailing']?.(\n itemProps,\n )),\n }}\n </YListItem>,\n [[vShow, !item.hide]],\n );\n })}\n </YList>\n ) : (\n <div class=\"y-select__no-options\">\n {t('$yuyeon.noItems')}\n </div>\n )}\n {slots['menu-append']?.()}\n </YCard>\n ),\n }}\n </YMenu>\n </>\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 label: slots.label\n ? (...args: any[]) => slots.label?.(...args)\n : undefined,\n 'helper-text': slots['helper-text']\n ? (...args: any[]) => slots['helper-text']?.(...args)\n : undefined,\n }}\n </YFieldInput>\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 opened,\n });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n menuRef,\n baseEl,\n opened,\n };\n },\n});\n\nexport type YSelect = InstanceType<typeof YSelect>;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { mergeProps as _mergeProps, createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from "vue";
|
|
2
|
-
import { computed, provide, ref, toRef } from 'vue';
|
|
2
|
+
import { Fragment, computed, provide, ref, toRef } from 'vue';
|
|
3
|
+
import { pressDataTableExpandProps, provideExpand } from "./composables/expand.js";
|
|
4
|
+
import { createHeader, pressDataTableHeader } from "./composables/header.js";
|
|
5
|
+
import { pressDataTableItemsProps, useItems } from "./composables/items.js";
|
|
6
|
+
import { useOptions } from "./composables/options.js";
|
|
7
|
+
import { createPagination, pressDataTablePaginationProps, providePagination, usePaginatedItems } from "./composables/pagination.js";
|
|
8
|
+
import { YDataTableInjectionKey } from "./composables/provides.js";
|
|
9
|
+
import { pressDataTableSelectionProps, provideSelection } from "./composables/selection.js";
|
|
10
|
+
import { useSortedItems } from "./composables/sorted-items.js";
|
|
11
|
+
import { createSorting, pressDataTableSortProps, provideSorting } from "./composables/sorting.js";
|
|
3
12
|
import { useRender } from "../../composables/component.js";
|
|
4
13
|
import { useResizeObserver } from "../../composables/resize-observer.js";
|
|
5
14
|
import { chooseProps, defineComponent, propsFactory } from "../../util/component/index.js";
|
|
@@ -9,14 +18,6 @@ import { YDataTableControl } from "./YDataTableControl.js";
|
|
|
9
18
|
import { YDataTableHead, pressYDataTableHeadProps } from "./YDataTableHead.js";
|
|
10
19
|
import { YDataTableLayer } from "./YDataTableLayer.js";
|
|
11
20
|
import { YTable, pressYTableProps } from "./YTable.js";
|
|
12
|
-
import { createHeader, pressDataTableHeader } from "./composables/header.js";
|
|
13
|
-
import { pressDataTableItemsProps, useItems } from "./composables/items.js";
|
|
14
|
-
import { useOptions } from "./composables/options.js";
|
|
15
|
-
import { createPagination, pressDataTablePaginationProps, providePagination, usePaginatedItems } from "./composables/pagination.js";
|
|
16
|
-
import { pressDataTableSelectionProps, provideSelection } from "./composables/selection.js";
|
|
17
|
-
import { useSortedItems } from "./composables/sorted-items.js";
|
|
18
|
-
import { createSorting, pressDataTableSortProps, provideSorting } from "./composables/sorting.js";
|
|
19
|
-
import { YDataTableInjectionKey } from "./composables/provides.js";
|
|
20
21
|
export const pressDataTableProps = propsFactory({
|
|
21
22
|
...pressYDataTableBodyProps(),
|
|
22
23
|
width: [String, Number],
|
|
@@ -26,6 +27,7 @@ export const pressDataTableProps = propsFactory({
|
|
|
26
27
|
...pressDataTableItemsProps(),
|
|
27
28
|
...pressDataTableSortProps(),
|
|
28
29
|
...pressDataTableSelectionProps(),
|
|
30
|
+
...pressDataTableExpandProps(),
|
|
29
31
|
...pressYDataTableHeadProps(),
|
|
30
32
|
...pressYTableProps()
|
|
31
33
|
}, 'DataTable');
|
|
@@ -41,6 +43,7 @@ export const YDataTable = defineComponent({
|
|
|
41
43
|
'update:pageSize': pageSize => true,
|
|
42
44
|
'update:sortBy': sortBy => true,
|
|
43
45
|
'update:options': options => true,
|
|
46
|
+
'update:expanded': expanded => true,
|
|
44
47
|
'click:row': (e, value) => true,
|
|
45
48
|
scroll: e => true
|
|
46
49
|
},
|
|
@@ -108,6 +111,10 @@ export const YDataTable = defineComponent({
|
|
|
108
111
|
allItems: items,
|
|
109
112
|
pageItems: items
|
|
110
113
|
});
|
|
114
|
+
const {
|
|
115
|
+
isExpanded,
|
|
116
|
+
toggleExpand
|
|
117
|
+
} = provideExpand(props);
|
|
111
118
|
const {
|
|
112
119
|
resizeObservedRef: headObserveRef,
|
|
113
120
|
contentRect: headRect
|
|
@@ -129,6 +136,9 @@ export const YDataTable = defineComponent({
|
|
|
129
136
|
// sorting
|
|
130
137
|
sortBy: sortBy.value,
|
|
131
138
|
toggleSort,
|
|
139
|
+
// expand
|
|
140
|
+
isExpanded,
|
|
141
|
+
toggleExpand,
|
|
132
142
|
// selection
|
|
133
143
|
someSelected: someSelected.value,
|
|
134
144
|
allSelected: allSelected.value,
|
|
@@ -136,7 +146,7 @@ export const YDataTable = defineComponent({
|
|
|
136
146
|
select,
|
|
137
147
|
selectAll,
|
|
138
148
|
toggleSelect,
|
|
139
|
-
//
|
|
149
|
+
// matrix
|
|
140
150
|
items: paginatedItems.value,
|
|
141
151
|
columns: columns.value,
|
|
142
152
|
headers: headers.value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YDataTable.js","names":["computed","provide","ref","toRef","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","toStyleSizeValue","YDataTableBody","pressYDataTableBodyProps","YDataTableControl","YDataTableHead","pressYDataTableHeadProps","YDataTableLayer","YTable","pressYTableProps","createHeader","pressDataTableHeader","pressDataTableItemsProps","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","usePaginatedItems","pressDataTableSelectionProps","provideSelection","useSortedItems","createSorting","pressDataTableSortProps","provideSorting","YDataTableInjectionKey","pressDataTableProps","width","String","Number","search","hideDefaultTbody","Boolean","YDataTable","name","props","emits","value","page","pageSize","sortBy","options","click:row","e","scroll","setup","_ref","slots","emit","TableBodyRef","multiSort","columns","headers","enableSelect","items","toggleSort","total","length","startIndex","endIndex","pageLength","setPageSize","setPage","sortedItems","paginatedItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","resizeObservedRef","headObserveRef","contentRect","headRect","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend","append"],"sources":["../../../src/components/table/YDataTable.tsx"],"sourcesContent":["import { type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YDataTableBody, pressYDataTableBodyProps } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead, pressYDataTableHeadProps } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable, pressYTableProps } from './YTable';\nimport { createHeader, pressDataTableHeader } from '@/components/table/composables/header';\nimport { pressDataTableItemsProps, useItems } from '@/components/table/composables/items';\nimport { useOptions } from '@/components/table/composables/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n usePaginatedItems,\n} from '@/components/table/composables/pagination';\nimport {\n pressDataTableSelectionProps,\n provideSelection,\n} from '@/components/table/composables/selection';\nimport { useSortedItems } from '@/components/table/composables/sorted-items';\nimport {\n createSorting,\n pressDataTableSortProps,\n provideSorting,\n} from '@/components/table/composables/sorting';\nimport { YDataTableSlotProps } from './types';\nimport { YDataTableInjectionKey } from '@/components/table/composables/provides';\n\nexport const pressDataTableProps = propsFactory(\n {\n ...pressYDataTableBodyProps(),\n width: [String, Number] as PropType<string | number>,\n search: String as PropType<string>,\n hideDefaultTbody: Boolean,\n ...pressDataTableHeader(),\n ...pressDataTableItemsProps(),\n ...pressDataTableSortProps(),\n ...pressDataTableSelectionProps(),\n ...pressYDataTableHeadProps(),\n ...pressYTableProps(),\n },\n 'DataTable',\n);\n\nexport const YDataTable = defineComponent({\n name: 'YDataTable',\n props: {\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n scroll: (e: Event) => true,\n },\n setup(props, { slots, emit }) {\n const TableBodyRef = ref();\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const total = computed(() => items.value.length);\n const { startIndex, endIndex, pageLength, setPageSize, setPage } =\n providePagination({\n page,\n pageSize,\n total,\n });\n const { sortedItems } = useSortedItems(props, items, sortBy);\n const { paginatedItems } = usePaginatedItems({\n items: sortedItems,\n startIndex,\n endIndex,\n pageSize,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n\n const { resizeObservedRef: headObserveRef, contentRect: headRect } =\n useResizeObserver();\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n //\n items: paginatedItems.value,\n columns: columns.value,\n headers: headers.value,\n //\n TableBodyRef,\n };\n });\n\n provide(YDataTableInjectionKey, {\n toggleSort,\n sortBy,\n headRect,\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer\n v-slots={slots}\n slot-props={slotProps.value}\n ></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n {!props.hideDefaultTbody && (\n <tbody>\n <YDataTableBody\n ref={TableBodyRef}\n v-slots={slots}\n {...yDataTableBodyProps}\n items={slotProps.value.items}\n ></YDataTableBody>\n </tbody>\n )}\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n v-slots={{\n prepend: slots['control.prepend'],\n append: slots['control.append'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n\n return { paginatedItems };\n },\n});\n\nexport type YDataTable = InstanceType<typeof YDataTable>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YDataTable.js","names":["Fragment","computed","provide","ref","toRef","pressDataTableExpandProps","provideExpand","createHeader","pressDataTableHeader","pressDataTableItemsProps","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","usePaginatedItems","YDataTableInjectionKey","pressDataTableSelectionProps","provideSelection","useSortedItems","createSorting","pressDataTableSortProps","provideSorting","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","toStyleSizeValue","YDataTableBody","pressYDataTableBodyProps","YDataTableControl","YDataTableHead","pressYDataTableHeadProps","YDataTableLayer","YTable","pressYTableProps","pressDataTableProps","width","String","Number","search","hideDefaultTbody","Boolean","YDataTable","name","props","emits","value","page","pageSize","sortBy","options","expanded","click:row","e","scroll","setup","_ref","slots","emit","TableBodyRef","multiSort","columns","headers","enableSelect","items","toggleSort","total","length","startIndex","endIndex","pageLength","setPageSize","setPage","sortedItems","paginatedItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","isExpanded","toggleExpand","resizeObservedRef","headObserveRef","contentRect","headRect","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend","append"],"sources":["../../../src/components/table/YDataTable.tsx"],"sourcesContent":["import { Fragment, type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport {\n pressDataTableExpandProps,\n provideExpand,\n} from '@/components/table/composables/expand';\nimport {\n createHeader,\n pressDataTableHeader,\n} from '@/components/table/composables/header';\nimport {\n pressDataTableItemsProps,\n useItems,\n} from '@/components/table/composables/items';\nimport { useOptions } from '@/components/table/composables/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n usePaginatedItems,\n} from '@/components/table/composables/pagination';\nimport { YDataTableInjectionKey } from '@/components/table/composables/provides';\nimport {\n pressDataTableSelectionProps,\n provideSelection,\n} from '@/components/table/composables/selection';\nimport { useSortedItems } from '@/components/table/composables/sorted-items';\nimport {\n createSorting,\n pressDataTableSortProps,\n provideSorting,\n} from '@/components/table/composables/sorting';\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YDataTableBody, pressYDataTableBodyProps } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead, pressYDataTableHeadProps } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable, pressYTableProps } from './YTable';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableProps = propsFactory(\n {\n ...pressYDataTableBodyProps(),\n width: [String, Number] as PropType<string | number>,\n search: String as PropType<string>,\n hideDefaultTbody: Boolean,\n ...pressDataTableHeader(),\n ...pressDataTableItemsProps(),\n ...pressDataTableSortProps(),\n ...pressDataTableSelectionProps(),\n ...pressDataTableExpandProps(),\n ...pressYDataTableHeadProps(),\n ...pressYTableProps(),\n },\n 'DataTable',\n);\n\nexport const YDataTable = defineComponent({\n name: 'YDataTable',\n props: {\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (expanded: any[]) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n scroll: (e: Event) => true,\n },\n setup(props, { slots, emit }) {\n const TableBodyRef = ref();\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const total = computed(() => items.value.length);\n const { startIndex, endIndex, pageLength, setPageSize, setPage } =\n providePagination({\n page,\n pageSize,\n total,\n });\n const { sortedItems } = useSortedItems(props, items, sortBy);\n const { paginatedItems } = usePaginatedItems({\n items: sortedItems,\n startIndex,\n endIndex,\n pageSize,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n const { isExpanded, toggleExpand } = provideExpand(props);\n\n const { resizeObservedRef: headObserveRef, contentRect: headRect } =\n useResizeObserver();\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // expand\n isExpanded,\n toggleExpand,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n // matrix\n items: paginatedItems.value,\n columns: columns.value,\n headers: headers.value,\n //\n TableBodyRef,\n };\n });\n\n provide(YDataTableInjectionKey, {\n toggleSort,\n sortBy,\n headRect,\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer\n v-slots={slots}\n slot-props={slotProps.value}\n ></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <Fragment>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n {!props.hideDefaultTbody && (\n <tbody>\n <YDataTableBody\n ref={TableBodyRef}\n v-slots={slots}\n {...yDataTableBodyProps}\n items={slotProps.value.items}\n ></YDataTableBody>\n </tbody>\n )}\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </Fragment>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n v-slots={{\n prepend: slots['control.prepend'],\n append: slots['control.append'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n\n return { paginatedItems };\n },\n});\n\nexport type YDataTable = InstanceType<typeof YDataTable>;\n"],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from "vue";
|
|
2
|
-
import {
|
|
2
|
+
import { Fragment, mergeProps } from 'vue';
|
|
3
|
+
import { useExpand } from "./composables/expand.js";
|
|
4
|
+
import { useHeader } from "./composables/header.js";
|
|
5
|
+
import { useSelection } from "./composables/selection.js";
|
|
3
6
|
import { useRender } from "../../composables/component.js";
|
|
4
7
|
import { defineComponent, propsFactory } from "../../util/component/index.js";
|
|
5
8
|
import { YDataTableRow } from "./YDataTableRow.js";
|
|
6
|
-
import { useHeader } from "./composables/header.js";
|
|
7
|
-
import { useSelection } from "./composables/selection.js";
|
|
8
9
|
export const pressYDataTableBodyProps = propsFactory({
|
|
9
10
|
items: {
|
|
10
11
|
type: Array,
|
|
@@ -33,10 +34,8 @@ export const YDataTableBody = defineComponent({
|
|
|
33
34
|
emits: ['click:row', 'dblclick:row', 'contextmenu:row', 'mousedown:row'],
|
|
34
35
|
setup(props, _ref) {
|
|
35
36
|
let {
|
|
36
|
-
slots
|
|
37
|
-
expose
|
|
37
|
+
slots
|
|
38
38
|
} = _ref;
|
|
39
|
-
const rowRefs = ref([]);
|
|
40
39
|
const {
|
|
41
40
|
columns
|
|
42
41
|
} = useHeader();
|
|
@@ -44,6 +43,10 @@ export const YDataTableBody = defineComponent({
|
|
|
44
43
|
isSelected,
|
|
45
44
|
toggleSelect
|
|
46
45
|
} = useSelection();
|
|
46
|
+
const {
|
|
47
|
+
isExpanded,
|
|
48
|
+
toggleExpand
|
|
49
|
+
} = useExpand();
|
|
47
50
|
useRender(() => {
|
|
48
51
|
if (props.loading) {
|
|
49
52
|
return _createVNode("tr", null, [_createVNode("td", {
|
|
@@ -66,7 +69,9 @@ export const YDataTableBody = defineComponent({
|
|
|
66
69
|
internalItem: item,
|
|
67
70
|
columns: columns.value,
|
|
68
71
|
isSelected,
|
|
69
|
-
toggleSelect
|
|
72
|
+
toggleSelect,
|
|
73
|
+
isExpanded,
|
|
74
|
+
toggleExpand
|
|
70
75
|
};
|
|
71
76
|
function onClick(event, el) {
|
|
72
77
|
props['onClick:row']?.(event, {
|
|
@@ -117,8 +122,7 @@ export const YDataTableBody = defineComponent({
|
|
|
117
122
|
};
|
|
118
123
|
return _createVNode(_Fragment, null, [slots.item ? slots.item(slotProps) : _createVNode(YDataTableRow, _mergeProps({
|
|
119
124
|
"ref": el => {
|
|
120
|
-
|
|
121
|
-
item.rowRef = el;
|
|
125
|
+
item._bindRowRef(el);
|
|
122
126
|
}
|
|
123
127
|
}, slotProps.props, {
|
|
124
128
|
"onClick": props['onClick:row'] && onClick,
|
|
@@ -126,17 +130,9 @@ export const YDataTableBody = defineComponent({
|
|
|
126
130
|
"onDblclick": props['onDblclick:row'] && onDblclick,
|
|
127
131
|
"onMousedown": props['onMousedown:row'] && onMousedown,
|
|
128
132
|
"onKeydown": props['onKeydown:row'] && onKeydown
|
|
129
|
-
}), slots)]);
|
|
133
|
+
}), slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
|
|
130
134
|
})]);
|
|
131
135
|
});
|
|
132
|
-
expose({
|
|
133
|
-
rowRefs
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
// end
|
|
137
|
-
return {
|
|
138
|
-
rowRefs
|
|
139
|
-
};
|
|
140
136
|
}
|
|
141
137
|
});
|
|
142
138
|
//# sourceMappingURL=YDataTableBody.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YDataTableBody.js","names":["mergeProps","ref","useRender","defineComponent","propsFactory","YDataTableRow","useHeader","useSelection","pressYDataTableBodyProps","items","type","Array","default","loading","Boolean","String","loadingText","hideNoData","noDataText","rowProps","Function","Object","rowHeight","Number","YDataTableBody","name","props","emits","setup","_ref","slots","expose","rowRefs","columns","isSelected","toggleSelect","_createVNode","value","length","_Fragment","body","map","item","index","stateProps","raw","internalItem","onClick","event","el","onDblclick","onContextmenu","onMousedown","onKeydown","slotProps","key","_mergeProps","push","rowRef"],"sources":["../../../src/components/table/YDataTableBody.tsx"],"sourcesContent":["import { type PropType, mergeProps, ref } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { defineComponent, propsFactory } from '@/util/component';\n\nimport { YDataTableRow } from './YDataTableRow';\nimport { useHeader } from '@/components/table/composables/header';\nimport { useSelection } from '@/components/table/composables/selection';\nimport { DataTableItem, RowProps } from './types';\n\nexport const pressYDataTableBodyProps = propsFactory(\n {\n items: {\n type: Array as PropType<readonly DataTableItem[]>,\n default: () => [],\n },\n loading: [Boolean, String],\n loadingText: String,\n hideNoData: Boolean,\n noDataText: {\n type: String,\n default: '',\n },\n rowProps: [Function, Object] as PropType<RowProps<any>>,\n rowHeight: Number,\n 'onClick:row': Function as PropType<(e: Event, value: any) => void>,\n 'onDblclick:row': Function as PropType<(e: Event, value: any) => void>,\n 'onContextmenu:row': Function as PropType<(e: Event, value: any) => void>,\n 'onMousedown:row': Function as PropType<(e: Event, value: any) => void>,\n 'onKeydown:row': Function as PropType<(e: Event, value: any) => void>,\n },\n 'YDataTableBody',\n);\n\nexport const YDataTableBody = defineComponent({\n name: 'YDataTableBody',\n props: {\n ...pressYDataTableBodyProps(),\n },\n emits: ['click:row', 'dblclick:row', 'contextmenu:row', 'mousedown:row'],\n setup(props, { slots, expose }) {\n const rowRefs = ref<any[]>([]);\n const { columns } = useHeader();\n const { isSelected, toggleSelect } = useSelection();\n\n useRender(() => {\n if (props.loading) {\n return (\n <tr>\n <td colspan={columns.value.length} class={'y-data-table__loading'}>\n {slots.loading ? slots.loading() : <div>{props.loadingText}</div>}\n </td>\n </tr>\n );\n }\n if (!props.loading && props.items.length < 1 && !props.hideNoData) {\n return (\n <tr key=\"no-data\" class=\"y-data-table__no-data\">\n <td colspan={columns.value.length}>\n {slots['no-data']?.() ?? props.noDataText}\n </td>\n </tr>\n );\n }\n return (\n <>\n {slots.body\n ? slots.body?.(props)\n : props.items.map((item, index) => {\n const stateProps = {\n index,\n item: item.raw,\n internalItem: item,\n columns: columns.value,\n isSelected,\n toggleSelect,\n };\n\n function onClick(event: Event, el: null | Element) {\n props['onClick:row']?.(event, { ...stateProps, el });\n }\n\n function onDblclick(event: Event, el: null | Element) {\n props['onDblclick:row']?.(event, { ...stateProps, el });\n }\n\n function onContextmenu(event: Event, el: null | Element) {\n props['onContextmenu:row']?.(event, {\n ...stateProps,\n el,\n });\n }\n\n function onMousedown(event: Event, el: null | Element) {\n props['onMousedown:row']?.(event, { ...stateProps, el });\n }\n\n function onKeydown(event: Event, el: null | Element) {\n props['onKeydown:row']?.(event, { ...stateProps, el });\n }\n\n const slotProps = {\n ...stateProps,\n props: mergeProps(\n {\n key: `item__${item.key ?? item.index}`,\n item,\n index,\n },\n typeof props.rowProps === 'function'\n ? props.rowProps({\n item: stateProps.item,\n index: stateProps.index,\n internalItem: stateProps.internalItem,\n })\n : props.rowProps,\n ),\n onClick,\n onContextmenu,\n onDblclick,\n onMousedown,\n onKeydown,\n };\n\n return (\n <>\n {slots.item ? (\n slots.item(slotProps)\n ) : (\n <YDataTableRow\n ref={(el) => {\n rowRefs.value.push(el);\n item.rowRef = el;\n }}\n v-slots={slots}\n {...slotProps.props}\n onClick={props['onClick:row'] && onClick}\n onContextmenu={\n props['onContextmenu:row'] && onContextmenu\n }\n onDblclick={props['onDblclick:row'] && onDblclick}\n onMousedown={props['onMousedown:row'] && onMousedown}\n onKeydown={props['onKeydown:row'] && onKeydown}\n ></YDataTableRow>\n )}\n </>\n );\n })}\n </>\n );\n });\n\n expose({\n rowRefs,\n });\n\n // end\n return {\n rowRefs,\n };\n },\n});\n\nexport type YDataTableBody = InstanceType<typeof YDataTableBody>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YDataTableBody.js","names":["Fragment","mergeProps","useExpand","useHeader","useSelection","useRender","defineComponent","propsFactory","YDataTableRow","pressYDataTableBodyProps","items","type","Array","default","loading","Boolean","String","loadingText","hideNoData","noDataText","rowProps","Function","Object","rowHeight","Number","YDataTableBody","name","props","emits","setup","_ref","slots","columns","isSelected","toggleSelect","isExpanded","toggleExpand","_createVNode","value","length","_Fragment","body","map","item","index","stateProps","raw","internalItem","onClick","event","el","onDblclick","onContextmenu","onMousedown","onKeydown","slotProps","key","_mergeProps","_bindRowRef"],"sources":["../../../src/components/table/YDataTableBody.tsx"],"sourcesContent":["import { Fragment, type PropType, mergeProps, ref } from 'vue';\n\nimport { useExpand } from '@/components/table/composables/expand';\nimport { useHeader } from '@/components/table/composables/header';\nimport { useSelection } from '@/components/table/composables/selection';\nimport { useRender } from '@/composables/component';\nimport { defineComponent, propsFactory } from '@/util/component';\n\nimport { YDataTableRow } from './YDataTableRow';\nimport { DataTableItem, RowProps } from './types';\n\nexport const pressYDataTableBodyProps = propsFactory(\n {\n items: {\n type: Array as PropType<readonly DataTableItem[]>,\n default: () => [],\n },\n loading: [Boolean, String],\n loadingText: String,\n hideNoData: Boolean,\n noDataText: {\n type: String,\n default: '',\n },\n rowProps: [Function, Object] as PropType<RowProps<any>>,\n rowHeight: Number,\n 'onClick:row': Function as PropType<(e: Event, value: any) => void>,\n 'onDblclick:row': Function as PropType<(e: Event, value: any) => void>,\n 'onContextmenu:row': Function as PropType<(e: Event, value: any) => void>,\n 'onMousedown:row': Function as PropType<(e: Event, value: any) => void>,\n 'onKeydown:row': Function as PropType<(e: Event, value: any) => void>,\n },\n 'YDataTableBody',\n);\n\nexport const YDataTableBody = defineComponent({\n name: 'YDataTableBody',\n props: {\n ...pressYDataTableBodyProps(),\n },\n emits: ['click:row', 'dblclick:row', 'contextmenu:row', 'mousedown:row'],\n setup(props, { slots }) {\n const { columns } = useHeader();\n const { isSelected, toggleSelect } = useSelection();\n const { isExpanded, toggleExpand } = useExpand();\n\n useRender(() => {\n if (props.loading) {\n return (\n <tr>\n <td colspan={columns.value.length} class={'y-data-table__loading'}>\n {slots.loading ? slots.loading() : <div>{props.loadingText}</div>}\n </td>\n </tr>\n );\n }\n if (!props.loading && props.items.length < 1 && !props.hideNoData) {\n return (\n <tr key=\"no-data\" class=\"y-data-table__no-data\">\n <td colspan={columns.value.length}>\n {slots['no-data']?.() ?? props.noDataText}\n </td>\n </tr>\n );\n }\n return (\n <>\n {slots.body\n ? slots.body?.(props)\n : props.items.map((item, index) => {\n const stateProps = {\n index,\n item: item.raw,\n internalItem: item,\n columns: columns.value,\n isSelected,\n toggleSelect,\n isExpanded,\n toggleExpand,\n };\n\n function onClick(event: Event, el: null | Element) {\n props['onClick:row']?.(event, { ...stateProps, el });\n }\n\n function onDblclick(event: Event, el: null | Element) {\n props['onDblclick:row']?.(event, { ...stateProps, el });\n }\n\n function onContextmenu(event: Event, el: null | Element) {\n props['onContextmenu:row']?.(event, {\n ...stateProps,\n el,\n });\n }\n\n function onMousedown(event: Event, el: null | Element) {\n props['onMousedown:row']?.(event, { ...stateProps, el });\n }\n\n function onKeydown(event: Event, el: null | Element) {\n props['onKeydown:row']?.(event, { ...stateProps, el });\n }\n\n const slotProps = {\n ...stateProps,\n props: mergeProps(\n {\n key: `item__${item.key ?? item.index}`,\n item,\n index,\n },\n typeof props.rowProps === 'function'\n ? props.rowProps({\n item: stateProps.item,\n index: stateProps.index,\n internalItem: stateProps.internalItem,\n })\n : props.rowProps,\n ),\n onClick,\n onContextmenu,\n onDblclick,\n onMousedown,\n onKeydown,\n };\n\n return (\n <Fragment>\n {slots.item ? (\n slots.item(slotProps)\n ) : (\n <YDataTableRow\n ref={(el) => {\n item._bindRowRef(el);\n }}\n v-slots={slots}\n {...slotProps.props}\n onClick={props['onClick:row'] && onClick}\n onContextmenu={\n props['onContextmenu:row'] && onContextmenu\n }\n onDblclick={props['onDblclick:row'] && onDblclick}\n onMousedown={props['onMousedown:row'] && onMousedown}\n onKeydown={props['onKeydown:row'] && onKeydown}\n ></YDataTableRow>\n )}\n {isExpanded(item) && slots['expanded-row']?.(slotProps)}\n </Fragment>\n );\n })}\n </>\n );\n });\n },\n});\n\nexport type YDataTableBody = InstanceType<typeof YDataTableBody>;\n"],"mappings":";AAAA,SAASA,QAAQ,EAAiBC,UAAU,QAAa,KAAK;AAAC,SAEtDC,SAAS;AAAA,SACTC,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,SAAS;AAAA,SACTC,eAAe,EAAEC,YAAY;AAAA,SAE7BC,aAAa;AAGtB,OAAO,MAAMC,wBAAwB,GAAGF,YAAY,CAClD;EACEG,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA2C;IACjDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE,CAACC,OAAO,EAAEC,MAAM,CAAC;EAC1BC,WAAW,EAAED,MAAM;EACnBE,UAAU,EAAEH,OAAO;EACnBI,UAAU,EAAE;IACVR,IAAI,EAAEK,MAAM;IACZH,OAAO,EAAE;EACX,CAAC;EACDO,QAAQ,EAAE,CAACC,QAAQ,EAAEC,MAAM,CAA4B;EACvDC,SAAS,EAAEC,MAAM;EACjB,aAAa,EAAEH,QAAoD;EACnE,gBAAgB,EAAEA,QAAoD;EACtE,mBAAmB,EAAEA,QAAoD;EACzE,iBAAiB,EAAEA,QAAoD;EACvE,eAAe,EAAEA;AACnB,CAAC,EACD,gBACF,CAAC;AAED,OAAO,MAAMI,cAAc,GAAGnB,eAAe,CAAC;EAC5CoB,IAAI,EAAE,gBAAgB;EACtBC,KAAK,EAAE;IACL,GAAGlB,wBAAwB,CAAC;EAC9B,CAAC;EACDmB,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,CAAC;EACxEC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAM;MAAEE;IAAQ,CAAC,GAAG7B,SAAS,CAAC,CAAC;IAC/B,MAAM;MAAE8B,UAAU;MAAEC;IAAa,CAAC,GAAG9B,YAAY,CAAC,CAAC;IACnD,MAAM;MAAE+B,UAAU;MAAEC;IAAa,CAAC,GAAGlC,SAAS,CAAC,CAAC;IAEhDG,SAAS,CAAC,MAAM;MACd,IAAIsB,KAAK,CAACb,OAAO,EAAE;QACjB,OAAAuB,YAAA,cAAAA,YAAA;UAAA,WAEiBL,OAAO,CAACM,KAAK,CAACC,MAAM;UAAA,SAAS;QAAuB,IAC9DR,KAAK,CAACjB,OAAO,GAAGiB,KAAK,CAACjB,OAAO,CAAC,CAAC,GAAAuB,YAAA,eAASV,KAAK,CAACV,WAAW,EAAO;MAIzE;MACA,IAAI,CAACU,KAAK,CAACb,OAAO,IAAIa,KAAK,CAACjB,KAAK,CAAC6B,MAAM,GAAG,CAAC,IAAI,CAACZ,KAAK,CAACT,UAAU,EAAE;QACjE,OAAAmB,YAAA;UAAA;UAAA;QAAA,IAAAA,YAAA;UAAA,WAEiBL,OAAO,CAACM,KAAK,CAACC;QAAM,IAC9BR,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAIJ,KAAK,CAACR,UAAU;MAIjD;MACA,OAAAkB,YAAA,CAAAG,SAAA,SAEKT,KAAK,CAACU,IAAI,GACPV,KAAK,CAACU,IAAI,GAAGd,KAAK,CAAC,GACnBA,KAAK,CAACjB,KAAK,CAACgC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;QAC/B,MAAMC,UAAU,GAAG;UACjBD,KAAK;UACLD,IAAI,EAAEA,IAAI,CAACG,GAAG;UACdC,YAAY,EAAEJ,IAAI;UAClBX,OAAO,EAAEA,OAAO,CAACM,KAAK;UACtBL,UAAU;UACVC,YAAY;UACZC,UAAU;UACVC;QACF,CAAC;QAED,SAASY,OAAOA,CAACC,KAAY,EAAEC,EAAkB,EAAE;UACjDvB,KAAK,CAAC,aAAa,CAAC,GAAGsB,KAAK,EAAE;YAAE,GAAGJ,UAAU;YAAEK;UAAG,CAAC,CAAC;QACtD;QAEA,SAASC,UAAUA,CAACF,KAAY,EAAEC,EAAkB,EAAE;UACpDvB,KAAK,CAAC,gBAAgB,CAAC,GAAGsB,KAAK,EAAE;YAAE,GAAGJ,UAAU;YAAEK;UAAG,CAAC,CAAC;QACzD;QAEA,SAASE,aAAaA,CAACH,KAAY,EAAEC,EAAkB,EAAE;UACvDvB,KAAK,CAAC,mBAAmB,CAAC,GAAGsB,KAAK,EAAE;YAClC,GAAGJ,UAAU;YACbK;UACF,CAAC,CAAC;QACJ;QAEA,SAASG,WAAWA,CAACJ,KAAY,EAAEC,EAAkB,EAAE;UACrDvB,KAAK,CAAC,iBAAiB,CAAC,GAAGsB,KAAK,EAAE;YAAE,GAAGJ,UAAU;YAAEK;UAAG,CAAC,CAAC;QAC1D;QAEA,SAASI,SAASA,CAACL,KAAY,EAAEC,EAAkB,EAAE;UACnDvB,KAAK,CAAC,eAAe,CAAC,GAAGsB,KAAK,EAAE;YAAE,GAAGJ,UAAU;YAAEK;UAAG,CAAC,CAAC;QACxD;QAEA,MAAMK,SAAS,GAAG;UAChB,GAAGV,UAAU;UACblB,KAAK,EAAE1B,UAAU,CACf;YACEuD,GAAG,EAAG,SAAQb,IAAI,CAACa,GAAG,IAAIb,IAAI,CAACC,KAAM,EAAC;YACtCD,IAAI;YACJC;UACF,CAAC,EACD,OAAOjB,KAAK,CAACP,QAAQ,KAAK,UAAU,GAChCO,KAAK,CAACP,QAAQ,CAAC;YACbuB,IAAI,EAAEE,UAAU,CAACF,IAAI;YACrBC,KAAK,EAAEC,UAAU,CAACD,KAAK;YACvBG,YAAY,EAAEF,UAAU,CAACE;UAC3B,CAAC,CAAC,GACFpB,KAAK,CAACP,QACZ,CAAC;UACD4B,OAAO;UACPI,aAAa;UACbD,UAAU;UACVE,WAAW;UACXC;QACF,CAAC;QAED,OAAAjB,YAAA,CAAAG,SAAA,SAEKT,KAAK,CAACY,IAAI,GACTZ,KAAK,CAACY,IAAI,CAACY,SAAS,CAAC,GAAAlB,YAAA,CAAA7B,aAAA,EAAAiD,WAAA;UAAA,OAGbP,EAAE,IAAK;YACXP,IAAI,CAACe,WAAW,CAACR,EAAE,CAAC;UACtB;QAAC,GAEGK,SAAS,CAAC5B,KAAK;UAAA,WACVA,KAAK,CAAC,aAAa,CAAC,IAAIqB,OAAO;UAAA,iBAEtCrB,KAAK,CAAC,mBAAmB,CAAC,IAAIyB,aAAa;UAAA,cAEjCzB,KAAK,CAAC,gBAAgB,CAAC,IAAIwB,UAAU;UAAA,eACpCxB,KAAK,CAAC,iBAAiB,CAAC,IAAI0B,WAAW;UAAA,aACzC1B,KAAK,CAAC,eAAe,CAAC,IAAI2B;QAAS,IARrCvB,KAAK,CAUjB,EACAI,UAAU,CAACQ,IAAI,CAAC,IAAIZ,KAAK,CAAC,cAAc,CAAC,GAAGwB,SAAS,CAAC;MAG7D,CAAC,CAAC;IAGZ,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
|