yuyeon 0.3.7-beta.6 → 0.3.7
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 +1806 -1796
- package/dist/yuyeon.umd.cjs +3 -3
- package/lib/components/dialog/YDialog.scss +0 -1
- package/lib/components/layer/YLayer.js +23 -22
- package/lib/components/layer/YLayer.js.map +1 -1
- package/lib/components/menu/YMenu.js +4 -7
- package/lib/components/menu/YMenu.js.map +1 -1
- package/lib/composables/communication.js +4 -7
- package/lib/composables/communication.js.map +1 -1
- package/lib/composables/validation.js +24 -15
- package/lib/composables/validation.js.map +1 -1
- package/package.json +1 -1
- package/types/components/dialog/YDialog.d.ts +4 -4
- package/types/components/layer/YLayer.d.ts +2 -2
- package/types/components/menu/YMenu.d.ts +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computed, getCurrentInstance, mergeProps, reactive, ref, shallowRef, Teleport, Transition, toRef, Fragment as _Fragment, createVNode as _createVNode, vShow as _vShow, resolveDirective as _resolveDirective, mergeProps as _mergeProps, withDirectives as _withDirectives } from
|
|
1
|
+
import { computed, getCurrentInstance, mergeProps, reactive, ref, shallowRef, Teleport, Transition, toRef, Fragment as _Fragment, createVNode as _createVNode, vShow as _vShow, resolveDirective as _resolveDirective, mergeProps as _mergeProps, withDirectives as _withDirectives } from 'vue';
|
|
2
2
|
import { useModelDuplex } from "../../composables/communication.js";
|
|
3
3
|
import { useRender } from "../../composables/component.js";
|
|
4
4
|
import { pressCoordinateProps, useCoordinate } from "../../composables/coordinate/index.js";
|
|
@@ -72,9 +72,9 @@ export const pressYLayerProps = propsFactory({
|
|
|
72
72
|
...pressCoordinateProps(),
|
|
73
73
|
...pressScrollStrategyProps(),
|
|
74
74
|
...pressDimensionPropsOptions()
|
|
75
|
-
},
|
|
75
|
+
}, 'YLayer');
|
|
76
76
|
export const YLayer = defineComponent({
|
|
77
|
-
name:
|
|
77
|
+
name: 'YLayer',
|
|
78
78
|
inheritAttrs: false,
|
|
79
79
|
components: {
|
|
80
80
|
PolyTransition
|
|
@@ -87,8 +87,8 @@ export const YLayer = defineComponent({
|
|
|
87
87
|
...pressYLayerProps()
|
|
88
88
|
},
|
|
89
89
|
emits: {
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
'update:modelValue': value => true,
|
|
91
|
+
'click:complement': mouseEvent => true,
|
|
92
92
|
afterLeave: () => true,
|
|
93
93
|
afterEnter: () => true
|
|
94
94
|
},
|
|
@@ -141,13 +141,13 @@ export const YLayer = defineComponent({
|
|
|
141
141
|
const {
|
|
142
142
|
lazyValue,
|
|
143
143
|
onAfterUpdate
|
|
144
|
-
} = useLazy(toRef(props,
|
|
144
|
+
} = useLazy(toRef(props, 'eager'), active);
|
|
145
145
|
// States
|
|
146
146
|
const finish = shallowRef(false);
|
|
147
147
|
const hovered = ref(false);
|
|
148
148
|
const focused = ref(false);
|
|
149
|
-
const disabled = toRef(props,
|
|
150
|
-
const maximized = toRef(props,
|
|
149
|
+
const disabled = toRef(props, 'disabled');
|
|
150
|
+
const maximized = toRef(props, 'maximized');
|
|
151
151
|
const rendered = computed(() => !disabled.value && (lazyValue.value || active.value));
|
|
152
152
|
const {
|
|
153
153
|
coordination,
|
|
@@ -166,7 +166,7 @@ export const YLayer = defineComponent({
|
|
|
166
166
|
updateCoordinate
|
|
167
167
|
});
|
|
168
168
|
function onClickComplementLayer(mouseEvent) {
|
|
169
|
-
emit(
|
|
169
|
+
emit('click:complement', mouseEvent);
|
|
170
170
|
if (!props.modal) {
|
|
171
171
|
if (scrim$.value !== null && scrim$.value === mouseEvent.target && props.closeClickScrim) {
|
|
172
172
|
active.value = false;
|
|
@@ -190,7 +190,7 @@ export const YLayer = defineComponent({
|
|
|
190
190
|
function onAfterLeave() {
|
|
191
191
|
onAfterUpdate();
|
|
192
192
|
finish.value = false;
|
|
193
|
-
emit(
|
|
193
|
+
emit('afterLeave');
|
|
194
194
|
}
|
|
195
195
|
function onClickScrim() {
|
|
196
196
|
if (props.closeClickScrim) {
|
|
@@ -205,7 +205,7 @@ export const YLayer = defineComponent({
|
|
|
205
205
|
}
|
|
206
206
|
const computedStyle = computed(() => {
|
|
207
207
|
return {
|
|
208
|
-
zIndex: (props.zIndex ??
|
|
208
|
+
zIndex: (props.zIndex ?? '2000').toString()
|
|
209
209
|
};
|
|
210
210
|
});
|
|
211
211
|
const computedClass = computed(() => {
|
|
@@ -215,7 +215,7 @@ export const YLayer = defineComponent({
|
|
|
215
215
|
const boundClasses = bindClasses(classes);
|
|
216
216
|
return {
|
|
217
217
|
...boundClasses,
|
|
218
|
-
|
|
218
|
+
'y-layer--active': !!active.value
|
|
219
219
|
};
|
|
220
220
|
});
|
|
221
221
|
const computedContentClasses = computed(() => {
|
|
@@ -230,6 +230,9 @@ export const YLayer = defineComponent({
|
|
|
230
230
|
[`y-layer--align-${align}`]: !!align
|
|
231
231
|
};
|
|
232
232
|
});
|
|
233
|
+
function close() {
|
|
234
|
+
active.value = false;
|
|
235
|
+
}
|
|
233
236
|
expose({
|
|
234
237
|
scrim$,
|
|
235
238
|
base$,
|
|
@@ -253,8 +256,8 @@ export const YLayer = defineComponent({
|
|
|
253
256
|
props: mergeProps({
|
|
254
257
|
ref: base$,
|
|
255
258
|
class: {
|
|
256
|
-
|
|
257
|
-
|
|
259
|
+
'y-layer-base': true,
|
|
260
|
+
'y-layer-base--active': active.value
|
|
258
261
|
},
|
|
259
262
|
...(props.baseProps ?? {})
|
|
260
263
|
})
|
|
@@ -266,9 +269,9 @@ export const YLayer = defineComponent({
|
|
|
266
269
|
}, {
|
|
267
270
|
default: () => [rendered.value && _createVNode("div", _mergeProps({
|
|
268
271
|
"class": [{
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
+
'y-layer': true,
|
|
273
|
+
'y-layer--finish': finish.value,
|
|
274
|
+
'y-layer--contained': props.contained,
|
|
272
275
|
...computedClass.value
|
|
273
276
|
}, themeClasses.value],
|
|
274
277
|
"onMouseenter": onMouseenter,
|
|
@@ -284,7 +287,7 @@ export const YLayer = defineComponent({
|
|
|
284
287
|
_createVNode("div", {
|
|
285
288
|
"class": "y-layer__scrim",
|
|
286
289
|
"style": {
|
|
287
|
-
|
|
290
|
+
'--y-layer-scrim-opacity': props.scrimOpacity
|
|
288
291
|
},
|
|
289
292
|
"onClick": onClickScrim,
|
|
290
293
|
"onKeydown": noop(),
|
|
@@ -298,7 +301,7 @@ export const YLayer = defineComponent({
|
|
|
298
301
|
}, polyTransitionBindProps.value), {
|
|
299
302
|
default: () => [_withDirectives(_createVNode("div", _mergeProps({
|
|
300
303
|
"class": {
|
|
301
|
-
|
|
304
|
+
'y-layer__content': true,
|
|
302
305
|
...computedContentClasses.value
|
|
303
306
|
},
|
|
304
307
|
"style": [{
|
|
@@ -310,9 +313,7 @@ export const YLayer = defineComponent({
|
|
|
310
313
|
"ref": content$
|
|
311
314
|
}), [slots.default?.({
|
|
312
315
|
active: active.value,
|
|
313
|
-
close
|
|
314
|
-
active.value = false;
|
|
315
|
-
}
|
|
316
|
+
close
|
|
316
317
|
})]), [[_vShow, active.value], [_resolveDirective("complement-click"), {
|
|
317
318
|
...complementClickOption
|
|
318
319
|
}]])]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YLayer.js","names":["computed","getCurrentInstance","mergeProps","reactive","ref","shallowRef","Teleport","Transition","toRef","Fragment","_Fragment","createVNode","_createVNode","vShow","_vShow","resolveDirective","_resolveDirective","_mergeProps","withDirectives","_withDirectives","useModelDuplex","useRender","pressCoordinateProps","useCoordinate","pressDimensionPropsOptions","useDimension","useLayerGroup","pressThemePropsOptions","useLocalTheme","useLazy","PolyTransition","pressPolyTransitionPropsOptions","usePolyTransition","ComplementClick","bindClasses","defineComponent","propsFactory","pressBasePropsOptions","useBase","pressContentPropsOptions","useContent","pressScrollStrategyProps","useScrollStrategies","noop","pressYLayerProps","modelValue","type","Boolean","scrim","scrimOpacity","Number","eager","classes","Array","String","Object","contentClasses","closeClickScrim","contentStyles","default","disabled","maximized","openOnHover","openDelay","closeDelay","zIndex","contained","layerGroup","YLayer","name","inheritAttrs","components","directives","props","modal","emits","value","mouseEvent","afterLeave","afterEnter","slots","setup","_ref","emit","expose","attrs","vm","scrim$","content$","root$","model","active","get","set","v","base","base$","baseEl","baseSlot","baseFromSlotEl","contentEvents","themeClasses","layerGroupState","getActiveLayers","polyTransitionBindProps","dimensionStyles","lazyValue","onAfterUpdate","finish","hovered","focused","rendered","coordination","coordinateStyles","updateCoordinate","contentEl","root","onClickComplementLayer","target","closeConditional","complementClickOption","handler","determine","include","onAfterEnter","onAfterLeave","onClickScrim","onMouseenter","event","onMouseleave","computedStyle","toString","computedClass","boundClasses","computedContentClasses","side","align","isMe","vnode","slotBase","class","baseProps","close"],"sources":["../../../src/components/layer/YLayer.tsx"],"sourcesContent":["import type { ComponentInternalInstance, PropType, SlotsType } from \"vue\";\r\nimport {\r\n\tcomputed,\r\n\tgetCurrentInstance,\r\n\tmergeProps,\r\n\treactive,\r\n\tref,\r\n\tshallowRef,\r\n\tTeleport,\r\n\tTransition,\r\n\ttoRef,\r\n} from \"vue\";\r\n\r\nimport { useModelDuplex } from \"@/composables/communication\";\r\nimport { useRender } from \"@/composables/component\";\r\nimport { pressCoordinateProps, useCoordinate } from \"@/composables/coordinate\";\r\nimport {\r\n\tpressDimensionPropsOptions,\r\n\tuseDimension,\r\n} from \"@/composables/dimension\";\r\nimport { useLayerGroup } from \"@/composables/layer-group\";\r\nimport { pressThemePropsOptions, useLocalTheme } from \"@/composables/theme\";\r\nimport { useLazy } from \"@/composables/timing\";\r\nimport {\r\n\tPolyTransition,\r\n\tpressPolyTransitionPropsOptions,\r\n\tusePolyTransition,\r\n} from \"@/composables/transition\";\r\nimport {\r\n\tComplementClick,\r\n\ttype ComplementClickBindingOptions,\r\n} from \"@/directives/complement-click\";\r\nimport { bindClasses, defineComponent, propsFactory } from \"@/util/component\";\r\n\r\nimport { pressBasePropsOptions, useBase } from \"./base\";\r\nimport { pressContentPropsOptions, useContent } from \"./content\";\r\nimport {\r\n\tpressScrollStrategyProps,\r\n\tuseScrollStrategies,\r\n} from \"./scroll-strategies\";\r\n\r\nimport \"./YLayer.scss\";\r\nimport type { CssProperties } from \"@/types\";\r\nimport { noop } from \"@/util\";\r\n\r\nexport const pressYLayerProps = propsFactory(\r\n\t{\r\n\t\tmodelValue: {\r\n\t\t\ttype: Boolean as PropType<boolean>,\r\n\t\t},\r\n\t\tscrim: {\r\n\t\t\ttype: Boolean as PropType<boolean>,\r\n\t\t},\r\n\t\tscrimOpacity: {\r\n\t\t\ttype: Number as PropType<number>,\r\n\t\t},\r\n\t\teager: {\r\n\t\t\ttype: Boolean as PropType<boolean>,\r\n\t\t},\r\n\t\tclasses: {\r\n\t\t\ttype: [Array, String, Object] as PropType<\r\n\t\t\t\tstring[] | string | Record<string, any>\r\n\t\t\t>,\r\n\t\t},\r\n\t\tcontentClasses: {\r\n\t\t\ttype: [Array, String, Object] as PropType<\r\n\t\t\t\tstring[] | string | Record<string, any>\r\n\t\t\t>,\r\n\t\t},\r\n\t\tcloseClickScrim: {\r\n\t\t\ttype: Boolean as PropType<boolean>,\r\n\t\t},\r\n\t\tcontentStyles: {\r\n\t\t\ttype: Object as PropType<CssProperties>,\r\n\t\t\tdefault: () => {},\r\n\t\t},\r\n\t\tdisabled: {\r\n\t\t\ttype: Boolean as PropType<boolean>,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\t\tmaximized: {\r\n\t\t\ttype: Boolean as PropType<boolean>,\r\n\t\t},\r\n\t\topenOnHover: {\r\n\t\t\ttype: Boolean as PropType<boolean>,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\t\topenDelay: {\r\n\t\t\ttype: Number as PropType<number>,\r\n\t\t\tdefault: 200,\r\n\t\t},\r\n\t\tcloseDelay: {\r\n\t\t\ttype: Number as PropType<number>,\r\n\t\t\tdefault: 200,\r\n\t\t},\r\n\t\tzIndex: {\r\n\t\t\ttype: [Number, String] as PropType<number | string>,\r\n\t\t\tdefault: 2000,\r\n\t\t},\r\n\t\tcontained: Boolean,\r\n\t\tlayerGroup: [String, Object] as PropType<string | Element>,\r\n\t\t...pressThemePropsOptions(),\r\n\t\t...pressPolyTransitionPropsOptions(),\r\n\t\t...pressBasePropsOptions(),\r\n\t\t...pressContentPropsOptions(),\r\n\t\t...pressCoordinateProps(),\r\n\t\t...pressScrollStrategyProps(),\r\n\t\t...pressDimensionPropsOptions(),\r\n\t},\r\n\t\"YLayer\",\r\n);\r\n\r\nexport const YLayer = defineComponent({\r\n\tname: \"YLayer\",\r\n\tinheritAttrs: false,\r\n\tcomponents: {\r\n\t\tPolyTransition,\r\n\t},\r\n\tdirectives: {\r\n\t\tComplementClick,\r\n\t},\r\n\tprops: {\r\n\t\tmodal: Boolean as PropType<boolean>,\r\n\t\t...pressYLayerProps(),\r\n\t},\r\n\temits: {\r\n\t\t\"update:modelValue\": (value: boolean) => true,\r\n\t\t\"click:complement\": (mouseEvent: MouseEvent) => true,\r\n\t\tafterLeave: () => true,\r\n afterEnter: () => true,\r\n\t},\r\n\tslots: Object as SlotsType<{\r\n\t\tbase: any;\r\n\t\tdefault: any;\r\n\t}>,\r\n\tsetup(props, { emit, expose, attrs, slots }) {\r\n\t\tconst vm = getCurrentInstance();\r\n\t\tconst scrim$ = ref<HTMLElement>();\r\n\t\tconst content$ = ref<HTMLElement>();\r\n\t\tconst root$ = ref<HTMLElement>();\r\n\t\tconst model = useModelDuplex(props);\r\n\t\tconst active = computed({\r\n\t\t\tget: (): boolean => {\r\n\t\t\t\treturn !!model.value;\r\n\t\t\t},\r\n\t\t\tset: (v: boolean) => {\r\n\t\t\t\tif (!(v && props.disabled)) model.value = v;\r\n\t\t\t},\r\n\t\t});\r\n\t\t// Frags\r\n\t\tconst { base, base$, baseEl, baseSlot, baseFromSlotEl } = useBase(props);\r\n\t\tconst { contentEvents } = useContent(props, active);\r\n\t\tconst { themeClasses } = useLocalTheme(props);\r\n\t\tconst { layerGroup, layerGroupState, getActiveLayers } =\r\n\t\t\tuseLayerGroup(props);\r\n\t\tconst { polyTransitionBindProps } = usePolyTransition(props);\r\n\t\tconst { dimensionStyles } = useDimension(props);\r\n\r\n\t\tconst { lazyValue, onAfterUpdate } = useLazy(toRef(props, \"eager\"), active);\r\n\t\t// States\r\n\t\tconst finish = shallowRef(false);\r\n\t\tconst hovered = ref(false);\r\n\t\tconst focused = ref(false);\r\n\t\tconst disabled = toRef(props, \"disabled\");\r\n\t\tconst maximized = toRef(props, \"maximized\");\r\n\r\n\t\tconst rendered = computed<boolean>(\r\n\t\t\t() => !disabled.value && (lazyValue.value || active.value),\r\n\t\t);\r\n\r\n\t\tconst { coordination, coordinateStyles, updateCoordinate } = useCoordinate(props, {\r\n\t\t\tcontentEl: content$,\r\n\t\t\tbase,\r\n\t\t\tactive,\r\n\t\t});\r\n\t\tuseScrollStrategies(props, {\r\n\t\t\troot: root$,\r\n\t\t\tcontentEl: content$,\r\n\t\t\tactive,\r\n\t\t\tbaseEl: base,\r\n\t\t\tupdateCoordinate,\r\n\t\t});\r\n\r\n\t\tfunction onClickComplementLayer(mouseEvent: MouseEvent) {\r\n\t\t\temit(\"click:complement\", mouseEvent);\r\n\t\t\tif (!props.modal) {\r\n\t\t\t\tif (\r\n\t\t\t\t\tscrim$.value !== null &&\r\n\t\t\t\t\tscrim$.value === mouseEvent.target &&\r\n\t\t\t\t\tprops.closeClickScrim\r\n\t\t\t\t) {\r\n\t\t\t\t\tactive.value = false;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// TODO: shrug ani\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction closeConditional(): boolean {\r\n\t\t\treturn (\r\n\t\t\t\t(!props.openOnHover || (props.openOnHover && !hovered.value)) &&\r\n\t\t\t\tactive.value &&\r\n\t\t\t\tfinish.value\r\n\t\t\t); // TODO: && groupTopLevel.value;\r\n\t\t}\r\n\r\n\t\tconst complementClickOption = reactive<ComplementClickBindingOptions>({\r\n\t\t\thandler: onClickComplementLayer,\r\n\t\t\tdetermine: closeConditional,\r\n\t\t\tinclude: () => [baseEl.value],\r\n\t\t});\r\n\r\n\t\tfunction onAfterEnter() {\r\n\t\t\tfinish.value = true;\r\n emit('afterEnter');\r\n\t\t}\r\n\r\n\t\tfunction onAfterLeave() {\r\n\t\t\tonAfterUpdate();\r\n\t\t\tfinish.value = false;\r\n\t\t\temit(\"afterLeave\");\r\n\t\t}\r\n\r\n\t\tfunction onClickScrim() {\r\n\t\t\tif (props.closeClickScrim) {\r\n\t\t\t\tactive.value = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onMouseenter(event: Event) {\r\n\t\t\thovered.value = true;\r\n\t\t}\r\n\r\n\t\tfunction onMouseleave(event: Event) {\r\n\t\t\thovered.value = false;\r\n\t\t}\r\n\r\n\t\tconst computedStyle = computed(() => {\r\n\t\t\treturn {\r\n\t\t\t\tzIndex: (props.zIndex ?? \"2000\").toString(),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst computedClass = computed<Record<string, boolean>>(() => {\r\n\t\t\tconst { classes } = props;\r\n\t\t\tconst boundClasses = bindClasses(classes);\r\n\t\t\treturn {\r\n\t\t\t\t...boundClasses,\r\n\t\t\t\t\"y-layer--active\": !!active.value,\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst computedContentClasses = computed<Record<string, boolean>>(() => {\r\n\t\t\tconst boundClasses = bindClasses(props.contentClasses);\r\n\t\t\tconst { side, align } = coordination.value;\r\n\t\t\treturn {\r\n\t\t\t\t...boundClasses,\r\n [`y-layer--side-${side}`]: !!side,\r\n [`y-layer--align-${align}`]: !!align,\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\texpose({\r\n\t\t\tscrim$,\r\n\t\t\tbase$,\r\n\t\t\tcontent$: computed(() => content$.value),\r\n\t\t\tbaseEl,\r\n\t\t\tactive,\r\n\t\t\tonAfterUpdate,\r\n\t\t\tupdateCoordinate,\r\n\t\t\thovered,\r\n\t\t\tfinish,\r\n\t\t\tmodal: computed(() => props.modal),\r\n\t\t\tgetActiveLayers,\r\n\t\t\tisMe: (vnode: ComponentInternalInstance) => {\r\n\t\t\t\treturn vnode === vm;\r\n\t\t\t},\r\n\t\t\tcoordination,\r\n\t\t});\r\n\r\n\t\tuseRender(() => {\r\n\t\t\tconst slotBase = slots.base?.({\r\n\t\t\t\tactive: active.value,\r\n\t\t\t\tprops: mergeProps({\r\n\t\t\t\t\tref: base$,\r\n\t\t\t\t\tclass: {\r\n\t\t\t\t\t\t\"y-layer-base\": true,\r\n\t\t\t\t\t\t\"y-layer-base--active\": active.value,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t...(props.baseProps ?? {}),\r\n\t\t\t\t}),\r\n\t\t\t});\r\n\t\t\tbaseSlot.value = slotBase;\r\n\t\t\treturn (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{slotBase}\r\n\t\t\t\t\t<Teleport disabled={!layerGroup.value} to={layerGroup.value as any}>\r\n\t\t\t\t\t\t{rendered.value && (\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass={[\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"y-layer\": true,\r\n\t\t\t\t\t\t\t\t\t\t\"y-layer--finish\": finish.value,\r\n\t\t\t\t\t\t\t\t\t\t\"y-layer--contained\": props.contained,\r\n\t\t\t\t\t\t\t\t\t\t...computedClass.value,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tthemeClasses.value,\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\tonMouseenter={onMouseenter}\r\n\t\t\t\t\t\t\t\tonMouseleave={onMouseleave}\r\n\t\t\t\t\t\t\t\tstyle={computedStyle.value}\r\n\t\t\t\t\t\t\t\tref={root$}\r\n\t\t\t\t\t\t\t\t{...attrs}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<Transition name=\"fade\" appear>\r\n\t\t\t\t\t\t\t\t\t{active.value && props.scrim && (\r\n\t\t\t\t\t\t\t\t\t\t// biome-ignore lint/a11y/noStaticElementInteractions: <explanation>\r\n\t\t\t\t\t\t\t\t\t\t// biome-ignore lint/a11y/useKeyWithClickEvents: <explanation>\r\n\t\t\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"y-layer__scrim\"\r\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ \"--y-layer-scrim-opacity\": props.scrimOpacity }}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={onClickScrim}\r\n\t\t\t\t\t\t\t\t\t\t\tonKeydown={noop()}\r\n\t\t\t\t\t\t\t\t\t\t\tonKeyup={noop()}\r\n\t\t\t\t\t\t\t\t\t\t\tref=\"scrim$\"\r\n\t\t\t\t\t\t\t\t\t\t></div>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Transition>\r\n\t\t\t\t\t\t\t\t<PolyTransition\r\n\t\t\t\t\t\t\t\t\tonAfterEnter={onAfterEnter}\r\n\t\t\t\t\t\t\t\t\tonAfterLeave={onAfterLeave}\r\n\t\t\t\t\t\t\t\t\tappear\r\n\t\t\t\t\t\t\t\t\t{...polyTransitionBindProps.value}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\t\tv-show={active.value}\r\n\t\t\t\t\t\t\t\t\t\tv-complement-click={{ ...complementClickOption }}\r\n\t\t\t\t\t\t\t\t\t\tclass={{\r\n\t\t\t\t\t\t\t\t\t\t\t\"y-layer__content\": true,\r\n\t\t\t\t\t\t\t\t\t\t\t...computedContentClasses.value,\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tstyle={[\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t...dimensionStyles.value,\r\n\t\t\t\t\t\t\t\t\t\t\t\t...coordinateStyles.value,\r\n\t\t\t\t\t\t\t\t\t\t\t\t...props.contentStyles,\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\t\t{...contentEvents.value}\r\n\t\t\t\t\t\t\t\t\t\tref={content$}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{slots.default?.({ active: active.value, close: () => { active.value = false; } })}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</PolyTransition>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Teleport>\r\n\t\t\t\t</>\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tcomplementClickOption,\r\n\t\t\tlayerGroup,\r\n\t\t\tactive,\r\n\t\t\tfinish,\r\n\t\t\trendered,\r\n\t\t\tlazyValue,\r\n\t\t\tonAfterUpdate: onAfterUpdate as () => void,\r\n\t\t\tscrim$,\r\n\t\t\tcontent$,\r\n\t\t\tbase,\r\n\t\t\tbase$,\r\n\t\t\tbaseEl,\r\n\t\t\tbaseFromSlotEl,\r\n\t\t\tpolyTransitionBindProps,\r\n\t\t\tcoordinateStyles,\r\n\t\t\tlayerGroupState,\r\n\t\t\tgetActiveLayers,\r\n\t\t\tcoordination,\r\n\t\t};\r\n\t},\r\n});\r\n\r\nexport type YLayer = InstanceType<typeof YLayer>;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"YLayer.js","names":["computed","getCurrentInstance","mergeProps","reactive","ref","shallowRef","Teleport","Transition","toRef","Fragment","_Fragment","createVNode","_createVNode","vShow","_vShow","resolveDirective","_resolveDirective","_mergeProps","withDirectives","_withDirectives","useModelDuplex","useRender","pressCoordinateProps","useCoordinate","pressDimensionPropsOptions","useDimension","useLayerGroup","pressThemePropsOptions","useLocalTheme","useLazy","PolyTransition","pressPolyTransitionPropsOptions","usePolyTransition","ComplementClick","bindClasses","defineComponent","propsFactory","pressBasePropsOptions","useBase","pressContentPropsOptions","useContent","pressScrollStrategyProps","useScrollStrategies","noop","pressYLayerProps","modelValue","type","Boolean","scrim","scrimOpacity","Number","eager","classes","Array","String","Object","contentClasses","closeClickScrim","contentStyles","default","disabled","maximized","openOnHover","openDelay","closeDelay","zIndex","contained","layerGroup","YLayer","name","inheritAttrs","components","directives","props","modal","emits","value","mouseEvent","afterLeave","afterEnter","slots","setup","_ref","emit","expose","attrs","vm","scrim$","content$","root$","model","active","get","set","v","base","base$","baseEl","baseSlot","baseFromSlotEl","contentEvents","themeClasses","layerGroupState","getActiveLayers","polyTransitionBindProps","dimensionStyles","lazyValue","onAfterUpdate","finish","hovered","focused","rendered","coordination","coordinateStyles","updateCoordinate","contentEl","root","onClickComplementLayer","target","closeConditional","complementClickOption","handler","determine","include","onAfterEnter","onAfterLeave","onClickScrim","onMouseenter","event","onMouseleave","computedStyle","toString","computedClass","boundClasses","computedContentClasses","side","align","close","isMe","vnode","slotBase","class","baseProps"],"sources":["../../../src/components/layer/YLayer.tsx"],"sourcesContent":["import type { ComponentInternalInstance, PropType, SlotsType } from 'vue';\nimport {\n computed,\n getCurrentInstance,\n mergeProps,\n reactive,\n ref,\n shallowRef,\n Teleport,\n Transition,\n toRef,\n} from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { pressCoordinateProps, useCoordinate } from '@/composables/coordinate';\nimport {\n pressDimensionPropsOptions,\n useDimension,\n} from '@/composables/dimension';\nimport { useLayerGroup } from '@/composables/layer-group';\nimport { pressThemePropsOptions, useLocalTheme } from '@/composables/theme';\nimport { useLazy } from '@/composables/timing';\nimport {\n PolyTransition,\n pressPolyTransitionPropsOptions,\n usePolyTransition,\n} from '@/composables/transition';\nimport {\n ComplementClick,\n type ComplementClickBindingOptions,\n} from '@/directives/complement-click';\nimport { bindClasses, defineComponent, propsFactory } from '@/util/component';\n\nimport { pressBasePropsOptions, useBase } from './base';\nimport { pressContentPropsOptions, useContent } from './content';\nimport {\n pressScrollStrategyProps,\n useScrollStrategies,\n} from './scroll-strategies';\n\nimport './YLayer.scss';\nimport type { CssProperties } from '@/types';\nimport { noop } from '@/util';\n\nexport const pressYLayerProps = propsFactory(\n {\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n scrim: {\n type: Boolean as PropType<boolean>,\n },\n scrimOpacity: {\n type: Number as PropType<number>,\n },\n eager: {\n type: Boolean as PropType<boolean>,\n },\n classes: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n contentClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n closeClickScrim: {\n type: Boolean as PropType<boolean>,\n },\n contentStyles: {\n type: Object as PropType<CssProperties>,\n default: () => {},\n },\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n maximized: {\n type: Boolean as PropType<boolean>,\n },\n openOnHover: {\n type: Boolean as PropType<boolean>,\n default: false,\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 zIndex: {\n type: [Number, String] as PropType<number | string>,\n default: 2000,\n },\n contained: Boolean,\n layerGroup: [String, Object] as PropType<string | Element>,\n ...pressThemePropsOptions(),\n ...pressPolyTransitionPropsOptions(),\n ...pressBasePropsOptions(),\n ...pressContentPropsOptions(),\n ...pressCoordinateProps(),\n ...pressScrollStrategyProps(),\n ...pressDimensionPropsOptions(),\n },\n 'YLayer',\n);\n\nexport const YLayer = defineComponent({\n name: 'YLayer',\n inheritAttrs: false,\n components: {\n PolyTransition,\n },\n directives: {\n ComplementClick,\n },\n props: {\n modal: Boolean as PropType<boolean>,\n ...pressYLayerProps(),\n },\n emits: {\n 'update:modelValue': (value: boolean) => true,\n 'click:complement': (mouseEvent: MouseEvent) => true,\n afterLeave: () => true,\n afterEnter: () => true,\n },\n slots: Object as SlotsType<{\n base: any;\n default: any;\n }>,\n setup(props, { emit, expose, attrs, slots }) {\n const vm = getCurrentInstance();\n const scrim$ = ref<HTMLElement>();\n const content$ = ref<HTMLElement>();\n const root$ = ref<HTMLElement>();\n const model = useModelDuplex(props);\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n // Frags\n const { base, base$, baseEl, baseSlot, baseFromSlotEl } = useBase(props);\n const { contentEvents } = useContent(props, active);\n const { themeClasses } = useLocalTheme(props);\n const { layerGroup, layerGroupState, getActiveLayers } =\n useLayerGroup(props);\n const { polyTransitionBindProps } = usePolyTransition(props);\n const { dimensionStyles } = useDimension(props);\n\n const { lazyValue, onAfterUpdate } = useLazy(toRef(props, 'eager'), active);\n // States\n const finish = shallowRef(false);\n const hovered = ref(false);\n const focused = ref(false);\n const disabled = toRef(props, 'disabled');\n const maximized = toRef(props, 'maximized');\n\n const rendered = computed<boolean>(\n () => !disabled.value && (lazyValue.value || active.value),\n );\n\n const { coordination, coordinateStyles, updateCoordinate } = useCoordinate(\n props,\n {\n contentEl: content$,\n base,\n active,\n },\n );\n useScrollStrategies(props, {\n root: root$,\n contentEl: content$,\n active,\n baseEl: base,\n updateCoordinate,\n });\n\n function onClickComplementLayer(mouseEvent: MouseEvent) {\n emit('click:complement', mouseEvent);\n if (!props.modal) {\n if (\n scrim$.value !== null &&\n scrim$.value === mouseEvent.target &&\n props.closeClickScrim\n ) {\n active.value = false;\n }\n } else {\n // TODO: shrug ani\n }\n }\n\n function closeConditional(): boolean {\n return (\n (!props.openOnHover || (props.openOnHover && !hovered.value)) &&\n active.value &&\n finish.value\n ); // TODO: && groupTopLevel.value;\n }\n\n const complementClickOption = reactive<ComplementClickBindingOptions>({\n handler: onClickComplementLayer,\n determine: closeConditional,\n include: () => [baseEl.value],\n });\n\n function onAfterEnter() {\n finish.value = true;\n emit('afterEnter');\n }\n\n function onAfterLeave() {\n onAfterUpdate();\n finish.value = false;\n emit('afterLeave');\n }\n\n function onClickScrim() {\n if (props.closeClickScrim) {\n active.value = false;\n }\n }\n\n function onMouseenter(event: Event) {\n hovered.value = true;\n }\n\n function onMouseleave(event: Event) {\n hovered.value = false;\n }\n\n const computedStyle = computed(() => {\n return {\n zIndex: (props.zIndex ?? '2000').toString(),\n };\n });\n\n const computedClass = computed<Record<string, boolean>>(() => {\n const { classes } = props;\n const boundClasses = bindClasses(classes);\n return {\n ...boundClasses,\n 'y-layer--active': !!active.value,\n };\n });\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n const { side, align } = coordination.value;\n return {\n ...boundClasses,\n [`y-layer--side-${side}`]: !!side,\n [`y-layer--align-${align}`]: !!align,\n };\n });\n\n function close() {\n active.value = false;\n }\n\n expose({\n scrim$,\n base$,\n content$: computed(() => content$.value),\n baseEl,\n active,\n onAfterUpdate,\n updateCoordinate,\n hovered,\n finish,\n modal: computed(() => props.modal),\n getActiveLayers,\n isMe: (vnode: ComponentInternalInstance) => {\n return vnode === vm;\n },\n coordination,\n });\n\n useRender(() => {\n const slotBase = slots.base?.({\n active: active.value,\n props: mergeProps({\n ref: base$,\n class: {\n 'y-layer-base': true,\n 'y-layer-base--active': active.value,\n },\n ...(props.baseProps ?? {}),\n }),\n });\n baseSlot.value = slotBase;\n return (\n <>\n {slotBase}\n <Teleport disabled={!layerGroup.value} to={layerGroup.value as any}>\n {rendered.value && (\n <div\n class={[\n {\n 'y-layer': true,\n 'y-layer--finish': finish.value,\n 'y-layer--contained': props.contained,\n ...computedClass.value,\n },\n themeClasses.value,\n ]}\n onMouseenter={onMouseenter}\n onMouseleave={onMouseleave}\n style={computedStyle.value}\n ref={root$}\n {...attrs}\n >\n <Transition name=\"fade\" appear>\n {active.value && props.scrim && (\n // biome-ignore lint/a11y/noStaticElementInteractions: <explanation>\n // biome-ignore lint/a11y/useKeyWithClickEvents: <explanation>\n <div\n class=\"y-layer__scrim\"\n style={{ '--y-layer-scrim-opacity': props.scrimOpacity }}\n onClick={onClickScrim}\n onKeydown={noop()}\n onKeyup={noop()}\n ref=\"scrim$\"\n ></div>\n )}\n </Transition>\n <PolyTransition\n onAfterEnter={onAfterEnter}\n onAfterLeave={onAfterLeave}\n appear\n {...polyTransitionBindProps.value}\n >\n <div\n v-show={active.value}\n v-complement-click={{ ...complementClickOption }}\n class={{\n 'y-layer__content': true,\n ...computedContentClasses.value,\n }}\n style={[\n {\n ...dimensionStyles.value,\n ...coordinateStyles.value,\n ...props.contentStyles,\n },\n ]}\n {...contentEvents.value}\n ref={content$}\n >\n {slots.default?.({ active: active.value, close })}\n </div>\n </PolyTransition>\n </div>\n )}\n </Teleport>\n </>\n );\n });\n\n return {\n complementClickOption,\n layerGroup,\n active,\n finish,\n rendered,\n lazyValue,\n onAfterUpdate: onAfterUpdate as () => void,\n scrim$,\n content$,\n base,\n base$,\n baseEl,\n baseFromSlotEl,\n polyTransitionBindProps,\n coordinateStyles,\n layerGroupState,\n getActiveLayers,\n coordination,\n };\n },\n});\n\nexport type YLayer = InstanceType<typeof YLayer>;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -180,15 +180,12 @@ export const YMenu = defineComponent({
|
|
|
180
180
|
"modelValue": active.value,
|
|
181
181
|
"onUpdate:modelValue": $event => active.value = $event
|
|
182
182
|
}), {
|
|
183
|
-
default:
|
|
184
|
-
|
|
185
|
-
args[_key] = arguments[_key];
|
|
186
|
-
}
|
|
187
|
-
return _createVNode(_Fragment, null, [slots.default?.(...args) ?? '']);
|
|
183
|
+
default: slotProps => {
|
|
184
|
+
return _createVNode(_Fragment, null, [slots.default?.(slotProps) ?? '']);
|
|
188
185
|
},
|
|
189
186
|
base: function () {
|
|
190
|
-
for (var
|
|
191
|
-
args[
|
|
187
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
188
|
+
args[_key] = arguments[_key];
|
|
192
189
|
}
|
|
193
190
|
return slots.base?.(...args);
|
|
194
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YMenu.js","names":["computed","getCurrentInstance","ref","toRef","watch","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","useModelDuplex","useRender","pressPolyTransitionPropsOptions","bindClasses","chooseProps","defineComponent","hasElementMouseEvent","toKebabCase","pressYLayerProps","YLayer","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","scrollStrategy","preventCloseBubble","YMenu","name","props","transition","emits","slots","expose","setup","_ref","emit","vm","layer$","classes","boundClasses","active","hovered","value","finish","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","disabled","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","immediate","computedContentClasses","contentClasses","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import {\r\n computed,\r\n getCurrentInstance,\r\n type PropType,\r\n ref,\r\n type SlotsType,\r\n toRef,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { useRender } from '@/composables/component';\r\nimport { pressPolyTransitionPropsOptions } from '@/composables/transition';\r\nimport { bindClasses, chooseProps, defineComponent } from '@/util/component';\r\nimport { hasElementMouseEvent } from '@/util/dom';\r\nimport { toKebabCase } from '@/util/string';\r\n\r\nimport { pressYLayerProps, YLayer } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { useActiveStack } from '../layer/active-stack';\r\n\r\nimport './YMenu.scss';\r\n\r\nconst NAME = 'YMenu';\r\nconst CLASS_NAME = toKebabCase(NAME);\r\n\r\nexport const YMenuPropOptions = {\r\n menuClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n openOnClickBase: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n closeCondition: {\r\n type: [Boolean, Function],\r\n default: undefined,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation' as const,\r\n scrollStrategy: 'reposition' as const,\r\n }),\r\n preventCloseBubble: Boolean as PropType<boolean>,\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YMenu = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YMenuPropOptions,\r\n ...pressPolyTransitionPropsOptions({\r\n transition: 'fade',\r\n }),\r\n },\r\n emits: ['update:modelValue', 'afterLeave', 'hoverContent'],\r\n slots: Object as SlotsType<{\r\n default: any;\r\n base: any;\r\n }>,\r\n expose: ['layer$', 'baseEl'],\r\n setup(props, { slots, emit, expose }) {\r\n const vm = getCurrentInstance();\r\n const layer$ = ref<typeof YLayer>();\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.menuClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-menu': true,\r\n };\r\n });\r\n\r\n const active = useModelDuplex(props);\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n const finish = computed(() => !!layer$.value?.finish);\r\n const { children, parent } = useActiveStack(\r\n layer$,\r\n active,\r\n toRef(props, 'preventCloseBubble'),\r\n );\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (\r\n !changeActive &&\r\n props.openOnHover &&\r\n !hovered.value &&\r\n children.value.length === 0\r\n ) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n emit('hoverContent', value);\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function onClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n if (!props.openOnClickBase) {\r\n return;\r\n }\r\n const currentActive = active.value;\r\n if (!props.disabled) {\r\n if (props.openOnHover && finish.value && currentActive) {\r\n return;\r\n }\r\n active.value = !currentActive;\r\n }\r\n }\r\n\r\n function onComplementClick(e: Event) {\r\n if (props.closeCondition === false) {\r\n return;\r\n }\r\n if (typeof props.closeCondition === 'function') {\r\n if (props.closeCondition(e) === false) {\r\n active.value = false;\r\n return;\r\n }\r\n }\r\n if (active.value) {\r\n if (children.value.length === 0) {\r\n active.value = false;\r\n }\r\n const parentContent = parent?.$el.value?.content$;\r\n const parentModal = parent?.$el.value?.modal;\r\n if (\r\n !(parentContent && !hasElementMouseEvent(e, parentContent)) &&\r\n !parentModal &&\r\n !props.preventCloseBubble\r\n ) {\r\n parent?.clear();\r\n }\r\n }\r\n }\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener('mouseenter', onMouseenter);\r\n el.addEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener('mouseenter', onMouseenter);\r\n el.removeEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n neo.addEventListener('click', onClick);\r\n } else if (old) {\r\n unbindHover(old);\r\n old.removeEventListener('click', onClick);\r\n }\r\n },\r\n {\r\n immediate: true,\r\n },\r\n );\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n return {\r\n ...boundClasses,\r\n };\r\n });\r\n\r\n const baseEl = computed(() => {\r\n return layer$.value?.baseEl;\r\n });\r\n\r\n expose({\r\n layer$,\r\n baseEl,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <YLayer\r\n ref={layer$}\r\n transition={props.transition}\r\n onClick:complement={onComplementClick}\r\n onAfterLeave={() => emit('afterLeave')}\r\n {...{\r\n ...chooseProps(props, YLayer.props),\r\n classes: classes.value,\r\n scrim: false,\r\n contentClasses: {\r\n 'y-menu__content': true,\r\n ...computedContentClasses.value,\r\n },\r\n }}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return <>{slots.default?.(...args) ?? ''}</>;\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n );\r\n });\r\n\r\n return {\r\n layer$,\r\n baseEl,\r\n classes,\r\n children,\r\n parent,\r\n active,\r\n hovered,\r\n };\r\n },\r\n});\r\n\r\nexport type YMenu = InstanceType<typeof YMenu>;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"YMenu.js","names":["computed","getCurrentInstance","ref","toRef","watch","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","useModelDuplex","useRender","pressPolyTransitionPropsOptions","bindClasses","chooseProps","defineComponent","hasElementMouseEvent","toKebabCase","pressYLayerProps","YLayer","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","scrollStrategy","preventCloseBubble","YMenu","name","props","transition","emits","slots","expose","setup","_ref","emit","vm","layer$","classes","boundClasses","active","hovered","value","finish","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","disabled","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","immediate","computedContentClasses","contentClasses","onAfterLeave","scrim","$event","slotProps","base","_len","arguments","args","_key"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import {\r\n computed,\r\n getCurrentInstance,\r\n type PropType,\r\n ref,\r\n type SlotsType,\r\n toRef,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { useRender } from '@/composables/component';\r\nimport { pressPolyTransitionPropsOptions } from '@/composables/transition';\r\nimport { bindClasses, chooseProps, defineComponent } from '@/util/component';\r\nimport { hasElementMouseEvent } from '@/util/dom';\r\nimport { toKebabCase } from '@/util/string';\r\n\r\nimport { pressYLayerProps, YLayer } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { useActiveStack } from '../layer/active-stack';\r\n\r\nimport './YMenu.scss';\r\n\r\nconst NAME = 'YMenu';\r\nconst CLASS_NAME = toKebabCase(NAME);\r\n\r\nexport const YMenuPropOptions = {\r\n menuClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n openOnClickBase: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n closeCondition: {\r\n type: [Boolean, Function],\r\n default: undefined,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation' as const,\r\n scrollStrategy: 'reposition' as const,\r\n }),\r\n preventCloseBubble: Boolean as PropType<boolean>,\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YMenu = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YMenuPropOptions,\r\n ...pressPolyTransitionPropsOptions({\r\n transition: 'fade',\r\n }),\r\n },\r\n emits: ['update:modelValue', 'afterLeave', 'hoverContent'],\r\n slots: Object as SlotsType<{\r\n default: any;\r\n base: any;\r\n }>,\r\n expose: ['layer$', 'baseEl'],\r\n setup(props, { slots, emit, expose }) {\r\n const vm = getCurrentInstance();\r\n const layer$ = ref<typeof YLayer>();\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.menuClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-menu': true,\r\n };\r\n });\r\n\r\n const active = useModelDuplex(props);\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n const finish = computed(() => !!layer$.value?.finish);\r\n const { children, parent } = useActiveStack(\r\n layer$,\r\n active,\r\n toRef(props, 'preventCloseBubble'),\r\n );\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (\r\n !changeActive &&\r\n props.openOnHover &&\r\n !hovered.value &&\r\n children.value.length === 0\r\n ) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n emit('hoverContent', value);\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function onClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n if (!props.openOnClickBase) {\r\n return;\r\n }\r\n const currentActive = active.value;\r\n if (!props.disabled) {\r\n if (props.openOnHover && finish.value && currentActive) {\r\n return;\r\n }\r\n active.value = !currentActive;\r\n }\r\n }\r\n\r\n function onComplementClick(e: Event) {\r\n if (props.closeCondition === false) {\r\n return;\r\n }\r\n if (typeof props.closeCondition === 'function') {\r\n if (props.closeCondition(e) === false) {\r\n active.value = false;\r\n return;\r\n }\r\n }\r\n if (active.value) {\r\n if (children.value.length === 0) {\r\n active.value = false;\r\n }\r\n const parentContent = parent?.$el.value?.content$;\r\n const parentModal = parent?.$el.value?.modal;\r\n if (\r\n !(parentContent && !hasElementMouseEvent(e, parentContent)) &&\r\n !parentModal &&\r\n !props.preventCloseBubble\r\n ) {\r\n parent?.clear();\r\n }\r\n }\r\n }\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener('mouseenter', onMouseenter);\r\n el.addEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener('mouseenter', onMouseenter);\r\n el.removeEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n neo.addEventListener('click', onClick);\r\n } else if (old) {\r\n unbindHover(old);\r\n old.removeEventListener('click', onClick);\r\n }\r\n },\r\n {\r\n immediate: true,\r\n },\r\n );\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n return {\r\n ...boundClasses,\r\n };\r\n });\r\n\r\n const baseEl = computed(() => {\r\n return layer$.value?.baseEl;\r\n });\r\n\r\n expose({\r\n layer$,\r\n baseEl,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <YLayer\r\n ref={layer$}\r\n transition={props.transition}\r\n onClick:complement={onComplementClick}\r\n onAfterLeave={() => emit('afterLeave')}\r\n {...{\r\n ...chooseProps(props, YLayer.props),\r\n classes: classes.value,\r\n scrim: false,\r\n contentClasses: {\r\n 'y-menu__content': true,\r\n ...computedContentClasses.value,\r\n },\r\n }}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (slotProps: any) => {\r\n return <>{slots.default?.(slotProps) ?? ''}</>;\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n );\r\n });\r\n\r\n return {\r\n layer$,\r\n baseEl,\r\n classes,\r\n children,\r\n parent,\r\n active,\r\n hovered,\r\n };\r\n },\r\n});\r\n\r\nexport type YMenu = InstanceType<typeof YMenu>;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,16 +10,13 @@ export function useModelDuplex(props) {
|
|
|
10
10
|
const kebabProp = toKebabCase(prop);
|
|
11
11
|
const property = kebabProp === prop ? kebabToCamel(prop) : prop;
|
|
12
12
|
const txValue = ref(props[property] !== undefined ? props[property] : defaultValue);
|
|
13
|
-
function getProp() {
|
|
14
|
-
return props[property];
|
|
15
|
-
}
|
|
16
13
|
const isDefinedProp = computed(() => {
|
|
17
|
-
|
|
14
|
+
props[property];
|
|
18
15
|
const registeredProps = vm.vnode.props;
|
|
19
16
|
return !!registeredProps && (registeredProps.hasOwnProperty(kebabProp) || registeredProps.hasOwnProperty(property)) && (registeredProps.hasOwnProperty(`onUpdate:${kebabProp}`) || registeredProps.hasOwnProperty(`onUpdate:${property}`));
|
|
20
17
|
});
|
|
21
18
|
useToggleScope(() => !isDefinedProp.value, () => {
|
|
22
|
-
watch(() =>
|
|
19
|
+
watch(() => props[property], value => {
|
|
23
20
|
txValue.value = value;
|
|
24
21
|
});
|
|
25
22
|
});
|
|
@@ -29,7 +26,7 @@ export function useModelDuplex(props) {
|
|
|
29
26
|
},
|
|
30
27
|
set(value) {
|
|
31
28
|
const neo = setOut(value);
|
|
32
|
-
const current = toRaw(isDefinedProp.value ?
|
|
29
|
+
const current = toRaw(isDefinedProp.value ? props[property] : txValue.value);
|
|
33
30
|
if (current === neo || getIn(current) === value) {
|
|
34
31
|
return;
|
|
35
32
|
}
|
|
@@ -38,7 +35,7 @@ export function useModelDuplex(props) {
|
|
|
38
35
|
}
|
|
39
36
|
});
|
|
40
37
|
Object.defineProperty(model, 'rxValue', {
|
|
41
|
-
get: () => isDefinedProp.value ?
|
|
38
|
+
get: () => isDefinedProp.value ? props[property] : txValue.value
|
|
42
39
|
});
|
|
43
40
|
return model;
|
|
44
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communication.js","names":["computed","getCurrentInstance","ref","toRaw","watch","kebabToCamel","toKebabCase","useToggleScope","useModelDuplex","props","prop","arguments","length","undefined","defaultValue","getIn","v","setOut","vm","kebabProp","property","txValue","
|
|
1
|
+
{"version":3,"file":"communication.js","names":["computed","getCurrentInstance","ref","toRaw","watch","kebabToCamel","toKebabCase","useToggleScope","useModelDuplex","props","prop","arguments","length","undefined","defaultValue","getIn","v","setOut","vm","kebabProp","property","txValue","isDefinedProp","registeredProps","vnode","hasOwnProperty","value","model","get","set","neo","current","emit","Object","defineProperty","useProvided","provided","internal"],"sources":["../../src/composables/communication.ts"],"sourcesContent":["import { type Ref, computed, getCurrentInstance, ref, toRaw, watch } from 'vue';\n\nimport { kebabToCamel, toKebabCase } from '@/util/string';\n\nimport { useToggleScope } from './scope';\n\nexport function useModelDuplex(\n props: any,\n prop: string = 'modelValue',\n defaultValue?: any,\n getIn: (value?: any) => any = (v: any) => v,\n setOut: (value: any) => any = (v: any) => v,\n) {\n const vm = getCurrentInstance()!;\n const kebabProp = toKebabCase(prop);\n const property = kebabProp === prop ? kebabToCamel(prop) : prop;\n const txValue = ref(\n props[property] !== undefined ? props[property] : defaultValue,\n );\n\n const isDefinedProp = computed(() => {\n props[property];\n const registeredProps = vm.vnode.props;\n return (\n !!registeredProps &&\n (registeredProps.hasOwnProperty(kebabProp) ||\n registeredProps.hasOwnProperty(property)) &&\n (registeredProps.hasOwnProperty(`onUpdate:${kebabProp}`) ||\n registeredProps.hasOwnProperty(`onUpdate:${property}`))\n );\n });\n\n useToggleScope(\n () => !isDefinedProp.value,\n () => {\n watch(\n () => props[property],\n (value) => {\n txValue.value = value;\n },\n );\n },\n );\n\n const model = computed({\n get(): any {\n return getIn(isDefinedProp.value ? props[property] : txValue.value);\n },\n set(value) {\n const neo = setOut(value);\n const current = toRaw(\n isDefinedProp.value ? props[property] : txValue.value,\n );\n if (current === neo || getIn(current) === value) {\n return;\n }\n txValue.value = neo;\n vm?.emit(`update:${property}`, neo);\n },\n }) as any as Ref<any> & { readonly rxValue: any };\n\n Object.defineProperty(model, 'rxValue', {\n get: () => (isDefinedProp.value ? props[property] : txValue.value),\n });\n\n return model;\n}\n\nexport function useProvided<T>(props: any, prop: string, provided: Ref<T>) {\n const internal = useModelDuplex(props, prop, props[prop] ?? provided.value);\n\n watch(provided, (value) => {\n if (props[prop] == null) {\n internal.value = value;\n }\n });\n return internal;\n}\n"],"mappings":"AAAA,SAAmBA,QAAQ,EAAEC,kBAAkB,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAEvEC,YAAY,EAAEC,WAAW;AAAA,SAEzBC,cAAc;AAEvB,OAAO,SAASC,cAAcA,CAC5BC,KAAU,EAKV;EAAA,IAJAC,IAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,YAAY;EAAA,IAC3BG,YAAkB,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAAA,IAClBE,KAA2B,GAAAJ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAIK,CAAM,IAAKA,CAAC;EAAA,IAC3CC,MAA2B,GAAAN,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAIK,CAAM,IAAKA,CAAC;EAE3C,MAAME,EAAE,GAAGjB,kBAAkB,CAAC,CAAE;EAChC,MAAMkB,SAAS,GAAGb,WAAW,CAACI,IAAI,CAAC;EACnC,MAAMU,QAAQ,GAAGD,SAAS,KAAKT,IAAI,GAAGL,YAAY,CAACK,IAAI,CAAC,GAAGA,IAAI;EAC/D,MAAMW,OAAO,GAAGnB,GAAG,CACjBO,KAAK,CAACW,QAAQ,CAAC,KAAKP,SAAS,GAAGJ,KAAK,CAACW,QAAQ,CAAC,GAAGN,YACpD,CAAC;EAED,MAAMQ,aAAa,GAAGtB,QAAQ,CAAC,MAAM;IACnCS,KAAK,CAACW,QAAQ,CAAC;IACf,MAAMG,eAAe,GAAGL,EAAE,CAACM,KAAK,CAACf,KAAK;IACtC,OACE,CAAC,CAACc,eAAe,KAChBA,eAAe,CAACE,cAAc,CAACN,SAAS,CAAC,IACxCI,eAAe,CAACE,cAAc,CAACL,QAAQ,CAAC,CAAC,KAC1CG,eAAe,CAACE,cAAc,CAAC,YAAYN,SAAS,EAAE,CAAC,IACtDI,eAAe,CAACE,cAAc,CAAC,YAAYL,QAAQ,EAAE,CAAC,CAAC;EAE7D,CAAC,CAAC;EAEFb,cAAc,CACZ,MAAM,CAACe,aAAa,CAACI,KAAK,EAC1B,MAAM;IACJtB,KAAK,CACH,MAAMK,KAAK,CAACW,QAAQ,CAAC,EACpBM,KAAK,IAAK;MACTL,OAAO,CAACK,KAAK,GAAGA,KAAK;IACvB,CACF,CAAC;EACH,CACF,CAAC;EAED,MAAMC,KAAK,GAAG3B,QAAQ,CAAC;IACrB4B,GAAGA,CAAA,EAAQ;MACT,OAAOb,KAAK,CAACO,aAAa,CAACI,KAAK,GAAGjB,KAAK,CAACW,QAAQ,CAAC,GAAGC,OAAO,CAACK,KAAK,CAAC;IACrE,CAAC;IACDG,GAAGA,CAACH,KAAK,EAAE;MACT,MAAMI,GAAG,GAAGb,MAAM,CAACS,KAAK,CAAC;MACzB,MAAMK,OAAO,GAAG5B,KAAK,CACnBmB,aAAa,CAACI,KAAK,GAAGjB,KAAK,CAACW,QAAQ,CAAC,GAAGC,OAAO,CAACK,KAClD,CAAC;MACD,IAAIK,OAAO,KAAKD,GAAG,IAAIf,KAAK,CAACgB,OAAO,CAAC,KAAKL,KAAK,EAAE;QAC/C;MACF;MACAL,OAAO,CAACK,KAAK,GAAGI,GAAG;MACnBZ,EAAE,EAAEc,IAAI,CAAC,UAAUZ,QAAQ,EAAE,EAAEU,GAAG,CAAC;IACrC;EACF,CAAC,CAAgD;EAEjDG,MAAM,CAACC,cAAc,CAACP,KAAK,EAAE,SAAS,EAAE;IACtCC,GAAG,EAAEA,CAAA,KAAON,aAAa,CAACI,KAAK,GAAGjB,KAAK,CAACW,QAAQ,CAAC,GAAGC,OAAO,CAACK;EAC9D,CAAC,CAAC;EAEF,OAAOC,KAAK;AACd;AAEA,OAAO,SAASQ,WAAWA,CAAI1B,KAAU,EAAEC,IAAY,EAAE0B,QAAgB,EAAE;EACzE,MAAMC,QAAQ,GAAG7B,cAAc,CAACC,KAAK,EAAEC,IAAI,EAAED,KAAK,CAACC,IAAI,CAAC,IAAI0B,QAAQ,CAACV,KAAK,CAAC;EAE3EtB,KAAK,CAACgC,QAAQ,EAAGV,KAAK,IAAK;IACzB,IAAIjB,KAAK,CAACC,IAAI,CAAC,IAAI,IAAI,EAAE;MACvB2B,QAAQ,CAACX,KAAK,GAAGA,KAAK;IACxB;EACF,CAAC,CAAC;EACF,OAAOW,QAAQ;AACjB","ignoreList":[]}
|
|
@@ -25,12 +25,14 @@ export const pressValidationPropsOptions = propsFactory({
|
|
|
25
25
|
}, 'validation');
|
|
26
26
|
export function useValidation(props, name) {
|
|
27
27
|
let uid = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getUid();
|
|
28
|
-
const cid = computed(() => props.name ?? uid);
|
|
29
28
|
const model = useModelDuplex(props, 'modelValue');
|
|
30
|
-
const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);
|
|
31
29
|
const vm = getCurrentInstance();
|
|
32
30
|
const form = useForm();
|
|
33
31
|
const validating = ref(false);
|
|
32
|
+
const errorResult = ref();
|
|
33
|
+
const errors = ref([]);
|
|
34
|
+
const cid = computed(() => props.name ?? uid);
|
|
35
|
+
const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);
|
|
34
36
|
const validateOn = computed(() => {
|
|
35
37
|
let value = props.validateOn || 'input';
|
|
36
38
|
if (value === 'lazy') value = 'input,lazy';
|
|
@@ -42,8 +44,6 @@ export function useValidation(props, name) {
|
|
|
42
44
|
submit: onSet.has('submit')
|
|
43
45
|
};
|
|
44
46
|
});
|
|
45
|
-
const errorResult = ref();
|
|
46
|
-
const errors = ref([]);
|
|
47
47
|
const isReadonly = computed(() => props.readonly || form?.isReadonly.value);
|
|
48
48
|
const isDisabled = computed(() => props.disabled || form?.isDisabled.value);
|
|
49
49
|
const isLoading = computed(() => props.loading || form?.isLoading.value);
|
|
@@ -53,6 +53,15 @@ export function useValidation(props, name) {
|
|
|
53
53
|
const isSuccess = computed(() => {
|
|
54
54
|
return !isError.value && props.status === 'success';
|
|
55
55
|
});
|
|
56
|
+
watch([isError, errors], _ref => {
|
|
57
|
+
let [is, list] = _ref;
|
|
58
|
+
form?.update(cid.value, is, list);
|
|
59
|
+
}, {
|
|
60
|
+
immediate: true
|
|
61
|
+
});
|
|
62
|
+
watch(() => props.validators, () => {
|
|
63
|
+
resetValidation();
|
|
64
|
+
});
|
|
56
65
|
useToggleScope(() => validateOn.value.input, () => {
|
|
57
66
|
watch(validationModel, () => {
|
|
58
67
|
if (validationModel.value != null) {
|
|
@@ -65,6 +74,17 @@ export function useValidation(props, name) {
|
|
|
65
74
|
}
|
|
66
75
|
});
|
|
67
76
|
});
|
|
77
|
+
onBeforeUnmount(() => {
|
|
78
|
+
form?.unregister?.(cid.value);
|
|
79
|
+
});
|
|
80
|
+
onBeforeMount(() => {
|
|
81
|
+
form?.register({
|
|
82
|
+
id: cid.value,
|
|
83
|
+
vnode: vm.vnode,
|
|
84
|
+
resetValidation,
|
|
85
|
+
validate: invokeValidators
|
|
86
|
+
});
|
|
87
|
+
});
|
|
68
88
|
async function invokeValidators() {
|
|
69
89
|
const results = [];
|
|
70
90
|
validating.value = true;
|
|
@@ -101,17 +121,6 @@ export function useValidation(props, name) {
|
|
|
101
121
|
resetError();
|
|
102
122
|
}
|
|
103
123
|
}
|
|
104
|
-
onBeforeUnmount(() => {
|
|
105
|
-
form?.unregister?.(cid.value);
|
|
106
|
-
});
|
|
107
|
-
onBeforeMount(() => {
|
|
108
|
-
form?.register({
|
|
109
|
-
id: cid.value,
|
|
110
|
-
vnode: vm.vnode,
|
|
111
|
-
resetValidation,
|
|
112
|
-
validate: invokeValidators
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
124
|
return {
|
|
116
125
|
invokeValidators,
|
|
117
126
|
resetError,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","names":["computed","getCurrentInstance","onBeforeMount","onBeforeUnmount","ref","watch","getUid","propsFactory","useModelDuplex","useForm","useToggleScope","pressValidationPropsOptions","readonly","Boolean","disabled","status","type","String","validator","value","includes","helperText","validators","Array","validateOn","validationValue","maxErrors","Number","default","useValidation","props","name","uid","arguments","length","undefined","cid","model","validationModel","vm","form","validating","onSet","Set","split","blur","has","input","lazy","submit","errorResult","errors","isReadonly","isDisabled","isLoading","loading","isError","isSuccess","invokeValidators","focused","unwatch","val","results","isArray","handler","result","console","warn","push","resetError","resetValidation","unregister","register","id","vnode","validate"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["import {\r\n type PropType,\r\n computed,\r\n getCurrentInstance,\r\n onBeforeMount,\r\n onBeforeUnmount,\r\n ref,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { getUid, propsFactory } from '@/util/component';\r\n\r\nimport { useModelDuplex } from './communication';\r\nimport { useForm } from './form';\r\nimport { useToggleScope } from './scope';\r\n\r\nexport interface ValidationProps {\r\n validateOn: 'input' | 'blur' | 'lazy' | 'submit' | string;\r\n}\r\n\r\nexport const pressValidationPropsOptions = propsFactory(\r\n {\r\n readonly: Boolean as PropType<boolean>,\r\n disabled: Boolean as PropType<boolean>,\r\n status: {\r\n type: String as PropType<'success' | 'warning' | 'error' | undefined>,\r\n validator(value: string) {\r\n return ['success', 'warning', 'error'].includes(value);\r\n },\r\n },\r\n helperText: String,\r\n validators: Array as PropType<((v: any) => boolean | string)[] | string[]>,\r\n validateOn: {\r\n type: String as PropType<ValidationProps['validateOn']>,\r\n },\r\n validationValue: null,\r\n maxErrors: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 1,\r\n },\r\n },\r\n 'validation',\r\n);\r\n\r\nexport function useValidation(props: any, name: string, uid = getUid()) {\r\n const cid = computed(() => props.name ?? uid);\r\n const model = useModelDuplex(props, 'modelValue');\r\n const validationModel = computed(() =>\r\n props.validationValue === undefined ? model.value : props.validationValue,\r\n );\r\n const vm = getCurrentInstance()!;\r\n const form = useForm();\r\n const validating = ref(false);\r\n const validateOn = computed(() => {\r\n let value = props.validateOn || 'input';\r\n if (value === 'lazy') value = 'input,lazy';\r\n const onSet = new Set(value?.split(',') ?? []);\r\n\r\n return {\r\n blur: onSet.has('blur') || onSet.has('input'),\r\n input: onSet.has('input'),\r\n lazy: onSet.has('lazy'),\r\n submit: onSet.has('submit'),\r\n };\r\n });\r\n\r\n const errorResult = ref();\r\n const errors = ref<any[]>([]);\r\n\r\n const isReadonly = computed(() => props.readonly || form?.isReadonly.value);\r\n\r\n const isDisabled = computed(() => props.disabled || form?.isDisabled.value);\r\n\r\n const isLoading = computed(() => props.loading || form?.isLoading.value);\r\n\r\n const isError = computed(() => {\r\n return props.status === 'error' || errors.value.length > 0;\r\n });\r\n\r\n const isSuccess = computed(() => {\r\n return !isError.value && props.status === 'success';\r\n });\r\n\r\n useToggleScope(\r\n () => validateOn.value.input,\r\n () => {\r\n watch(validationModel, () => {\r\n if (validationModel.value != null) {\r\n invokeValidators();\r\n } else if (props.focused) {\r\n const unwatch = watch(\r\n () => props.focused,\r\n (val) => {\r\n if (!val) invokeValidators();\r\n\r\n unwatch();\r\n },\r\n );\r\n }\r\n });\r\n },\r\n );\r\n\r\n async function invokeValidators() {\r\n const results: any[] = [];\r\n validating.value = true;\r\n\r\n if (Array.isArray(props.validators)) {\r\n for (const validator of props.validators) {\r\n if (results.length >= +(props.maxErrors ?? 1)) {\r\n break;\r\n }\r\n\r\n const handler =\r\n typeof validator === 'function' ? validator : () => validator;\r\n const result = await handler(validationModel.value);\r\n\r\n if (result === true) {\r\n continue;\r\n }\r\n\r\n if (result !== false && typeof result !== 'string') {\r\n console.warn('Wrong validator return type');\r\n continue;\r\n }\r\n results.push(result || '');\r\n }\r\n }\r\n validating.value = false;\r\n errors.value = results;\r\n errorResult.value = results?.[0];\r\n\r\n return results;\r\n }\r\n\r\n function resetError() {\r\n errors.value = [];\r\n errorResult.value = undefined;\r\n }\r\n\r\n async function resetValidation() {\r\n if (!validateOn.value.lazy) {\r\n await invokeValidators();\r\n } else {\r\n resetError();\r\n }\r\n }\r\n\r\n onBeforeUnmount(() => {\r\n form?.unregister?.(cid.value);\r\n });\r\n\r\n onBeforeMount(() => {\r\n form?.register({\r\n id: cid.value,\r\n vnode: vm.vnode,\r\n resetValidation,\r\n validate: invokeValidators,\r\n });\r\n });\r\n\r\n return {\r\n invokeValidators,\r\n resetError,\r\n validating,\r\n validateOn,\r\n errorResult,\r\n errors,\r\n isReadonly,\r\n isDisabled,\r\n isLoading,\r\n isError,\r\n isSuccess,\r\n };\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"validation.js","names":["computed","getCurrentInstance","onBeforeMount","onBeforeUnmount","ref","watch","getUid","propsFactory","useModelDuplex","useForm","useToggleScope","pressValidationPropsOptions","readonly","Boolean","disabled","status","type","String","validator","value","includes","helperText","validators","Array","validateOn","validationValue","maxErrors","Number","default","useValidation","props","name","uid","arguments","length","undefined","model","vm","form","validating","errorResult","errors","cid","validationModel","onSet","Set","split","blur","has","input","lazy","submit","isReadonly","isDisabled","isLoading","loading","isError","isSuccess","_ref","is","list","update","immediate","resetValidation","invokeValidators","focused","unwatch","val","unregister","register","id","vnode","validate","results","isArray","handler","result","console","warn","push","resetError"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["import {\n type PropType,\n computed,\n getCurrentInstance,\n onBeforeMount,\n onBeforeUnmount,\n ref,\n watch,\n} from 'vue';\n\nimport { getUid, propsFactory } from '@/util/component';\n\nimport { useModelDuplex } from './communication';\nimport { useForm } from './form';\nimport { useToggleScope } from './scope';\n\nexport interface ValidationProps {\n validateOn: 'input' | 'blur' | 'lazy' | 'submit' | string;\n}\n\nexport const pressValidationPropsOptions = propsFactory(\n {\n readonly: Boolean as PropType<boolean>,\n disabled: Boolean as PropType<boolean>,\n status: {\n type: String as PropType<'success' | 'warning' | 'error' | undefined>,\n validator(value: string) {\n return ['success', 'warning', 'error'].includes(value);\n },\n },\n helperText: String,\n validators: Array as PropType<((v: any) => boolean | string)[] | string[]>,\n validateOn: {\n type: String as PropType<ValidationProps['validateOn']>,\n },\n validationValue: null,\n maxErrors: {\n type: [Number, String] as PropType<number | string>,\n default: 1,\n },\n },\n 'validation',\n);\n\nexport function useValidation(props: any, name: string, uid = getUid()) {\n const model = useModelDuplex(props, 'modelValue');\n const vm = getCurrentInstance()!;\n const form = useForm();\n const validating = ref(false);\n const errorResult = ref();\n const errors = ref<any[]>([]);\n\n const cid = computed(() => props.name ?? uid);\n\n const validationModel = computed(() =>\n props.validationValue === undefined ? model.value : props.validationValue,\n );\n\n const validateOn = computed(() => {\n let value = props.validateOn || 'input';\n if (value === 'lazy') value = 'input,lazy';\n const onSet = new Set(value?.split(',') ?? []);\n\n return {\n blur: onSet.has('blur') || onSet.has('input'),\n input: onSet.has('input'),\n lazy: onSet.has('lazy'),\n submit: onSet.has('submit'),\n };\n });\n\n const isReadonly = computed(() => props.readonly || form?.isReadonly.value);\n\n const isDisabled = computed(() => props.disabled || form?.isDisabled.value);\n\n const isLoading = computed(() => props.loading || form?.isLoading.value);\n\n const isError = computed(() => {\n return props.status === 'error' || errors.value.length > 0;\n });\n\n const isSuccess = computed(() => {\n return !isError.value && props.status === 'success';\n });\n\n watch(\n [isError, errors],\n ([is, list]) => {\n form?.update(cid.value, is, list);\n },\n { immediate: true },\n );\n\n watch(\n () => props.validators,\n () => {\n resetValidation();\n },\n );\n\n useToggleScope(\n () => validateOn.value.input,\n () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n invokeValidators();\n } else if (props.focused) {\n const unwatch = watch(\n () => props.focused,\n (val) => {\n if (!val) invokeValidators();\n\n unwatch();\n },\n );\n }\n });\n },\n );\n\n onBeforeUnmount(() => {\n form?.unregister?.(cid.value);\n });\n\n onBeforeMount(() => {\n form?.register({\n id: cid.value,\n vnode: vm.vnode,\n resetValidation,\n validate: invokeValidators,\n });\n });\n\n async function invokeValidators() {\n const results: any[] = [];\n validating.value = true;\n\n if (Array.isArray(props.validators)) {\n for (const validator of props.validators) {\n if (results.length >= +(props.maxErrors ?? 1)) {\n break;\n }\n\n const handler =\n typeof validator === 'function' ? validator : () => validator;\n const result = await handler(validationModel.value);\n\n if (result === true) {\n continue;\n }\n\n if (result !== false && typeof result !== 'string') {\n console.warn('Wrong validator return type');\n continue;\n }\n results.push(result || '');\n }\n }\n validating.value = false;\n errors.value = results;\n errorResult.value = results?.[0];\n\n return results;\n }\n\n function resetError() {\n errors.value = [];\n errorResult.value = undefined;\n }\n\n async function resetValidation() {\n if (!validateOn.value.lazy) {\n await invokeValidators();\n } else {\n resetError();\n }\n }\n\n return {\n invokeValidators,\n resetError,\n validating,\n validateOn,\n errorResult,\n errors,\n isReadonly,\n isDisabled,\n isLoading,\n isError,\n isSuccess,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -579,8 +579,8 @@ export declare const YDialog: import('vue').DefineComponent<{
|
|
|
579
579
|
getActiveLayers: () => import('vue').ComponentInternalInstance[];
|
|
580
580
|
coordination: import('vue').Ref<any, any>;
|
|
581
581
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
582
|
-
|
|
583
|
-
|
|
582
|
+
'update:modelValue': (value: boolean) => true;
|
|
583
|
+
'click:complement': (mouseEvent: MouseEvent) => true;
|
|
584
584
|
afterLeave: () => true;
|
|
585
585
|
afterEnter: () => true;
|
|
586
586
|
}, string> | undefined, import('vue').DefineComponent<{
|
|
@@ -708,8 +708,8 @@ export declare const YDialog: import('vue').DefineComponent<{
|
|
|
708
708
|
getActiveLayers: () => import('vue').ComponentInternalInstance[];
|
|
709
709
|
coordination: import('vue').Ref<any, any>;
|
|
710
710
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
711
|
-
|
|
712
|
-
|
|
711
|
+
'update:modelValue': (value: boolean) => true;
|
|
712
|
+
'click:complement': (mouseEvent: MouseEvent) => true;
|
|
713
713
|
afterLeave: () => true;
|
|
714
714
|
afterEnter: () => true;
|
|
715
715
|
}, string> | undefined>;
|
|
@@ -431,8 +431,8 @@ export declare const YLayer: import('vue').DefineComponent<{
|
|
|
431
431
|
getActiveLayers: () => ComponentInternalInstance[];
|
|
432
432
|
coordination: import('vue').Ref<any, any>;
|
|
433
433
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
434
|
-
|
|
435
|
-
|
|
434
|
+
'update:modelValue': (value: boolean) => true;
|
|
435
|
+
'click:complement': (mouseEvent: MouseEvent) => true;
|
|
436
436
|
afterLeave: () => true;
|
|
437
437
|
afterEnter: () => true;
|
|
438
438
|
}, string>;
|
|
@@ -375,8 +375,8 @@ export declare const YMenu: import('vue').DefineComponent<{
|
|
|
375
375
|
getActiveLayers: () => import('vue').ComponentInternalInstance[];
|
|
376
376
|
coordination: import('vue').Ref<any, any>;
|
|
377
377
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
378
|
-
|
|
379
|
-
|
|
378
|
+
'update:modelValue': (value: boolean) => true;
|
|
379
|
+
'click:complement': (mouseEvent: MouseEvent) => true;
|
|
380
380
|
afterLeave: () => true;
|
|
381
381
|
afterEnter: () => true;
|
|
382
382
|
}, string> | undefined, import('vue').DefineComponent<{
|
|
@@ -504,8 +504,8 @@ export declare const YMenu: import('vue').DefineComponent<{
|
|
|
504
504
|
getActiveLayers: () => import('vue').ComponentInternalInstance[];
|
|
505
505
|
coordination: import('vue').Ref<any, any>;
|
|
506
506
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
507
|
-
|
|
508
|
-
|
|
507
|
+
'update:modelValue': (value: boolean) => true;
|
|
508
|
+
'click:complement': (mouseEvent: MouseEvent) => true;
|
|
509
509
|
afterLeave: () => true;
|
|
510
510
|
afterEnter: () => true;
|
|
511
511
|
}, string> | undefined>;
|