yuyeon 0.3.7 → 0.3.8-beta.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/yuyeon.js +1 -1
- package/dist/yuyeon.umd.cjs +1 -1
- package/lib/components/dialog/YDialog.scss +48 -48
- package/lib/components/layer/YLayer.js.map +1 -1
- package/lib/components/pagination/YPagination.js.map +1 -1
- package/lib/components/snackbar/YSnackbar.js +5 -5
- package/lib/components/snackbar/YSnackbar.js.map +1 -1
- package/lib/composables/communication.js.map +1 -1
- package/lib/composables/validation.js +1 -1
- package/lib/composables/validation.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
.y-dialog {
|
|
2
|
-
justify-content: center;
|
|
3
|
-
align-items: center;
|
|
4
|
-
|
|
5
|
-
.y-layer {
|
|
6
|
-
&__content > div {
|
|
7
|
-
position: relative;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
&.y-layer--finish {
|
|
12
|
-
.y-layer__content > .y-card > .y-card__footer {
|
|
13
|
-
position: relative;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
&--maximized {
|
|
18
|
-
backdrop-filter: none;
|
|
19
|
-
align-items: unset;
|
|
20
|
-
justify-content: unset;
|
|
21
|
-
|
|
22
|
-
.y-layer {
|
|
23
|
-
&__content {
|
|
24
|
-
contain: none;
|
|
25
|
-
position: relative;
|
|
26
|
-
width: 100%;
|
|
27
|
-
max-height: 100dvh;
|
|
28
|
-
background: transparent;
|
|
29
|
-
pointer-events: none;
|
|
30
|
-
overflow-y: scroll;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
&__content > div {
|
|
34
|
-
border-radius: 0;
|
|
35
|
-
width: 100%;
|
|
36
|
-
min-height: 100%;
|
|
37
|
-
pointer-events: auto;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.y-dialog--prevent-scroll {
|
|
44
|
-
overflow: hidden !important;
|
|
45
|
-
}
|
|
46
|
-
.y-dialog--virtual-scroll {
|
|
47
|
-
width: 100%;
|
|
48
|
-
}
|
|
1
|
+
.y-dialog {
|
|
2
|
+
justify-content: center;
|
|
3
|
+
align-items: center;
|
|
4
|
+
|
|
5
|
+
.y-layer {
|
|
6
|
+
&__content > div {
|
|
7
|
+
position: relative;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
&.y-layer--finish {
|
|
12
|
+
.y-layer__content > .y-card > .y-card__footer {
|
|
13
|
+
position: relative;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&--maximized {
|
|
18
|
+
backdrop-filter: none;
|
|
19
|
+
align-items: unset;
|
|
20
|
+
justify-content: unset;
|
|
21
|
+
|
|
22
|
+
.y-layer {
|
|
23
|
+
&__content {
|
|
24
|
+
contain: none;
|
|
25
|
+
position: relative;
|
|
26
|
+
width: 100%;
|
|
27
|
+
max-height: 100dvh;
|
|
28
|
+
background: transparent;
|
|
29
|
+
pointer-events: none;
|
|
30
|
+
overflow-y: scroll;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
&__content > div {
|
|
34
|
+
border-radius: 0;
|
|
35
|
+
width: 100%;
|
|
36
|
+
min-height: 100%;
|
|
37
|
+
pointer-events: auto;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.y-dialog--prevent-scroll {
|
|
44
|
+
overflow: hidden !important;
|
|
45
|
+
}
|
|
46
|
+
.y-dialog--virtual-scroll {
|
|
47
|
+
width: 100%;
|
|
48
|
+
}
|
|
@@ -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","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":"AACA,SACEA,QAAQ,EACRC,kBAAkB,EAClBC,UAAU,EACVC,QAAQ,EACRC,GAAG,EACHC,UAAU,EACVC,QAAQ,EACRC,UAAU,EACVC,KAAK,EAAAC,QAAA,IAAAC,SAAA,EAAAC,WAAA,IAAAC,YAAA,EAAAC,KAAA,IAAAC,MAAA,EAAAC,gBAAA,IAAAC,iBAAA,EAAAd,UAAA,IAAAe,WAAA,EAAAC,cAAA,IAAAC,eAAA,QACA,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,oBAAoB,EAAEC,aAAa;AAAA,SAE1CC,0BAA0B,EAC1BC,YAAY;AAAA,SAELC,aAAa;AAAA,SACbC,sBAAsB,EAAEC,aAAa;AAAA,SACrCC,OAAO;AAAA,SAEdC,cAAc,EACdC,+BAA+B,EAC/BC,iBAAiB;AAAA,SAGjBC,eAAe;AAAA,SAGRC,WAAW,EAAEC,eAAe,EAAEC,YAAY;AAAA,SAE1CC,qBAAqB,EAAEC,OAAO;AAAA,SAC9BC,wBAAwB,EAAEC,UAAU;AAAA,SAE3CC,wBAAwB,EACxBC,mBAAmB;AAGrB;AAAuB,SAEdC,IAAI;AAEb,OAAO,MAAMC,gBAAgB,GAAGR,YAAY,CAC1C;EACES,UAAU,EAAE;IACVC,IAAI,EAAEC;EACR,CAAC;EACDC,KAAK,EAAE;IACLF,IAAI,EAAEC;EACR,CAAC;EACDE,YAAY,EAAE;IACZH,IAAI,EAAEI;EACR,CAAC;EACDC,KAAK,EAAE;IACLL,IAAI,EAAEC;EACR,CAAC;EACDK,OAAO,EAAE;IACPN,IAAI,EAAE,CAACO,KAAK,EAAEC,MAAM,EAAEC,MAAM;EAG9B,CAAC;EACDC,cAAc,EAAE;IACdV,IAAI,EAAE,CAACO,KAAK,EAAEC,MAAM,EAAEC,MAAM;EAG9B,CAAC;EACDE,eAAe,EAAE;IACfX,IAAI,EAAEC;EACR,CAAC;EACDW,aAAa,EAAE;IACbZ,IAAI,EAAES,MAAiC;IACvCI,OAAO,EAAEA,CAAA,KAAM,CAAC;EAClB,CAAC;EACDC,QAAQ,EAAE;IACRd,IAAI,EAAEC,OAA4B;IAClCY,OAAO,EAAE;EACX,CAAC;EACDE,SAAS,EAAE;IACTf,IAAI,EAAEC;EACR,CAAC;EACDe,WAAW,EAAE;IACXhB,IAAI,EAAEC,OAA4B;IAClCY,OAAO,EAAE;EACX,CAAC;EACDI,SAAS,EAAE;IACTjB,IAAI,EAAEI,MAA0B;IAChCS,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAE;IACVlB,IAAI,EAAEI,MAA0B;IAChCS,OAAO,EAAE;EACX,CAAC;EACDM,MAAM,EAAE;IACNnB,IAAI,EAAE,CAACI,MAAM,EAAEI,MAAM,CAA8B;IACnDK,OAAO,EAAE;EACX,CAAC;EACDO,SAAS,EAAEnB,OAAO;EAClBoB,UAAU,EAAE,CAACb,MAAM,EAAEC,MAAM,CAA+B;EAC1D,GAAG5B,sBAAsB,CAAC,CAAC;EAC3B,GAAGI,+BAA+B,CAAC,CAAC;EACpC,GAAGM,qBAAqB,CAAC,CAAC;EAC1B,GAAGE,wBAAwB,CAAC,CAAC;EAC7B,GAAGjB,oBAAoB,CAAC,CAAC;EACzB,GAAGmB,wBAAwB,CAAC,CAAC;EAC7B,GAAGjB,0BAA0B,CAAC;AAChC,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAM4C,MAAM,GAAGjC,eAAe,CAAC;EACpCkC,IAAI,EAAE,QAAQ;EACdC,YAAY,EAAE,KAAK;EACnBC,UAAU,EAAE;IACVzC;EACF,CAAC;EACD0C,UAAU,EAAE;IACVvC;EACF,CAAC;EACDwC,KAAK,EAAE;IACLC,KAAK,EAAE3B,OAA4B;IACnC,GAAGH,gBAAgB,CAAC;EACtB,CAAC;EACD+B,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAc,IAAK,IAAI;IAC7C,kBAAkB,EAAGC,UAAsB,IAAK,IAAI;IACpDC,UAAU,EAAEA,CAAA,KAAM,IAAI;IACtBC,UAAU,EAAEA,CAAA,KAAM;EACpB,CAAC;EACDC,KAAK,EAAEzB,MAGL;EACF0B,KAAKA,CAACR,KAAK,EAAAS,IAAA,EAAkC;IAAA,IAAhC;MAAEC,IAAI;MAAEC,MAAM;MAAEC,KAAK;MAAEL;IAAM,CAAC,GAAAE,IAAA;IACzC,MAAMI,EAAE,GAAGrF,kBAAkB,CAAC,CAAC;IAC/B,MAAMsF,MAAM,GAAGnF,GAAG,CAAc,CAAC;IACjC,MAAMoF,QAAQ,GAAGpF,GAAG,CAAc,CAAC;IACnC,MAAMqF,KAAK,GAAGrF,GAAG,CAAc,CAAC;IAChC,MAAMsF,KAAK,GAAGtE,cAAc,CAACqD,KAAK,CAAC;IACnC,MAAMkB,MAAM,GAAG3F,QAAQ,CAAC;MACtB4F,GAAG,EAAEA,CAAA,KAAe;QAClB,OAAO,CAAC,CAACF,KAAK,CAACd,KAAK;MACtB,CAAC;MACDiB,GAAG,EAAGC,CAAU,IAAK;QACnB,IAAI,EAAEA,CAAC,IAAIrB,KAAK,CAACb,QAAQ,CAAC,EAAE8B,KAAK,CAACd,KAAK,GAAGkB,CAAC;MAC7C;IACF,CAAC,CAAC;IACF;IACA,MAAM;MAAEC,IAAI;MAAEC,KAAK;MAAEC,MAAM;MAAEC,QAAQ;MAAEC;IAAe,CAAC,GAAG7D,OAAO,CAACmC,KAAK,CAAC;IACxE,MAAM;MAAE2B;IAAc,CAAC,GAAG5D,UAAU,CAACiC,KAAK,EAAEkB,MAAM,CAAC;IACnD,MAAM;MAAEU;IAAa,CAAC,GAAGzE,aAAa,CAAC6C,KAAK,CAAC;IAC7C,MAAM;MAAEN,UAAU;MAAEmC,eAAe;MAAEC;IAAgB,CAAC,GACpD7E,aAAa,CAAC+C,KAAK,CAAC;IACtB,MAAM;MAAE+B;IAAwB,CAAC,GAAGxE,iBAAiB,CAACyC,KAAK,CAAC;IAC5D,MAAM;MAAEgC;IAAgB,CAAC,GAAGhF,YAAY,CAACgD,KAAK,CAAC;IAE/C,MAAM;MAAEiC,SAAS;MAAEC;IAAc,CAAC,GAAG9E,OAAO,CAACrB,KAAK,CAACiE,KAAK,EAAE,OAAO,CAAC,EAAEkB,MAAM,CAAC;IAC3E;IACA,MAAMiB,MAAM,GAAGvG,UAAU,CAAC,KAAK,CAAC;IAChC,MAAMwG,OAAO,GAAGzG,GAAG,CAAC,KAAK,CAAC;IAC1B,MAAM0G,OAAO,GAAG1G,GAAG,CAAC,KAAK,CAAC;IAC1B,MAAMwD,QAAQ,GAAGpD,KAAK,CAACiE,KAAK,EAAE,UAAU,CAAC;IACzC,MAAMZ,SAAS,GAAGrD,KAAK,CAACiE,KAAK,EAAE,WAAW,CAAC;IAE3C,MAAMsC,QAAQ,GAAG/G,QAAQ,CACvB,MAAM,CAAC4D,QAAQ,CAACgB,KAAK,KAAK8B,SAAS,CAAC9B,KAAK,IAAIe,MAAM,CAACf,KAAK,CAC3D,CAAC;IAED,MAAM;MAAEoC,YAAY;MAAEC,gBAAgB;MAAEC;IAAiB,CAAC,GAAG3F,aAAa,CACxEkD,KAAK,EACL;MACE0C,SAAS,EAAE3B,QAAQ;MACnBO,IAAI;MACJJ;IACF,CACF,CAAC;IACDjD,mBAAmB,CAAC+B,KAAK,EAAE;MACzB2C,IAAI,EAAE3B,KAAK;MACX0B,SAAS,EAAE3B,QAAQ;MACnBG,MAAM;MACNM,MAAM,EAAEF,IAAI;MACZmB;IACF,CAAC,CAAC;IAEF,SAASG,sBAAsBA,CAACxC,UAAsB,EAAE;MACtDM,IAAI,CAAC,kBAAkB,EAAEN,UAAU,CAAC;MACpC,IAAI,CAACJ,KAAK,CAACC,KAAK,EAAE;QAChB,IACEa,MAAM,CAACX,KAAK,KAAK,IAAI,IACrBW,MAAM,CAACX,KAAK,KAAKC,UAAU,CAACyC,MAAM,IAClC7C,KAAK,CAAChB,eAAe,EACrB;UACAkC,MAAM,CAACf,KAAK,GAAG,KAAK;QACtB;MACF,CAAC,MAAM;QACL;MAAA;IAEJ;IAEA,SAAS2C,gBAAgBA,CAAA,EAAY;MACnC,OACE,CAAC,CAAC9C,KAAK,CAACX,WAAW,IAAKW,KAAK,CAACX,WAAW,IAAI,CAAC+C,OAAO,CAACjC,KAAM,KAC5De,MAAM,CAACf,KAAK,IACZgC,MAAM,CAAChC,KAAK,CACZ,CAAC;IACL;IAEA,MAAM4C,qBAAqB,GAAGrH,QAAQ,CAAgC;MACpEsH,OAAO,EAAEJ,sBAAsB;MAC/BK,SAAS,EAAEH,gBAAgB;MAC3BI,OAAO,EAAEA,CAAA,KAAM,CAAC1B,MAAM,CAACrB,KAAK;IAC9B,CAAC,CAAC;IAEF,SAASgD,YAAYA,CAAA,EAAG;MACtBhB,MAAM,CAAChC,KAAK,GAAG,IAAI;MACnBO,IAAI,CAAC,YAAY,CAAC;IACpB;IAEA,SAAS0C,YAAYA,CAAA,EAAG;MACtBlB,aAAa,CAAC,CAAC;MACfC,MAAM,CAAChC,KAAK,GAAG,KAAK;MACpBO,IAAI,CAAC,YAAY,CAAC;IACpB;IAEA,SAAS2C,YAAYA,CAAA,EAAG;MACtB,IAAIrD,KAAK,CAAChB,eAAe,EAAE;QACzBkC,MAAM,CAACf,KAAK,GAAG,KAAK;MACtB;IACF;IAEA,SAASmD,YAAYA,CAACC,KAAY,EAAE;MAClCnB,OAAO,CAACjC,KAAK,GAAG,IAAI;IACtB;IAEA,SAASqD,YAAYA,CAACD,KAAY,EAAE;MAClCnB,OAAO,CAACjC,KAAK,GAAG,KAAK;IACvB;IAEA,MAAMsD,aAAa,GAAGlI,QAAQ,CAAC,MAAM;MACnC,OAAO;QACLiE,MAAM,EAAE,CAACQ,KAAK,CAACR,MAAM,IAAI,MAAM,EAAEkE,QAAQ,CAAC;MAC5C,CAAC;IACH,CAAC,CAAC;IAEF,MAAMC,aAAa,GAAGpI,QAAQ,CAA0B,MAAM;MAC5D,MAAM;QAAEoD;MAAQ,CAAC,GAAGqB,KAAK;MACzB,MAAM4D,YAAY,GAAGnG,WAAW,CAACkB,OAAO,CAAC;MACzC,OAAO;QACL,GAAGiF,YAAY;QACf,iBAAiB,EAAE,CAAC,CAAC1C,MAAM,CAACf;MAC9B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM0D,sBAAsB,GAAGtI,QAAQ,CAA0B,MAAM;MACrE,MAAMqI,YAAY,GAAGnG,WAAW,CAACuC,KAAK,CAACjB,cAAc,CAAC;MACtD,MAAM;QAAE+E,IAAI;QAAEC;MAAM,CAAC,GAAGxB,YAAY,CAACpC,KAAK;MAC1C,OAAO;QACL,GAAGyD,YAAY;QACf,CAAC,iBAAiBE,IAAI,EAAE,GAAG,CAAC,CAACA,IAAI;QACjC,CAAC,kBAAkBC,KAAK,EAAE,GAAG,CAAC,CAACA;MACjC,CAAC;IACH,CAAC,CAAC;IAEF,SAASC,KAAKA,CAAA,EAAG;MACf9C,MAAM,CAACf,KAAK,GAAG,KAAK;IACtB;IAEAQ,MAAM,CAAC;MACLG,MAAM;MACNS,KAAK;MACLR,QAAQ,EAAExF,QAAQ,CAAC,MAAMwF,QAAQ,CAACZ,KAAK,CAAC;MACxCqB,MAAM;MACNN,MAAM;MACNgB,aAAa;MACbO,gBAAgB;MAChBL,OAAO;MACPD,MAAM;MACNlC,KAAK,EAAE1E,QAAQ,CAAC,MAAMyE,KAAK,CAACC,KAAK,CAAC;MAClC6B,eAAe;MACfmC,IAAI,EAAGC,KAAgC,IAAK;QAC1C,OAAOA,KAAK,KAAKrD,EAAE;MACrB,CAAC;MACD0B;IACF,CAAC,CAAC;IAEF3F,SAAS,CAAC,MAAM;MACd,MAAMuH,QAAQ,GAAG5D,KAAK,CAACe,IAAI,GAAG;QAC5BJ,MAAM,EAAEA,MAAM,CAACf,KAAK;QACpBH,KAAK,EAAEvE,UAAU,CAAC;UAChBE,GAAG,EAAE4F,KAAK;UACV6C,KAAK,EAAE;YACL,cAAc,EAAE,IAAI;YACpB,sBAAsB,EAAElD,MAAM,CAACf;UACjC,CAAC;UACD,IAAIH,KAAK,CAACqE,SAAS,IAAI,CAAC,CAAC;QAC3B,CAAC;MACH,CAAC,CAAC;MACF5C,QAAQ,CAACtB,KAAK,GAAGgE,QAAQ;MACzB,OAAAhI,YAAA,CAAAF,SAAA,SAEKkI,QAAQ,EAAAhI,YAAA,CAAAN,QAAA;QAAA,YACW,CAAC6D,UAAU,CAACS,KAAK;QAAA,MAAMT,UAAU,CAACS;MAAK;QAAAjB,OAAA,EAAAA,CAAA,MACxDoD,QAAQ,CAACnC,KAAK,IAAAhE,YAAA,QAAAK,WAAA;UAAA,SAEJ,CACL;YACE,SAAS,EAAE,IAAI;YACf,iBAAiB,EAAE2F,MAAM,CAAChC,KAAK;YAC/B,oBAAoB,EAAEH,KAAK,CAACP,SAAS;YACrC,GAAGkE,aAAa,CAACxD;UACnB,CAAC,EACDyB,YAAY,CAACzB,KAAK,CACnB;UAAA,gBACamD,YAAY;UAAA,gBACZE,YAAY;UAAA,SACnBC,aAAa,CAACtD,KAAK;UAAA,OACrBa;QAAK,GACNJ,KAAK,IAAAzE,YAAA,CAAAL,UAAA;UAAA;UAAA;QAAA;UAAAoD,OAAA,EAAAA,CAAA,MAGNgC,MAAM,CAACf,KAAK,IAAIH,KAAK,CAACzB,KAAK,IAC1B;UACA;UAAApC,YAAA;YAAA;YAAA,SAGS;cAAE,yBAAyB,EAAE6D,KAAK,CAACxB;YAAa,CAAC;YAAA,WAC/C6E,YAAY;YAAA,aACVnF,IAAI,CAAC,CAAC;YAAA,WACRA,IAAI,CAAC,CAAC;YAAA;UAAA,QAGlB;QAAA,IAAA/B,YAAA,CAAAkB,cAAA,EAAAb,WAAA;UAAA,gBAGa2G,YAAY;UAAA,gBACZC,YAAY;UAAA;QAAA,GAEtBrB,uBAAuB,CAAC5B,KAAK;UAAAjB,OAAA,EAAAA,CAAA,MAAAxC,eAAA,CAAAP,YAAA,QAAAK,WAAA;YAAA,SAKxB;cACL,kBAAkB,EAAE,IAAI;cACxB,GAAGqH,sBAAsB,CAAC1D;YAC5B,CAAC;YAAA,SACM,CACL;cACE,GAAG6B,eAAe,CAAC7B,KAAK;cACxB,GAAGqC,gBAAgB,CAACrC,KAAK;cACzB,GAAGH,KAAK,CAACf;YACX,CAAC;UACF,GACG0C,aAAa,CAACxB,KAAK;YAAA,OAClBY;UAAQ,KAEZR,KAAK,CAACrB,OAAO,GAAG;YAAEgC,MAAM,EAAEA,MAAM,CAACf,KAAK;YAAE6D;UAAM,CAAC,CAAC,MAAA3H,MAAA,EAhBzC6E,MAAM,CAACf,KAAK,IAAA5D,iBAAA,sBACA;YAAE,GAAGwG;UAAsB,CAAC;QAAA,IAmBvD;MAAA;IAIT,CAAC,CAAC;IAEF,OAAO;MACLA,qBAAqB;MACrBrD,UAAU;MACVwB,MAAM;MACNiB,MAAM;MACNG,QAAQ;MACRL,SAAS;MACTC,aAAa,EAAEA,aAA2B;MAC1CpB,MAAM;MACNC,QAAQ;MACRO,IAAI;MACJC,KAAK;MACLC,MAAM;MACNE,cAAc;MACdK,uBAAuB;MACvBS,gBAAgB;MAChBX,eAAe;MACfC,eAAe;MACfS;IACF,CAAC;EACH;AACF,CAAC,CAAC","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';\r\nimport {\r\n computed,\r\n getCurrentInstance,\r\n mergeProps,\r\n reactive,\r\n ref,\r\n shallowRef,\r\n Teleport,\r\n Transition,\r\n toRef,\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 pressDimensionPropsOptions,\r\n useDimension,\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 PolyTransition,\r\n pressPolyTransitionPropsOptions,\r\n usePolyTransition,\r\n} from '@/composables/transition';\r\nimport {\r\n ComplementClick,\r\n type 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 pressScrollStrategyProps,\r\n useScrollStrategies,\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 {\r\n modelValue: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n scrim: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n scrimOpacity: {\r\n type: Number as PropType<number>,\r\n },\r\n eager: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n classes: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n contentClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n closeClickScrim: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n contentStyles: {\r\n type: Object as PropType<CssProperties>,\r\n default: () => {},\r\n },\r\n disabled: {\r\n type: Boolean as PropType<boolean>,\r\n default: false,\r\n },\r\n maximized: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n openOnHover: {\r\n type: Boolean as PropType<boolean>,\r\n default: false,\r\n },\r\n openDelay: {\r\n type: Number as PropType<number>,\r\n default: 200,\r\n },\r\n closeDelay: {\r\n type: Number as PropType<number>,\r\n default: 200,\r\n },\r\n zIndex: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 2000,\r\n },\r\n contained: Boolean,\r\n layerGroup: [String, Object] as PropType<string | Element>,\r\n ...pressThemePropsOptions(),\r\n ...pressPolyTransitionPropsOptions(),\r\n ...pressBasePropsOptions(),\r\n ...pressContentPropsOptions(),\r\n ...pressCoordinateProps(),\r\n ...pressScrollStrategyProps(),\r\n ...pressDimensionPropsOptions(),\r\n },\r\n 'YLayer',\r\n);\r\n\r\nexport const YLayer = defineComponent({\r\n name: 'YLayer',\r\n inheritAttrs: false,\r\n components: {\r\n PolyTransition,\r\n },\r\n directives: {\r\n ComplementClick,\r\n },\r\n props: {\r\n modal: Boolean as PropType<boolean>,\r\n ...pressYLayerProps(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: boolean) => true,\r\n 'click:complement': (mouseEvent: MouseEvent) => true,\r\n afterLeave: () => true,\r\n afterEnter: () => true,\r\n },\r\n slots: Object as SlotsType<{\r\n base: any;\r\n default: any;\r\n }>,\r\n setup(props, { emit, expose, attrs, slots }) {\r\n const vm = getCurrentInstance();\r\n const scrim$ = ref<HTMLElement>();\r\n const content$ = ref<HTMLElement>();\r\n const root$ = ref<HTMLElement>();\r\n const model = useModelDuplex(props);\r\n const active = computed({\r\n get: (): boolean => {\r\n return !!model.value;\r\n },\r\n set: (v: boolean) => {\r\n if (!(v && props.disabled)) model.value = v;\r\n },\r\n });\r\n // Frags\r\n const { base, base$, baseEl, baseSlot, baseFromSlotEl } = useBase(props);\r\n const { contentEvents } = useContent(props, active);\r\n const { themeClasses } = useLocalTheme(props);\r\n const { layerGroup, layerGroupState, getActiveLayers } =\r\n useLayerGroup(props);\r\n const { polyTransitionBindProps } = usePolyTransition(props);\r\n const { dimensionStyles } = useDimension(props);\r\n\r\n const { lazyValue, onAfterUpdate } = useLazy(toRef(props, 'eager'), active);\r\n // States\r\n const finish = shallowRef(false);\r\n const hovered = ref(false);\r\n const focused = ref(false);\r\n const disabled = toRef(props, 'disabled');\r\n const maximized = toRef(props, 'maximized');\r\n\r\n const rendered = computed<boolean>(\r\n () => !disabled.value && (lazyValue.value || active.value),\r\n );\r\n\r\n const { coordination, coordinateStyles, updateCoordinate } = useCoordinate(\r\n props,\r\n {\r\n contentEl: content$,\r\n base,\r\n active,\r\n },\r\n );\r\n useScrollStrategies(props, {\r\n root: root$,\r\n contentEl: content$,\r\n active,\r\n baseEl: base,\r\n updateCoordinate,\r\n });\r\n\r\n function onClickComplementLayer(mouseEvent: MouseEvent) {\r\n emit('click:complement', mouseEvent);\r\n if (!props.modal) {\r\n if (\r\n scrim$.value !== null &&\r\n scrim$.value === mouseEvent.target &&\r\n props.closeClickScrim\r\n ) {\r\n active.value = false;\r\n }\r\n } else {\r\n // TODO: shrug ani\r\n }\r\n }\r\n\r\n function closeConditional(): boolean {\r\n return (\r\n (!props.openOnHover || (props.openOnHover && !hovered.value)) &&\r\n active.value &&\r\n finish.value\r\n ); // TODO: && groupTopLevel.value;\r\n }\r\n\r\n const complementClickOption = reactive<ComplementClickBindingOptions>({\r\n handler: onClickComplementLayer,\r\n determine: closeConditional,\r\n include: () => [baseEl.value],\r\n });\r\n\r\n function onAfterEnter() {\r\n finish.value = true;\r\n emit('afterEnter');\r\n }\r\n\r\n function onAfterLeave() {\r\n onAfterUpdate();\r\n finish.value = false;\r\n emit('afterLeave');\r\n }\r\n\r\n function onClickScrim() {\r\n if (props.closeClickScrim) {\r\n active.value = false;\r\n }\r\n }\r\n\r\n function onMouseenter(event: Event) {\r\n hovered.value = true;\r\n }\r\n\r\n function onMouseleave(event: Event) {\r\n hovered.value = false;\r\n }\r\n\r\n const computedStyle = computed(() => {\r\n return {\r\n zIndex: (props.zIndex ?? '2000').toString(),\r\n };\r\n });\r\n\r\n const computedClass = computed<Record<string, boolean>>(() => {\r\n const { classes } = props;\r\n const boundClasses = bindClasses(classes);\r\n return {\r\n ...boundClasses,\r\n 'y-layer--active': !!active.value,\r\n };\r\n });\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n const { side, align } = coordination.value;\r\n return {\r\n ...boundClasses,\r\n [`y-layer--side-${side}`]: !!side,\r\n [`y-layer--align-${align}`]: !!align,\r\n };\r\n });\r\n\r\n function close() {\r\n active.value = false;\r\n }\r\n\r\n expose({\r\n scrim$,\r\n base$,\r\n content$: computed(() => content$.value),\r\n baseEl,\r\n active,\r\n onAfterUpdate,\r\n updateCoordinate,\r\n hovered,\r\n finish,\r\n modal: computed(() => props.modal),\r\n getActiveLayers,\r\n isMe: (vnode: ComponentInternalInstance) => {\r\n return vnode === vm;\r\n },\r\n coordination,\r\n });\r\n\r\n useRender(() => {\r\n const slotBase = slots.base?.({\r\n active: active.value,\r\n props: mergeProps({\r\n ref: base$,\r\n class: {\r\n 'y-layer-base': true,\r\n 'y-layer-base--active': active.value,\r\n },\r\n ...(props.baseProps ?? {}),\r\n }),\r\n });\r\n baseSlot.value = slotBase;\r\n return (\r\n <>\r\n {slotBase}\r\n <Teleport disabled={!layerGroup.value} to={layerGroup.value as any}>\r\n {rendered.value && (\r\n <div\r\n class={[\r\n {\r\n 'y-layer': true,\r\n 'y-layer--finish': finish.value,\r\n 'y-layer--contained': props.contained,\r\n ...computedClass.value,\r\n },\r\n themeClasses.value,\r\n ]}\r\n onMouseenter={onMouseenter}\r\n onMouseleave={onMouseleave}\r\n style={computedStyle.value}\r\n ref={root$}\r\n {...attrs}\r\n >\r\n <Transition name=\"fade\" appear>\r\n {active.value && props.scrim && (\r\n // biome-ignore lint/a11y/noStaticElementInteractions: <explanation>\r\n // biome-ignore lint/a11y/useKeyWithClickEvents: <explanation>\r\n <div\r\n class=\"y-layer__scrim\"\r\n style={{ '--y-layer-scrim-opacity': props.scrimOpacity }}\r\n onClick={onClickScrim}\r\n onKeydown={noop()}\r\n onKeyup={noop()}\r\n ref=\"scrim$\"\r\n ></div>\r\n )}\r\n </Transition>\r\n <PolyTransition\r\n onAfterEnter={onAfterEnter}\r\n onAfterLeave={onAfterLeave}\r\n appear\r\n {...polyTransitionBindProps.value}\r\n >\r\n <div\r\n v-show={active.value}\r\n v-complement-click={{ ...complementClickOption }}\r\n class={{\r\n 'y-layer__content': true,\r\n ...computedContentClasses.value,\r\n }}\r\n style={[\r\n {\r\n ...dimensionStyles.value,\r\n ...coordinateStyles.value,\r\n ...props.contentStyles,\r\n },\r\n ]}\r\n {...contentEvents.value}\r\n ref={content$}\r\n >\r\n {slots.default?.({ active: active.value, close })}\r\n </div>\r\n </PolyTransition>\r\n </div>\r\n )}\r\n </Teleport>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n complementClickOption,\r\n layerGroup,\r\n active,\r\n finish,\r\n rendered,\r\n lazyValue,\r\n onAfterUpdate: onAfterUpdate as () => void,\r\n scrim$,\r\n content$,\r\n base,\r\n base$,\r\n baseEl,\r\n baseFromSlotEl,\r\n polyTransitionBindProps,\r\n coordinateStyles,\r\n layerGroupState,\r\n getActiveLayers,\r\n coordination,\r\n };\r\n },\r\n});\r\n\r\nexport type YLayer = InstanceType<typeof YLayer>;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YPagination.js","names":["computed","shallowRef","createVNode","_createVNode","useModelDuplex","useRender","useRefs","useResizeObserver","clamp","getRangeArr","defineComponent","propsFactory","toStyleSizeValue","YButton","YIconPageControl","pressYPaginationProps","start","type","Number","String","default","modelValue","props","disabled","Boolean","length","validator","val","totalVisible","maxVisible","endButton","gap","color","activeColor","buttonVariation","activeButtonVariation","align","YPagination","name","components","emits","value","change","control","setup","_ref","slots","emit","page","parseInt","itemCount","resizeObservedRef","entries","target","contentRect","firstItem","querySelector","listWidth","width","itemWidth","offsetWidth","parseFloat","getComputedStyle","marginRight","calcItemCount","fixedCount","fixedWidth","count","Math","max","floor","toFixed","isNaN","min","total","innerWidth","controls","prevDisabled","nextDisabled","first","variation","onClick","e","preventDefault","to","del","prev","next","last","range","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","refs","updateRef","changePage","event","arguments","undefined","items","map","item","index","ref","active","key","ellipsis","styles"],"sources":["../../../src/components/pagination/YPagination.tsx"],"sourcesContent":["import {\n type ComponentPublicInstance,\n computed,\n type PropType,\n shallowRef,\n} from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { useRefs } from '@/composables/ref';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { clamp, getRangeArr } from '@/util/common';\nimport { defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YButton } from '../button';\nimport { YIconPageControl } from '../icons/YIconPageControl';\n\nimport './YPagination.scss';\n\nexport const pressYPaginationProps = propsFactory(\n {\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start as number,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n maxVisible: [Number, String],\n endButton: {\n type: [Boolean, Number] as PropType<boolean | number>,\n },\n gap: {\n type: [String, Number],\n default: 4,\n },\n color: String,\n activeColor: String,\n buttonVariation: [String],\n activeButtonVariation: [String],\n align: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'center',\n },\n // firstIcon: [String],\n // lastIcon: [String],\n // prevIcon: [String],\n // nextIcon: [String],\n },\n 'YPagination',\n);\n\nexport const YPagination = defineComponent({\n name: 'YPagination',\n components: {\n YButton,\n },\n props: {\n ...pressYPaginationProps(),\n },\n emits: {\n 'update:modelValue': (value: number) => true,\n change: (value: number, control?: string) => true,\n },\n setup(props, { slots, emit }) {\n const page = useModelDuplex(props);\n\n const length = computed(() => parseInt(props.length as string, 10));\n const start = computed(() => parseInt(props.start as string, 10));\n\n const itemCount = shallowRef(-1);\n\n const { resizeObservedRef } = useResizeObserver((entries) => {\n if (1 > entries.length) return;\n const { target, contentRect } = entries[0];\n\n const firstItem = target.querySelector(\n '.y-pagination__list > *',\n ) as HTMLElement;\n if (firstItem) {\n const listWidth = contentRect.width;\n const itemWidth =\n firstItem.offsetWidth +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2;\n itemCount.value = calcItemCount(listWidth, itemWidth);\n }\n });\n\n function calcItemCount(listWidth: number, itemWidth: number) {\n const fixedCount = props.endButton ? 5 : 3;\n const gap = +(props.gap ?? 4);\n const fixedWidth = (itemWidth + gap) * fixedCount - gap;\n const count = Math.max(\n 0,\n Math.floor(+((listWidth - fixedWidth) / (itemWidth + gap)).toFixed(2)),\n );\n const maxVisible = Number(props.maxVisible);\n if (!Number.isNaN(maxVisible)) {\n return Math.min(maxVisible, count);\n }\n return count;\n }\n\n const totalVisible = computed(() => {\n const maxVisible = Number(props.maxVisible);\n if (props.totalVisible) {\n const total = parseInt(props.totalVisible as string, 10);\n if (!Number.isNaN(maxVisible)) {\n return Math.min(total, maxVisible);\n }\n return total;\n } else if (itemCount.value >= 0) return itemCount.value;\n return calcItemCount(innerWidth, 58);\n });\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value;\n const nextDisabled =\n !!props.disabled || page.value >= start.value + length.value - 1;\n return {\n first: {\n disabled: prevDisabled,\n variation: props.buttonVariation,\n onClick: (e: MouseEvent) => {\n e.preventDefault();\n let to = page.value;\n if (props.endButton === true) {\n to = 1;\n } else {\n const del = Number(props.endButton);\n if (!Number.isNaN(del)) {\n to = clamp(to - del, 1, +length.value);\n }\n }\n page.value = to;\n emit('change', to, 'first');\n },\n },\n prev: {\n disabled: prevDisabled,\n variation: props.buttonVariation,\n onClick: (e: MouseEvent) => {\n e.preventDefault();\n const to = Math.max(1, page.value - 1);\n page.value = to;\n emit('change', to, 'prev');\n },\n },\n next: {\n disabled: nextDisabled,\n variation: props.buttonVariation,\n onClick: (e: MouseEvent) => {\n e.preventDefault();\n const to = Math.min(+length.value, page.value + 1);\n page.value = to;\n emit('change', to, 'next');\n },\n },\n last: {\n disabled: nextDisabled,\n variation: props.buttonVariation,\n onClick: (e: MouseEvent) => {\n e.preventDefault();\n let to = page.value;\n if (props.endButton === true) {\n to = +length.value;\n } else if (typeof props.endButton === 'number') {\n to = clamp(to + props.endButton, 1, +length.value);\n }\n page.value = to;\n emit('change', to, 'last');\n },\n },\n };\n });\n\n const range = computed(() => {\n if (\n length.value <= 0 ||\n Number.isNaN(length.value) ||\n length.value > Number.MAX_SAFE_INTEGER\n ) {\n return [];\n }\n if (totalVisible.value <= 1) {\n return [page.value];\n }\n if (length.value <= totalVisible.value) {\n return getRangeArr(length.value, start.value);\n }\n const even = totalVisible.value % 2 === 0;\n const middle = even\n ? totalVisible.value / 2\n : Math.floor(totalVisible.value / 2);\n const left = even ? middle : middle + 1;\n const right = length.value - middle;\n\n if (left - page.value >= 0) {\n return [\n ...getRangeArr(Math.max(1, totalVisible.value - 1), start.value),\n 'ellipsis',\n length.value,\n ];\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1;\n const rangeStart = length.value - rangeLength + start.value;\n return [\n start.value,\n 'ellipsis',\n ...getRangeArr(rangeLength, rangeStart),\n ];\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3);\n const rangeStart =\n rangeLength === 1\n ? page.value\n : page.value - Math.ceil(rangeLength / 2) + start.value;\n return [\n start.value,\n 'ellipsis',\n ...getRangeArr(rangeLength, rangeStart),\n 'ellipsis',\n length.value,\n ];\n }\n });\n\n const { refs, updateRef } = useRefs<ComponentPublicInstance>();\n\n function changePage(event: Event, to = 1) {\n event.preventDefault();\n page.value = to;\n emit('change', to);\n }\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index);\n\n if (item === 'ellipsis') {\n return {\n active: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n disabled: true, // TODO: skipper\n },\n };\n } else {\n const active = item === page.value;\n return {\n active,\n key: `item-${item}`,\n page: item,\n props: {\n ref,\n ellipsis: false,\n disabled: !!props.disabled || +props.length < 2,\n color: active ? props.activeColor : props.color,\n variation: active\n ? props.activeButtonVariation\n : props.buttonVariation,\n onClick: (e: MouseEvent) => changePage(e, item),\n },\n };\n }\n });\n });\n\n const styles = computed(() => {\n let gap: string | undefined;\n if (props.gap) {\n const value = +props.gap;\n if (!Number.isNaN(value)) {\n gap = toStyleSizeValue(value);\n } else if (typeof props.gap === 'string') {\n gap = props.gap;\n }\n }\n return {\n '--y-pagination__gap': gap,\n };\n });\n\n useRender(() => {\n return (\n <nav\n ref={resizeObservedRef}\n class={[\n 'y-pagination',\n { [`y-pagination--align-${props.align}`]: props.align !== 'start' },\n ]}\n style={styles.value}\n >\n <ul class={['y-pagination__list']}>\n {props.endButton && (\n <li key=\"first\" class=\"y-pagination__first\">\n {slots.first ? (\n slots.first(controls.value.first)\n ) : (\n <YButton {...controls.value.first}>\n {slots['first-icon'] ? (\n slots['first-icon']()\n ) : (\n <YIconPageControl type={'first'}></YIconPageControl>\n )}\n </YButton>\n )}\n </li>\n )}\n <li key=\"prev\" class=\"y-pagination__prev\">\n {slots.prev ? (\n slots.prev(controls.value.prev)\n ) : (\n <YButton {...controls.value.prev}>\n {slots['prev-icon'] ? (\n slots['prev-icon']()\n ) : (\n <YIconPageControl type={'prev'}></YIconPageControl>\n )}\n </YButton>\n )}\n </li>\n {items.value.map((item, index) => {\n return (\n <li\n key={item.key}\n class={[\n 'y-pagination__item',\n { 'y-pagination__item--active': item.active },\n ]}\n >\n <YButton {...item.props}>\n {item.props.ellipsis\n ? slots.ellipsis\n ? slots.ellipsis()\n : '...'\n : item.page}\n </YButton>\n </li>\n );\n })}\n <li key=\"next\" class=\"y-pagination__next\">\n {slots.next ? (\n slots.next(controls.value.next)\n ) : (\n <YButton {...controls.value.next}>\n {slots['next-icon'] ? (\n slots['next-icon']()\n ) : (\n <YIconPageControl type={'next'}></YIconPageControl>\n )}\n </YButton>\n )}\n </li>\n {props.endButton && (\n <li key=\"last\" class=\"y-pagination__last\">\n {slots.last ? (\n slots.last(controls.value.last)\n ) : (\n <YButton {...controls.value.last}>\n {slots['last-icon'] ? (\n slots['last-icon']()\n ) : (\n <YIconPageControl type={'last'}></YIconPageControl>\n )}\n </YButton>\n )}\n </li>\n )}\n </ul>\n </nav>\n );\n });\n\n return {\n itemCount,\n page,\n refs,\n };\n },\n});\n\nexport type YPagination = InstanceType<typeof YPagination>;\n"],"mappings":"AAAA,SAEEA,QAAQ,EAERC,UAAU,EAAAC,WAAA,IAAAC,YAAA,QACL,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,OAAO;AAAA,SACPC,iBAAiB;AAAA,SACjBC,KAAK,EAAEC,WAAW;AAAA,SAClBC,eAAe,EAAEC,YAAY;AAAA,SAC7BC,gBAAgB;AAAA,SAEhBC,OAAO;AAAA,SACPC,gBAAgB;AAEzB;AAEA,OAAO,MAAMC,qBAAqB,GAAGJ,YAAY,CAC/C;EACEK,KAAK,EAAE;IACLC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX,CAAC;EACDC,UAAU,EAAE;IACVJ,IAAI,EAAEC,MAAM;IACZE,OAAO,EAAGE,KAAU,IAAKA,KAAK,CAACN;EACjC,CAAC;EACDO,QAAQ,EAAEC,OAAO;EACjBC,MAAM,EAAE;IACNR,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE,CAAC;IACVM,SAAS,EAAGC,GAAW,IAAKA,GAAG,GAAG,CAAC,KAAK;EAC1C,CAAC;EACDC,YAAY,EAAE,CAACV,MAAM,EAAEC,MAAM,CAAC;EAC9BU,UAAU,EAAE,CAACX,MAAM,EAAEC,MAAM,CAAC;EAC5BW,SAAS,EAAE;IACTb,IAAI,EAAE,CAACO,OAAO,EAAEN,MAAM;EACxB,CAAC;EACDa,GAAG,EAAE;IACHd,IAAI,EAAE,CAACE,MAAM,EAAED,MAAM,CAAC;IACtBE,OAAO,EAAE;EACX,CAAC;EACDY,KAAK,EAAEb,MAAM;EACbc,WAAW,EAAEd,MAAM;EACnBe,eAAe,EAAE,CAACf,MAAM,CAAC;EACzBgB,qBAAqB,EAAE,CAAChB,MAAM,CAAC;EAC/BiB,KAAK,EAAE;IACLnB,IAAI,EAAEE,MAA8C;IACpDC,OAAO,EAAE;EACX;EACA;EACA;EACA;EACA;AACF,CAAC,EACD,aACF,CAAC;AAED,OAAO,MAAMiB,WAAW,GAAG3B,eAAe,CAAC;EACzC4B,IAAI,EAAE,aAAa;EACnBC,UAAU,EAAE;IACV1B;EACF,CAAC;EACDS,KAAK,EAAE;IACL,GAAGP,qBAAqB,CAAC;EAC3B,CAAC;EACDyB,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAa,IAAK,IAAI;IAC5CC,MAAM,EAAEA,CAACD,KAAa,EAAEE,OAAgB,KAAK;EAC/C,CAAC;EACDC,KAAKA,CAACtB,KAAK,EAAAuB,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC1B,MAAMG,IAAI,GAAG5C,cAAc,CAACkB,KAAK,CAAC;IAElC,MAAMG,MAAM,GAAGzB,QAAQ,CAAC,MAAMiD,QAAQ,CAAC3B,KAAK,CAACG,MAAM,EAAY,EAAE,CAAC,CAAC;IACnE,MAAMT,KAAK,GAAGhB,QAAQ,CAAC,MAAMiD,QAAQ,CAAC3B,KAAK,CAACN,KAAK,EAAY,EAAE,CAAC,CAAC;IAEjE,MAAMkC,SAAS,GAAGjD,UAAU,CAAC,CAAC,CAAC,CAAC;IAEhC,MAAM;MAAEkD;IAAkB,CAAC,GAAG5C,iBAAiB,CAAE6C,OAAO,IAAK;MAC3D,IAAI,CAAC,GAAGA,OAAO,CAAC3B,MAAM,EAAE;MACxB,MAAM;QAAE4B,MAAM;QAAEC;MAAY,CAAC,GAAGF,OAAO,CAAC,CAAC,CAAC;MAE1C,MAAMG,SAAS,GAAGF,MAAM,CAACG,aAAa,CACpC,yBACF,CAAgB;MAChB,IAAID,SAAS,EAAE;QACb,MAAME,SAAS,GAAGH,WAAW,CAACI,KAAK;QACnC,MAAMC,SAAS,GACbJ,SAAS,CAACK,WAAW,GACrBC,UAAU,CAACC,gBAAgB,CAACP,SAAS,CAAC,CAACQ,WAAW,CAAC,GAAG,CAAC;QACzDb,SAAS,CAACT,KAAK,GAAGuB,aAAa,CAACP,SAAS,EAAEE,SAAS,CAAC;MACvD;IACF,CAAC,CAAC;IAEF,SAASK,aAAaA,CAACP,SAAiB,EAAEE,SAAiB,EAAE;MAC3D,MAAMM,UAAU,GAAG3C,KAAK,CAACQ,SAAS,GAAG,CAAC,GAAG,CAAC;MAC1C,MAAMC,GAAG,GAAG,EAAET,KAAK,CAACS,GAAG,IAAI,CAAC,CAAC;MAC7B,MAAMmC,UAAU,GAAG,CAACP,SAAS,GAAG5B,GAAG,IAAIkC,UAAU,GAAGlC,GAAG;MACvD,MAAMoC,KAAK,GAAGC,IAAI,CAACC,GAAG,CACpB,CAAC,EACDD,IAAI,CAACE,KAAK,CAAC,CAAC,CAAC,CAACb,SAAS,GAAGS,UAAU,KAAKP,SAAS,GAAG5B,GAAG,CAAC,EAAEwC,OAAO,CAAC,CAAC,CAAC,CACvE,CAAC;MACD,MAAM1C,UAAU,GAAGX,MAAM,CAACI,KAAK,CAACO,UAAU,CAAC;MAC3C,IAAI,CAACX,MAAM,CAACsD,KAAK,CAAC3C,UAAU,CAAC,EAAE;QAC7B,OAAOuC,IAAI,CAACK,GAAG,CAAC5C,UAAU,EAAEsC,KAAK,CAAC;MACpC;MACA,OAAOA,KAAK;IACd;IAEA,MAAMvC,YAAY,GAAG5B,QAAQ,CAAC,MAAM;MAClC,MAAM6B,UAAU,GAAGX,MAAM,CAACI,KAAK,CAACO,UAAU,CAAC;MAC3C,IAAIP,KAAK,CAACM,YAAY,EAAE;QACtB,MAAM8C,KAAK,GAAGzB,QAAQ,CAAC3B,KAAK,CAACM,YAAY,EAAY,EAAE,CAAC;QACxD,IAAI,CAACV,MAAM,CAACsD,KAAK,CAAC3C,UAAU,CAAC,EAAE;UAC7B,OAAOuC,IAAI,CAACK,GAAG,CAACC,KAAK,EAAE7C,UAAU,CAAC;QACpC;QACA,OAAO6C,KAAK;MACd,CAAC,MAAM,IAAIxB,SAAS,CAACT,KAAK,IAAI,CAAC,EAAE,OAAOS,SAAS,CAACT,KAAK;MACvD,OAAOuB,aAAa,CAACW,UAAU,EAAE,EAAE,CAAC;IACtC,CAAC,CAAC;IAEF,MAAMC,QAAQ,GAAG5E,QAAQ,CAAC,MAAM;MAC9B,MAAM6E,YAAY,GAAG,CAAC,CAACvD,KAAK,CAACC,QAAQ,IAAIyB,IAAI,CAACP,KAAK,IAAIzB,KAAK,CAACyB,KAAK;MAClE,MAAMqC,YAAY,GAChB,CAAC,CAACxD,KAAK,CAACC,QAAQ,IAAIyB,IAAI,CAACP,KAAK,IAAIzB,KAAK,CAACyB,KAAK,GAAGhB,MAAM,CAACgB,KAAK,GAAG,CAAC;MAClE,OAAO;QACLsC,KAAK,EAAE;UACLxD,QAAQ,EAAEsD,YAAY;UACtBG,SAAS,EAAE1D,KAAK,CAACY,eAAe;UAChC+C,OAAO,EAAGC,CAAa,IAAK;YAC1BA,CAAC,CAACC,cAAc,CAAC,CAAC;YAClB,IAAIC,EAAE,GAAGpC,IAAI,CAACP,KAAK;YACnB,IAAInB,KAAK,CAACQ,SAAS,KAAK,IAAI,EAAE;cAC5BsD,EAAE,GAAG,CAAC;YACR,CAAC,MAAM;cACL,MAAMC,GAAG,GAAGnE,MAAM,CAACI,KAAK,CAACQ,SAAS,CAAC;cACnC,IAAI,CAACZ,MAAM,CAACsD,KAAK,CAACa,GAAG,CAAC,EAAE;gBACtBD,EAAE,GAAG5E,KAAK,CAAC4E,EAAE,GAAGC,GAAG,EAAE,CAAC,EAAE,CAAC5D,MAAM,CAACgB,KAAK,CAAC;cACxC;YACF;YACAO,IAAI,CAACP,KAAK,GAAG2C,EAAE;YACfrC,IAAI,CAAC,QAAQ,EAAEqC,EAAE,EAAE,OAAO,CAAC;UAC7B;QACF,CAAC;QACDE,IAAI,EAAE;UACJ/D,QAAQ,EAAEsD,YAAY;UACtBG,SAAS,EAAE1D,KAAK,CAACY,eAAe;UAChC+C,OAAO,EAAGC,CAAa,IAAK;YAC1BA,CAAC,CAACC,cAAc,CAAC,CAAC;YAClB,MAAMC,EAAE,GAAGhB,IAAI,CAACC,GAAG,CAAC,CAAC,EAAErB,IAAI,CAACP,KAAK,GAAG,CAAC,CAAC;YACtCO,IAAI,CAACP,KAAK,GAAG2C,EAAE;YACfrC,IAAI,CAAC,QAAQ,EAAEqC,EAAE,EAAE,MAAM,CAAC;UAC5B;QACF,CAAC;QACDG,IAAI,EAAE;UACJhE,QAAQ,EAAEuD,YAAY;UACtBE,SAAS,EAAE1D,KAAK,CAACY,eAAe;UAChC+C,OAAO,EAAGC,CAAa,IAAK;YAC1BA,CAAC,CAACC,cAAc,CAAC,CAAC;YAClB,MAAMC,EAAE,GAAGhB,IAAI,CAACK,GAAG,CAAC,CAAChD,MAAM,CAACgB,KAAK,EAAEO,IAAI,CAACP,KAAK,GAAG,CAAC,CAAC;YAClDO,IAAI,CAACP,KAAK,GAAG2C,EAAE;YACfrC,IAAI,CAAC,QAAQ,EAAEqC,EAAE,EAAE,MAAM,CAAC;UAC5B;QACF,CAAC;QACDI,IAAI,EAAE;UACJjE,QAAQ,EAAEuD,YAAY;UACtBE,SAAS,EAAE1D,KAAK,CAACY,eAAe;UAChC+C,OAAO,EAAGC,CAAa,IAAK;YAC1BA,CAAC,CAACC,cAAc,CAAC,CAAC;YAClB,IAAIC,EAAE,GAAGpC,IAAI,CAACP,KAAK;YACnB,IAAInB,KAAK,CAACQ,SAAS,KAAK,IAAI,EAAE;cAC5BsD,EAAE,GAAG,CAAC3D,MAAM,CAACgB,KAAK;YACpB,CAAC,MAAM,IAAI,OAAOnB,KAAK,CAACQ,SAAS,KAAK,QAAQ,EAAE;cAC9CsD,EAAE,GAAG5E,KAAK,CAAC4E,EAAE,GAAG9D,KAAK,CAACQ,SAAS,EAAE,CAAC,EAAE,CAACL,MAAM,CAACgB,KAAK,CAAC;YACpD;YACAO,IAAI,CAACP,KAAK,GAAG2C,EAAE;YACfrC,IAAI,CAAC,QAAQ,EAAEqC,EAAE,EAAE,MAAM,CAAC;UAC5B;QACF;MACF,CAAC;IACH,CAAC,CAAC;IAEF,MAAMK,KAAK,GAAGzF,QAAQ,CAAC,MAAM;MAC3B,IACEyB,MAAM,CAACgB,KAAK,IAAI,CAAC,IACjBvB,MAAM,CAACsD,KAAK,CAAC/C,MAAM,CAACgB,KAAK,CAAC,IAC1BhB,MAAM,CAACgB,KAAK,GAAGvB,MAAM,CAACwE,gBAAgB,EACtC;QACA,OAAO,EAAE;MACX;MACA,IAAI9D,YAAY,CAACa,KAAK,IAAI,CAAC,EAAE;QAC3B,OAAO,CAACO,IAAI,CAACP,KAAK,CAAC;MACrB;MACA,IAAIhB,MAAM,CAACgB,KAAK,IAAIb,YAAY,CAACa,KAAK,EAAE;QACtC,OAAOhC,WAAW,CAACgB,MAAM,CAACgB,KAAK,EAAEzB,KAAK,CAACyB,KAAK,CAAC;MAC/C;MACA,MAAMkD,IAAI,GAAG/D,YAAY,CAACa,KAAK,GAAG,CAAC,KAAK,CAAC;MACzC,MAAMmD,MAAM,GAAGD,IAAI,GACf/D,YAAY,CAACa,KAAK,GAAG,CAAC,GACtB2B,IAAI,CAACE,KAAK,CAAC1C,YAAY,CAACa,KAAK,GAAG,CAAC,CAAC;MACtC,MAAMoD,IAAI,GAAGF,IAAI,GAAGC,MAAM,GAAGA,MAAM,GAAG,CAAC;MACvC,MAAME,KAAK,GAAGrE,MAAM,CAACgB,KAAK,GAAGmD,MAAM;MAEnC,IAAIC,IAAI,GAAG7C,IAAI,CAACP,KAAK,IAAI,CAAC,EAAE;QAC1B,OAAO,CACL,GAAGhC,WAAW,CAAC2D,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEzC,YAAY,CAACa,KAAK,GAAG,CAAC,CAAC,EAAEzB,KAAK,CAACyB,KAAK,CAAC,EAChE,UAAU,EACVhB,MAAM,CAACgB,KAAK,CACb;MACH,CAAC,MAAM,IAAIO,IAAI,CAACP,KAAK,GAAGqD,KAAK,KAAKH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;QAC/C,MAAMI,WAAW,GAAGnE,YAAY,CAACa,KAAK,GAAG,CAAC;QAC1C,MAAMuD,UAAU,GAAGvE,MAAM,CAACgB,KAAK,GAAGsD,WAAW,GAAG/E,KAAK,CAACyB,KAAK;QAC3D,OAAO,CACLzB,KAAK,CAACyB,KAAK,EACX,UAAU,EACV,GAAGhC,WAAW,CAACsF,WAAW,EAAEC,UAAU,CAAC,CACxC;MACH,CAAC,MAAM;QACL,MAAMD,WAAW,GAAG3B,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEzC,YAAY,CAACa,KAAK,GAAG,CAAC,CAAC;QACvD,MAAMuD,UAAU,GACdD,WAAW,KAAK,CAAC,GACb/C,IAAI,CAACP,KAAK,GACVO,IAAI,CAACP,KAAK,GAAG2B,IAAI,CAAC6B,IAAI,CAACF,WAAW,GAAG,CAAC,CAAC,GAAG/E,KAAK,CAACyB,KAAK;QAC3D,OAAO,CACLzB,KAAK,CAACyB,KAAK,EACX,UAAU,EACV,GAAGhC,WAAW,CAACsF,WAAW,EAAEC,UAAU,CAAC,EACvC,UAAU,EACVvE,MAAM,CAACgB,KAAK,CACb;MACH;IACF,CAAC,CAAC;IAEF,MAAM;MAAEyD,IAAI;MAAEC;IAAU,CAAC,GAAG7F,OAAO,CAA0B,CAAC;IAE9D,SAAS8F,UAAUA,CAACC,KAAY,EAAU;MAAA,IAARjB,EAAE,GAAAkB,SAAA,CAAA7E,MAAA,QAAA6E,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC;MACtCD,KAAK,CAAClB,cAAc,CAAC,CAAC;MACtBnC,IAAI,CAACP,KAAK,GAAG2C,EAAE;MACfrC,IAAI,CAAC,QAAQ,EAAEqC,EAAE,CAAC;IACpB;IAEA,MAAMoB,KAAK,GAAGxG,QAAQ,CAAC,MAAM;MAC3B,OAAOyF,KAAK,CAAChD,KAAK,CAACgE,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;QACtC,MAAMC,GAAG,GAAI1B,CAAM,IAAKiB,SAAS,CAACjB,CAAC,EAAEyB,KAAK,CAAC;QAE3C,IAAID,IAAI,KAAK,UAAU,EAAE;UACvB,OAAO;YACLG,MAAM,EAAE,KAAK;YACbC,GAAG,EAAE,YAAYH,KAAK,EAAE;YACxB3D,IAAI,EAAE0D,IAAI;YACVpF,KAAK,EAAE;cACLsF,GAAG;cACHG,QAAQ,EAAE,IAAI;cACdxF,QAAQ,EAAE,IAAI,CAAE;YAClB;UACF,CAAC;QACH,CAAC,MAAM;UACL,MAAMsF,MAAM,GAAGH,IAAI,KAAK1D,IAAI,CAACP,KAAK;UAClC,OAAO;YACLoE,MAAM;YACNC,GAAG,EAAE,QAAQJ,IAAI,EAAE;YACnB1D,IAAI,EAAE0D,IAAI;YACVpF,KAAK,EAAE;cACLsF,GAAG;cACHG,QAAQ,EAAE,KAAK;cACfxF,QAAQ,EAAE,CAAC,CAACD,KAAK,CAACC,QAAQ,IAAI,CAACD,KAAK,CAACG,MAAM,GAAG,CAAC;cAC/CO,KAAK,EAAE6E,MAAM,GAAGvF,KAAK,CAACW,WAAW,GAAGX,KAAK,CAACU,KAAK;cAC/CgD,SAAS,EAAE6B,MAAM,GACbvF,KAAK,CAACa,qBAAqB,GAC3Bb,KAAK,CAACY,eAAe;cACzB+C,OAAO,EAAGC,CAAa,IAAKkB,UAAU,CAAClB,CAAC,EAAEwB,IAAI;YAChD;UACF,CAAC;QACH;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAMM,MAAM,GAAGhH,QAAQ,CAAC,MAAM;MAC5B,IAAI+B,GAAuB;MAC3B,IAAIT,KAAK,CAACS,GAAG,EAAE;QACb,MAAMU,KAAK,GAAG,CAACnB,KAAK,CAACS,GAAG;QACxB,IAAI,CAACb,MAAM,CAACsD,KAAK,CAAC/B,KAAK,CAAC,EAAE;UACxBV,GAAG,GAAGnB,gBAAgB,CAAC6B,KAAK,CAAC;QAC/B,CAAC,MAAM,IAAI,OAAOnB,KAAK,CAACS,GAAG,KAAK,QAAQ,EAAE;UACxCA,GAAG,GAAGT,KAAK,CAACS,GAAG;QACjB;MACF;MACA,OAAO;QACL,qBAAqB,EAAEA;MACzB,CAAC;IACH,CAAC,CAAC;IAEF1B,SAAS,CAAC,MAAM;MACd,OAAAF,YAAA;QAAA,OAESgD,iBAAiB;QAAA,SACf,CACL,cAAc,EACd;UAAE,CAAC,uBAAuB7B,KAAK,CAACc,KAAK,EAAE,GAAGd,KAAK,CAACc,KAAK,KAAK;QAAQ,CAAC,CACpE;QAAA,SACM4E,MAAM,CAACvE;MAAK,IAAAtC,YAAA;QAAA,SAER,CAAC,oBAAoB;MAAC,IAC9BmB,KAAK,CAACQ,SAAS,IAAA3B,YAAA;QAAA;QAAA;MAAA,IAEX2C,KAAK,CAACiC,KAAK,GACVjC,KAAK,CAACiC,KAAK,CAACH,QAAQ,CAACnC,KAAK,CAACsC,KAAK,CAAC,GAAA5E,YAAA,CAAAU,OAAA,EAEpB+D,QAAQ,CAACnC,KAAK,CAACsC,KAAK;QAAA3D,OAAA,EAAAA,CAAA,MAC9B0B,KAAK,CAAC,YAAY,CAAC,GAClBA,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,GAAA3C,YAAA,CAAAW,gBAAA;UAAA,QAEG;QAAO,QAChC;MAAA,EAEJ,EAEJ,EAAAX,YAAA;QAAA;QAAA;MAAA,IAEE2C,KAAK,CAACwC,IAAI,GACTxC,KAAK,CAACwC,IAAI,CAACV,QAAQ,CAACnC,KAAK,CAAC6C,IAAI,CAAC,GAAAnF,YAAA,CAAAU,OAAA,EAElB+D,QAAQ,CAACnC,KAAK,CAAC6C,IAAI;QAAAlE,OAAA,EAAAA,CAAA,MAC7B0B,KAAK,CAAC,WAAW,CAAC,GACjBA,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAA3C,YAAA,CAAAW,gBAAA;UAAA,QAEI;QAAM,QAC/B;MAAA,EAEJ,IAEF0F,KAAK,CAAC/D,KAAK,CAACgE,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;QAChC,OAAAxG,YAAA;UAAA,OAESuG,IAAI,CAACI,GAAG;UAAA,SACN,CACL,oBAAoB,EACpB;YAAE,4BAA4B,EAAEJ,IAAI,CAACG;UAAO,CAAC;QAC9C,IAAA1G,YAAA,CAAAU,OAAA,EAEY6F,IAAI,CAACpF,KAAK;UAAAF,OAAA,EAAAA,CAAA,MACpBsF,IAAI,CAACpF,KAAK,CAACyF,QAAQ,GAChBjE,KAAK,CAACiE,QAAQ,GACZjE,KAAK,CAACiE,QAAQ,CAAC,CAAC,GAChB,KAAK,GACPL,IAAI,CAAC1D,IAAI;QAAA;MAIrB,CAAC,CAAC,EAAA7C,YAAA;QAAA;QAAA;MAAA,IAEC2C,KAAK,CAACyC,IAAI,GACTzC,KAAK,CAACyC,IAAI,CAACX,QAAQ,CAACnC,KAAK,CAAC8C,IAAI,CAAC,GAAApF,YAAA,CAAAU,OAAA,EAElB+D,QAAQ,CAACnC,KAAK,CAAC8C,IAAI;QAAAnE,OAAA,EAAAA,CAAA,MAC7B0B,KAAK,CAAC,WAAW,CAAC,GACjBA,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAA3C,YAAA,CAAAW,gBAAA;UAAA,QAEI;QAAM,QAC/B;MAAA,EAEJ,IAEFQ,KAAK,CAACQ,SAAS,IAAA3B,YAAA;QAAA;QAAA;MAAA,IAEX2C,KAAK,CAAC0C,IAAI,GACT1C,KAAK,CAAC0C,IAAI,CAACZ,QAAQ,CAACnC,KAAK,CAAC+C,IAAI,CAAC,GAAArF,YAAA,CAAAU,OAAA,EAElB+D,QAAQ,CAACnC,KAAK,CAAC+C,IAAI;QAAApE,OAAA,EAAAA,CAAA,MAC7B0B,KAAK,CAAC,WAAW,CAAC,GACjBA,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAA3C,YAAA,CAAAW,gBAAA;UAAA,QAEI;QAAM,QAC/B;MAAA,EAEJ,EAEJ;IAIT,CAAC,CAAC;IAEF,OAAO;MACLoC,SAAS;MACTF,IAAI;MACJkD;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"YPagination.js","names":["computed","shallowRef","createVNode","_createVNode","useModelDuplex","useRender","useRefs","useResizeObserver","clamp","getRangeArr","defineComponent","propsFactory","toStyleSizeValue","YButton","YIconPageControl","pressYPaginationProps","start","type","Number","String","default","modelValue","props","disabled","Boolean","length","validator","val","totalVisible","maxVisible","endButton","gap","color","activeColor","buttonVariation","activeButtonVariation","align","YPagination","name","components","emits","value","change","control","setup","_ref","slots","emit","page","parseInt","itemCount","resizeObservedRef","entries","target","contentRect","firstItem","querySelector","listWidth","width","itemWidth","offsetWidth","parseFloat","getComputedStyle","marginRight","calcItemCount","fixedCount","fixedWidth","count","Math","max","floor","toFixed","isNaN","min","total","innerWidth","controls","prevDisabled","nextDisabled","first","variation","onClick","e","preventDefault","to","del","prev","next","last","range","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","refs","updateRef","changePage","event","arguments","undefined","items","map","item","index","ref","active","key","ellipsis","styles"],"sources":["../../../src/components/pagination/YPagination.tsx"],"sourcesContent":["import {\r\n type ComponentPublicInstance,\r\n computed,\r\n type PropType,\r\n shallowRef,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { useRender } from '@/composables/component';\r\nimport { useRefs } from '@/composables/ref';\r\nimport { useResizeObserver } from '@/composables/resize-observer';\r\nimport { clamp, getRangeArr } from '@/util/common';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\nimport { toStyleSizeValue } from '@/util/ui';\r\n\r\nimport { YButton } from '../button';\r\nimport { YIconPageControl } from '../icons/YIconPageControl';\r\n\r\nimport './YPagination.scss';\r\n\r\nexport const pressYPaginationProps = propsFactory(\r\n {\r\n start: {\r\n type: [Number, String],\r\n default: 1,\r\n },\r\n modelValue: {\r\n type: Number,\r\n default: (props: any) => props.start as number,\r\n },\r\n disabled: Boolean,\r\n length: {\r\n type: [Number, String],\r\n default: 1,\r\n validator: (val: number) => val % 1 === 0,\r\n },\r\n totalVisible: [Number, String],\r\n maxVisible: [Number, String],\r\n endButton: {\r\n type: [Boolean, Number] as PropType<boolean | number>,\r\n },\r\n gap: {\r\n type: [String, Number],\r\n default: 4,\r\n },\r\n color: String,\r\n activeColor: String,\r\n buttonVariation: [String],\r\n activeButtonVariation: [String],\r\n align: {\r\n type: String as PropType<'start' | 'center' | 'end'>,\r\n default: 'center',\r\n },\r\n // firstIcon: [String],\r\n // lastIcon: [String],\r\n // prevIcon: [String],\r\n // nextIcon: [String],\r\n },\r\n 'YPagination',\r\n);\r\n\r\nexport const YPagination = defineComponent({\r\n name: 'YPagination',\r\n components: {\r\n YButton,\r\n },\r\n props: {\r\n ...pressYPaginationProps(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: number) => true,\r\n change: (value: number, control?: string) => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const page = useModelDuplex(props);\r\n\r\n const length = computed(() => parseInt(props.length as string, 10));\r\n const start = computed(() => parseInt(props.start as string, 10));\r\n\r\n const itemCount = shallowRef(-1);\r\n\r\n const { resizeObservedRef } = useResizeObserver((entries) => {\r\n if (1 > entries.length) return;\r\n const { target, contentRect } = entries[0];\r\n\r\n const firstItem = target.querySelector(\r\n '.y-pagination__list > *',\r\n ) as HTMLElement;\r\n if (firstItem) {\r\n const listWidth = contentRect.width;\r\n const itemWidth =\r\n firstItem.offsetWidth +\r\n parseFloat(getComputedStyle(firstItem).marginRight) * 2;\r\n itemCount.value = calcItemCount(listWidth, itemWidth);\r\n }\r\n });\r\n\r\n function calcItemCount(listWidth: number, itemWidth: number) {\r\n const fixedCount = props.endButton ? 5 : 3;\r\n const gap = +(props.gap ?? 4);\r\n const fixedWidth = (itemWidth + gap) * fixedCount - gap;\r\n const count = Math.max(\r\n 0,\r\n Math.floor(+((listWidth - fixedWidth) / (itemWidth + gap)).toFixed(2)),\r\n );\r\n const maxVisible = Number(props.maxVisible);\r\n if (!Number.isNaN(maxVisible)) {\r\n return Math.min(maxVisible, count);\r\n }\r\n return count;\r\n }\r\n\r\n const totalVisible = computed(() => {\r\n const maxVisible = Number(props.maxVisible);\r\n if (props.totalVisible) {\r\n const total = parseInt(props.totalVisible as string, 10);\r\n if (!Number.isNaN(maxVisible)) {\r\n return Math.min(total, maxVisible);\r\n }\r\n return total;\r\n } else if (itemCount.value >= 0) return itemCount.value;\r\n return calcItemCount(innerWidth, 58);\r\n });\r\n\r\n const controls = computed(() => {\r\n const prevDisabled = !!props.disabled || page.value <= start.value;\r\n const nextDisabled =\r\n !!props.disabled || page.value >= start.value + length.value - 1;\r\n return {\r\n first: {\r\n disabled: prevDisabled,\r\n variation: props.buttonVariation,\r\n onClick: (e: MouseEvent) => {\r\n e.preventDefault();\r\n let to = page.value;\r\n if (props.endButton === true) {\r\n to = 1;\r\n } else {\r\n const del = Number(props.endButton);\r\n if (!Number.isNaN(del)) {\r\n to = clamp(to - del, 1, +length.value);\r\n }\r\n }\r\n page.value = to;\r\n emit('change', to, 'first');\r\n },\r\n },\r\n prev: {\r\n disabled: prevDisabled,\r\n variation: props.buttonVariation,\r\n onClick: (e: MouseEvent) => {\r\n e.preventDefault();\r\n const to = Math.max(1, page.value - 1);\r\n page.value = to;\r\n emit('change', to, 'prev');\r\n },\r\n },\r\n next: {\r\n disabled: nextDisabled,\r\n variation: props.buttonVariation,\r\n onClick: (e: MouseEvent) => {\r\n e.preventDefault();\r\n const to = Math.min(+length.value, page.value + 1);\r\n page.value = to;\r\n emit('change', to, 'next');\r\n },\r\n },\r\n last: {\r\n disabled: nextDisabled,\r\n variation: props.buttonVariation,\r\n onClick: (e: MouseEvent) => {\r\n e.preventDefault();\r\n let to = page.value;\r\n if (props.endButton === true) {\r\n to = +length.value;\r\n } else if (typeof props.endButton === 'number') {\r\n to = clamp(to + props.endButton, 1, +length.value);\r\n }\r\n page.value = to;\r\n emit('change', to, 'last');\r\n },\r\n },\r\n };\r\n });\r\n\r\n const range = computed(() => {\r\n if (\r\n length.value <= 0 ||\r\n Number.isNaN(length.value) ||\r\n length.value > Number.MAX_SAFE_INTEGER\r\n ) {\r\n return [];\r\n }\r\n if (totalVisible.value <= 1) {\r\n return [page.value];\r\n }\r\n if (length.value <= totalVisible.value) {\r\n return getRangeArr(length.value, start.value);\r\n }\r\n const even = totalVisible.value % 2 === 0;\r\n const middle = even\r\n ? totalVisible.value / 2\r\n : Math.floor(totalVisible.value / 2);\r\n const left = even ? middle : middle + 1;\r\n const right = length.value - middle;\r\n\r\n if (left - page.value >= 0) {\r\n return [\r\n ...getRangeArr(Math.max(1, totalVisible.value - 1), start.value),\r\n 'ellipsis',\r\n length.value,\r\n ];\r\n } else if (page.value - right >= (even ? 1 : 0)) {\r\n const rangeLength = totalVisible.value - 1;\r\n const rangeStart = length.value - rangeLength + start.value;\r\n return [\r\n start.value,\r\n 'ellipsis',\r\n ...getRangeArr(rangeLength, rangeStart),\r\n ];\r\n } else {\r\n const rangeLength = Math.max(1, totalVisible.value - 3);\r\n const rangeStart =\r\n rangeLength === 1\r\n ? page.value\r\n : page.value - Math.ceil(rangeLength / 2) + start.value;\r\n return [\r\n start.value,\r\n 'ellipsis',\r\n ...getRangeArr(rangeLength, rangeStart),\r\n 'ellipsis',\r\n length.value,\r\n ];\r\n }\r\n });\r\n\r\n const { refs, updateRef } = useRefs<ComponentPublicInstance>();\r\n\r\n function changePage(event: Event, to = 1) {\r\n event.preventDefault();\r\n page.value = to;\r\n emit('change', to);\r\n }\r\n\r\n const items = computed(() => {\r\n return range.value.map((item, index) => {\r\n const ref = (e: any) => updateRef(e, index);\r\n\r\n if (item === 'ellipsis') {\r\n return {\r\n active: false,\r\n key: `ellipsis-${index}`,\r\n page: item,\r\n props: {\r\n ref,\r\n ellipsis: true,\r\n disabled: true, // TODO: skipper\r\n },\r\n };\r\n } else {\r\n const active = item === page.value;\r\n return {\r\n active,\r\n key: `item-${item}`,\r\n page: item,\r\n props: {\r\n ref,\r\n ellipsis: false,\r\n disabled: !!props.disabled || +props.length < 2,\r\n color: active ? props.activeColor : props.color,\r\n variation: active\r\n ? props.activeButtonVariation\r\n : props.buttonVariation,\r\n onClick: (e: MouseEvent) => changePage(e, item),\r\n },\r\n };\r\n }\r\n });\r\n });\r\n\r\n const styles = computed(() => {\r\n let gap: string | undefined;\r\n if (props.gap) {\r\n const value = +props.gap;\r\n if (!Number.isNaN(value)) {\r\n gap = toStyleSizeValue(value);\r\n } else if (typeof props.gap === 'string') {\r\n gap = props.gap;\r\n }\r\n }\r\n return {\r\n '--y-pagination__gap': gap,\r\n };\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <nav\r\n ref={resizeObservedRef}\r\n class={[\r\n 'y-pagination',\r\n { [`y-pagination--align-${props.align}`]: props.align !== 'start' },\r\n ]}\r\n style={styles.value}\r\n >\r\n <ul class={['y-pagination__list']}>\r\n {props.endButton && (\r\n <li key=\"first\" class=\"y-pagination__first\">\r\n {slots.first ? (\r\n slots.first(controls.value.first)\r\n ) : (\r\n <YButton {...controls.value.first}>\r\n {slots['first-icon'] ? (\r\n slots['first-icon']()\r\n ) : (\r\n <YIconPageControl type={'first'}></YIconPageControl>\r\n )}\r\n </YButton>\r\n )}\r\n </li>\r\n )}\r\n <li key=\"prev\" class=\"y-pagination__prev\">\r\n {slots.prev ? (\r\n slots.prev(controls.value.prev)\r\n ) : (\r\n <YButton {...controls.value.prev}>\r\n {slots['prev-icon'] ? (\r\n slots['prev-icon']()\r\n ) : (\r\n <YIconPageControl type={'prev'}></YIconPageControl>\r\n )}\r\n </YButton>\r\n )}\r\n </li>\r\n {items.value.map((item, index) => {\r\n return (\r\n <li\r\n key={item.key}\r\n class={[\r\n 'y-pagination__item',\r\n { 'y-pagination__item--active': item.active },\r\n ]}\r\n >\r\n <YButton {...item.props}>\r\n {item.props.ellipsis\r\n ? slots.ellipsis\r\n ? slots.ellipsis()\r\n : '...'\r\n : item.page}\r\n </YButton>\r\n </li>\r\n );\r\n })}\r\n <li key=\"next\" class=\"y-pagination__next\">\r\n {slots.next ? (\r\n slots.next(controls.value.next)\r\n ) : (\r\n <YButton {...controls.value.next}>\r\n {slots['next-icon'] ? (\r\n slots['next-icon']()\r\n ) : (\r\n <YIconPageControl type={'next'}></YIconPageControl>\r\n )}\r\n </YButton>\r\n )}\r\n </li>\r\n {props.endButton && (\r\n <li key=\"last\" class=\"y-pagination__last\">\r\n {slots.last ? (\r\n slots.last(controls.value.last)\r\n ) : (\r\n <YButton {...controls.value.last}>\r\n {slots['last-icon'] ? (\r\n slots['last-icon']()\r\n ) : (\r\n <YIconPageControl type={'last'}></YIconPageControl>\r\n )}\r\n </YButton>\r\n )}\r\n </li>\r\n )}\r\n </ul>\r\n </nav>\r\n );\r\n });\r\n\r\n return {\r\n itemCount,\r\n page,\r\n refs,\r\n };\r\n },\r\n});\r\n\r\nexport type YPagination = InstanceType<typeof YPagination>;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -57,11 +57,11 @@ export const pressYSnackbarPropsOptions = propsFactory({
|
|
|
57
57
|
...defaultSnackbarTransition
|
|
58
58
|
})
|
|
59
59
|
},
|
|
60
|
-
/**
|
|
61
|
-
* @property Number
|
|
62
|
-
*
|
|
63
|
-
* The amount of time the snackbar should be displayed.
|
|
64
|
-
* @default 4000
|
|
60
|
+
/**
|
|
61
|
+
* @property Number
|
|
62
|
+
*
|
|
63
|
+
* The amount of time the snackbar should be displayed.
|
|
64
|
+
* @default 4000
|
|
65
65
|
*/
|
|
66
66
|
duration: {
|
|
67
67
|
type: Number,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YSnackbar.js","names":["computed","ref","toRef","watch","withModifiers","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","useModelDuplex","useRender","useTimer","animate","omit","bindClasses","chooseProps","defineComponent","propsFactory","pressYLayerProps","YLayer","YPlate","defaultSnackbarTransition","name","onBeforeEnter","direction","el","getAttribute","cache","style","getPropertyValue","setAttribute","setProperty","replace","onEnter","done","transform","duration","easing","fill","then","removeAttribute","pressYSnackbarPropsOptions","scrollStrategy","position","modelValue","type","Boolean","contentClasses","Array","String","Object","transition","default","Number","closeClickContent","YSnackbar","components","emits","props","setup","_ref","emit","slots","active","hover","start","stop","reset","dismiss","classes","computedContentClasses","boundClasses","computedInset","first","second","split","y","x","ret","proxyTransition","includes","neo","setTimer","isNaN","value","immediate","onClickContent","event","v","e","key","onMouseenter","onMouseleave"],"sources":["../../../src/components/snackbar/YSnackbar.tsx"],"sourcesContent":["import { computed, type PropType, ref, toRef, watch, withModifiers } from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { useTimer } from '@/composables/timing';\nimport { animate } from '@/util/animation';\nimport { omit } from '@/util/common';\nimport {\n bindClasses,\n chooseProps,\n defineComponent,\n propsFactory,\n} from '@/util/component';\n\nimport { pressYLayerProps, YLayer } from '../layer';\nimport { YPlate } from '../plate';\n\nimport './YSnackbar.scss';\n\nconst defaultSnackbarTransition = {\n name: 'y-snackbar',\n onBeforeEnter: (direction: 'top' | 'bottom') => (el: HTMLElement) => {\n if (!el.getAttribute('data-transform')) {\n const cache = el.style.getPropertyValue('transform');\n el.setAttribute('data-transform', cache);\n el.setAttribute('data-direction', direction);\n el.style.setProperty(\n 'transform',\n `${cache.replace(/translateY(.+)/, '')} translateY(${direction === 'top' ? '-' : ''}40px)`,\n );\n }\n },\n onEnter(el: HTMLElement, done: () => void) {\n const cache = el.getAttribute('data-transform');\n const direction = el.getAttribute('data-direction');\n if (!direction || !cache) {\n return;\n }\n animate(\n el,\n [\n {\n transform: `${cache.replace(/translateY(.+)/, `translateY(${direction === 'top' ? '-' : ''}40px)`)}`,\n },\n {\n transform: `${cache.replace(/translateY(.+)/, 'translateY(0)')}`,\n },\n ],\n {\n duration: 300,\n easing: 'cubic-bezier(0.25, 0.8, 0.5, 1)',\n fill: 'forwards',\n },\n ).then(() => {\n el.removeAttribute('data-transform');\n el.removeAttribute('data-direction');\n el.style.setProperty('transform', '');\n done();\n });\n },\n};\n\nexport const pressYSnackbarPropsOptions = propsFactory(\n {\n ...pressYLayerProps({\n scrollStrategy: 'none' as const,\n position: 'top center',\n }),\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n contentClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n transition: {\n type: [String, Object] as PropType<string | any>,\n default: () => ({ ...defaultSnackbarTransition }),\n },\n /**\n * @property Number\n *\n * The amount of time the snackbar should be displayed.\n * @default 4000\n */\n duration: {\n type: Number as PropType<number>,\n default: 4000,\n },\n closeClickContent: {\n type: Boolean,\n default: true,\n },\n },\n 'YSnackbar',\n);\n\nexport const YSnackbar = defineComponent({\n name: 'YSnackbar',\n components: { YPlate, YLayer },\n emits: ['update:modelValue', 'click'],\n props: {\n ...pressYSnackbarPropsOptions(),\n },\n setup(props, { emit, slots }) {\n const active = useModelDuplex(props);\n const hover = ref(false);\n const duration = toRef(props, 'duration');\n\n const { start, stop, reset } = useTimer(dismiss, duration);\n\n const classes = computed(() => {\n return {\n 'y-snackbar': true,\n };\n });\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n 'y-snackbar__display': true,\n };\n });\n\n const computedInset = computed(() => {\n const [first, second] = props.position?.split(' ') ?? [];\n let y = 'top';\n let x = 'left';\n if (second) {\n x = second;\n y = first;\n } else if (first === 'bottom') {\n y = 'bottom';\n } else {\n x = first;\n }\n const ret = {\n [x === 'center' ? 'left' : x]: x === 'center' ? `50%` : 0,\n [y]: 0,\n } as any;\n if (x === 'center') {\n ret.transform = 'translateX(-50%)';\n }\n return ret;\n });\n\n const proxyTransition = computed(() => {\n const { transition, position } = props;\n if (transition?.name === 'y-snackbar') {\n transition.onBeforeEnter = defaultSnackbarTransition.onBeforeEnter(\n position.includes('top') ? 'top' : 'bottom',\n );\n return { ...transition };\n }\n return props.transition;\n });\n\n watch(hover, (neo: boolean) => {\n if (neo) {\n stop();\n } else {\n setTimer();\n }\n });\n\n watch(\n () => props.duration,\n (neo) => {\n if (!Number.isNaN(neo) && active.value) {\n reset();\n setTimer();\n if (hover.value) {\n stop();\n }\n }\n },\n );\n\n watch(\n active,\n (neo: boolean) => {\n if (neo) {\n setTimer();\n } else {\n reset();\n }\n },\n { immediate: true },\n );\n\n function dismiss() {\n active.value = false;\n }\n\n function setTimer() {\n if (props.duration > 0) {\n start();\n }\n }\n\n function onClickContent(event: Event) {\n emit('click', event);\n if (props.closeClickContent) {\n active.value = false;\n }\n }\n\n useRender(() => {\n return (\n <YLayer\n ref=\"layer\"\n {...omit(chooseProps(props, YLayer.props), [\n 'scrim',\n 'transition',\n 'content-classes',\n 'classes',\n ])}\n modelValue={active.value}\n onUpdate:modelValue={(v) => {\n active.value = v;\n }}\n classes={classes.value}\n content-classes={computedContentClasses.value}\n scrim={false}\n content-styles={computedInset.value}\n transition={proxyTransition.value as any}\n >\n {{\n default: () => (\n <>\n <YPlate></YPlate>\n <div\n class=\"y-snackbar__content\"\n tabindex={0}\n onKeydown={(e) => {\n if (e.key === 'Enter') {\n onClickContent(e);\n }\n }}\n onClick={withModifiers(onClickContent, ['exact'])}\n onMouseenter={() => {\n hover.value = true;\n }}\n onMouseleave={() => {\n hover.value = false;\n }}\n >\n {slots.default?.()}\n </div>\n </>\n ),\n }}\n </YLayer>\n );\n });\n\n return {\n active,\n hover,\n classes,\n computedContentClasses,\n computedInset,\n proxyTransition,\n onClickContent,\n };\n },\n});\n\nexport type YSnackbar = InstanceType<typeof YSnackbar>;\n"],"mappings":"AAAA,SAASA,QAAQ,EAAiBC,GAAG,EAAEC,KAAK,EAAEC,KAAK,EAAEC,aAAa,EAAAC,QAAA,IAAAC,SAAA,EAAAC,WAAA,IAAAC,YAAA,EAAAC,UAAA,IAAAC,WAAA,QAAQ,KAAK;AAAC,SAEvEC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,QAAQ;AAAA,SACRC,OAAO;AAAA,SACPC,IAAI;AAAA,SAEXC,WAAW,EACXC,WAAW,EACXC,eAAe,EACfC,YAAY;AAAA,SAGLC,gBAAgB,EAAEC,MAAM;AAAA,SACxBC,MAAM;AAEf;AAEA,MAAMC,yBAAyB,GAAG;EAChCC,IAAI,EAAE,YAAY;EAClBC,aAAa,EAAGC,SAA2B,IAAMC,EAAe,IAAK;IACnE,IAAI,CAACA,EAAE,CAACC,YAAY,CAAC,gBAAgB,CAAC,EAAE;MACtC,MAAMC,KAAK,GAAGF,EAAE,CAACG,KAAK,CAACC,gBAAgB,CAAC,WAAW,CAAC;MACpDJ,EAAE,CAACK,YAAY,CAAC,gBAAgB,EAAEH,KAAK,CAAC;MACxCF,EAAE,CAACK,YAAY,CAAC,gBAAgB,EAAEN,SAAS,CAAC;MAC5CC,EAAE,CAACG,KAAK,CAACG,WAAW,CAClB,WAAW,EACX,GAAGJ,KAAK,CAACK,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,eAAeR,SAAS,KAAK,KAAK,GAAG,GAAG,GAAG,EAAE,OACrF,CAAC;IACH;EACF,CAAC;EACDS,OAAOA,CAACR,EAAe,EAAES,IAAgB,EAAE;IACzC,MAAMP,KAAK,GAAGF,EAAE,CAACC,YAAY,CAAC,gBAAgB,CAAC;IAC/C,MAAMF,SAAS,GAAGC,EAAE,CAACC,YAAY,CAAC,gBAAgB,CAAC;IACnD,IAAI,CAACF,SAAS,IAAI,CAACG,KAAK,EAAE;MACxB;IACF;IACAf,OAAO,CACLa,EAAE,EACF,CACE;MACEU,SAAS,EAAE,GAAGR,KAAK,CAACK,OAAO,CAAC,gBAAgB,EAAE,cAAcR,SAAS,KAAK,KAAK,GAAG,GAAG,GAAG,EAAE,OAAO,CAAC;IACpG,CAAC,EACD;MACEW,SAAS,EAAE,GAAGR,KAAK,CAACK,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC;IAChE,CAAC,CACF,EACD;MACEI,QAAQ,EAAE,GAAG;MACbC,MAAM,EAAE,iCAAiC;MACzCC,IAAI,EAAE;IACR,CACF,CAAC,CAACC,IAAI,CAAC,MAAM;MACXd,EAAE,CAACe,eAAe,CAAC,gBAAgB,CAAC;MACpCf,EAAE,CAACe,eAAe,CAAC,gBAAgB,CAAC;MACpCf,EAAE,CAACG,KAAK,CAACG,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;MACrCG,IAAI,CAAC,CAAC;IACR,CAAC,CAAC;EACJ;AACF,CAAC;AAED,OAAO,MAAMO,0BAA0B,GAAGxB,YAAY,CACpD;EACE,GAAGC,gBAAgB,CAAC;IAClBwB,cAAc,EAAE,MAAe;IAC/BC,QAAQ,EAAE;EACZ,CAAC,CAAC;EACFC,UAAU,EAAE;IACVC,IAAI,EAAEC;EACR,CAAC;EACDC,cAAc,EAAE;IACdF,IAAI,EAAE,CAACG,KAAK,EAAEC,MAAM,EAAEC,MAAM;EAG9B,CAAC;EACDC,UAAU,EAAE;IACVN,IAAI,EAAE,CAACI,MAAM,EAAEC,MAAM,CAA2B;IAChDE,OAAO,EAAEA,CAAA,MAAO;MAAE,GAAG/B;IAA0B,CAAC;EAClD,CAAC;EACD;AACJ;AACA;AACA;AACA;AACA;EACIe,QAAQ,EAAE;IACRS,IAAI,EAAEQ,MAA0B;IAChCD,OAAO,EAAE;EACX,CAAC;EACDE,iBAAiB,EAAE;IACjBT,IAAI,EAAEC,OAAO;IACbM,OAAO,EAAE;EACX;AACF,CAAC,EACD,WACF,CAAC;AAED,OAAO,MAAMG,SAAS,GAAGvC,eAAe,CAAC;EACvCM,IAAI,EAAE,WAAW;EACjBkC,UAAU,EAAE;IAAEpC,MAAM;IAAED;EAAO,CAAC;EAC9BsC,KAAK,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC;EACrCC,KAAK,EAAE;IACL,GAAGjB,0BAA0B,CAAC;EAChC,CAAC;EACDkB,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC1B,MAAMG,MAAM,GAAGtD,cAAc,CAACiD,KAAK,CAAC;IACpC,MAAMM,KAAK,GAAGjE,GAAG,CAAC,KAAK,CAAC;IACxB,MAAMqC,QAAQ,GAAGpC,KAAK,CAAC0D,KAAK,EAAE,UAAU,CAAC;IAEzC,MAAM;MAAEO,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAGxD,QAAQ,CAACyD,OAAO,EAAEhC,QAAQ,CAAC;IAE1D,MAAMiC,OAAO,GAAGvE,QAAQ,CAAC,MAAM;MAC7B,OAAO;QACL,YAAY,EAAE;MAChB,CAAC;IACH,CAAC,CAAC;IAEF,MAAMwE,sBAAsB,GAAGxE,QAAQ,CAA0B,MAAM;MACrE,MAAMyE,YAAY,GAAGzD,WAAW,CAAC4C,KAAK,CAACX,cAAc,CAAC;MACtD,OAAO;QACL,GAAGwB,YAAY;QACf,qBAAqB,EAAE;MACzB,CAAC;IACH,CAAC,CAAC;IAEF,MAAMC,aAAa,GAAG1E,QAAQ,CAAC,MAAM;MACnC,MAAM,CAAC2E,KAAK,EAAEC,MAAM,CAAC,GAAGhB,KAAK,CAACf,QAAQ,EAAEgC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;MACxD,IAAIC,CAAC,GAAG,KAAK;MACb,IAAIC,CAAC,GAAG,MAAM;MACd,IAAIH,MAAM,EAAE;QACVG,CAAC,GAAGH,MAAM;QACVE,CAAC,GAAGH,KAAK;MACX,CAAC,MAAM,IAAIA,KAAK,KAAK,QAAQ,EAAE;QAC7BG,CAAC,GAAG,QAAQ;MACd,CAAC,MAAM;QACLC,CAAC,GAAGJ,KAAK;MACX;MACA,MAAMK,GAAG,GAAG;QACV,CAACD,CAAC,KAAK,QAAQ,GAAG,MAAM,GAAGA,CAAC,GAAGA,CAAC,KAAK,QAAQ,GAAG,KAAK,GAAG,CAAC;QACzD,CAACD,CAAC,GAAG;MACP,CAAQ;MACR,IAAIC,CAAC,KAAK,QAAQ,EAAE;QAClBC,GAAG,CAAC3C,SAAS,GAAG,kBAAkB;MACpC;MACA,OAAO2C,GAAG;IACZ,CAAC,CAAC;IAEF,MAAMC,eAAe,GAAGjF,QAAQ,CAAC,MAAM;MACrC,MAAM;QAAEqD,UAAU;QAAER;MAAS,CAAC,GAAGe,KAAK;MACtC,IAAIP,UAAU,EAAE7B,IAAI,KAAK,YAAY,EAAE;QACrC6B,UAAU,CAAC5B,aAAa,GAAGF,yBAAyB,CAACE,aAAa,CAChEoB,QAAQ,CAACqC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,QACrC,CAAC;QACD,OAAO;UAAE,GAAG7B;QAAW,CAAC;MAC1B;MACA,OAAOO,KAAK,CAACP,UAAU;IACzB,CAAC,CAAC;IAEFlD,KAAK,CAAC+D,KAAK,EAAGiB,GAAY,IAAK;MAC7B,IAAIA,GAAG,EAAE;QACPf,IAAI,CAAC,CAAC;MACR,CAAC,MAAM;QACLgB,QAAQ,CAAC,CAAC;MACZ;IACF,CAAC,CAAC;IAEFjF,KAAK,CACH,MAAMyD,KAAK,CAACtB,QAAQ,EACnB6C,GAAG,IAAK;MACP,IAAI,CAAC5B,MAAM,CAAC8B,KAAK,CAACF,GAAG,CAAC,IAAIlB,MAAM,CAACqB,KAAK,EAAE;QACtCjB,KAAK,CAAC,CAAC;QACPe,QAAQ,CAAC,CAAC;QACV,IAAIlB,KAAK,CAACoB,KAAK,EAAE;UACflB,IAAI,CAAC,CAAC;QACR;MACF;IACF,CACF,CAAC;IAEDjE,KAAK,CACH8D,MAAM,EACLkB,GAAY,IAAK;MAChB,IAAIA,GAAG,EAAE;QACPC,QAAQ,CAAC,CAAC;MACZ,CAAC,MAAM;QACLf,KAAK,CAAC,CAAC;MACT;IACF,CAAC,EACD;MAAEkB,SAAS,EAAE;IAAK,CACpB,CAAC;IAED,SAASjB,OAAOA,CAAA,EAAG;MACjBL,MAAM,CAACqB,KAAK,GAAG,KAAK;IACtB;IAEA,SAASF,QAAQA,CAAA,EAAG;MAClB,IAAIxB,KAAK,CAACtB,QAAQ,GAAG,CAAC,EAAE;QACtB6B,KAAK,CAAC,CAAC;MACT;IACF;IAEA,SAASqB,cAAcA,CAACC,KAAY,EAAE;MACpC1B,IAAI,CAAC,OAAO,EAAE0B,KAAK,CAAC;MACpB,IAAI7B,KAAK,CAACJ,iBAAiB,EAAE;QAC3BS,MAAM,CAACqB,KAAK,GAAG,KAAK;MACtB;IACF;IAEA1E,SAAS,CAAC,MAAM;MACd,OAAAJ,YAAA,CAAAa,MAAA,EAAAX,WAAA;QAAA;MAAA,GAGQK,IAAI,CAACE,WAAW,CAAC2C,KAAK,EAAEvC,MAAM,CAACuC,KAAK,CAAC,EAAE,CACzC,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,SAAS,CACV,CAAC;QAAA,cACUK,MAAM,CAACqB,KAAK;QAAA,uBACFI,CAAC,IAAK;UAC1BzB,MAAM,CAACqB,KAAK,GAAGI,CAAC;QAClB,CAAC;QAAA,WACQnB,OAAO,CAACe,KAAK;QAAA,mBACLd,sBAAsB,CAACc,KAAK;QAAA,SACtC,KAAK;QAAA,kBACIZ,aAAa,CAACY,KAAK;QAAA,cACvBL,eAAe,CAACK;MAAK;QAG/BhC,OAAO,EAAEA,CAAA,KAAA9C,YAAA,CAAAF,SAAA,SAAAE,YAAA,CAAAc,MAAA,eAAAd,YAAA;UAAA;UAAA,YAKO,CAAC;UAAA,aACCmF,CAAC,IAAK;YAChB,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;cACrBJ,cAAc,CAACG,CAAC,CAAC;YACnB;UACF,CAAC;UAAA,WACQvF,aAAa,CAACoF,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC;UAAA,gBACnCK,CAAA,KAAM;YAClB3B,KAAK,CAACoB,KAAK,GAAG,IAAI;UACpB,CAAC;UAAA,gBACaQ,CAAA,KAAM;YAClB5B,KAAK,CAACoB,KAAK,GAAG,KAAK;UACrB;QAAC,IAEAtB,KAAK,CAACV,OAAO,GAAG,CAAC;MAGvB;IAIT,CAAC,CAAC;IAEF,OAAO;MACLW,MAAM;MACNC,KAAK;MACLK,OAAO;MACPC,sBAAsB;MACtBE,aAAa;MACbO,eAAe;MACfO;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"YSnackbar.js","names":["computed","ref","toRef","watch","withModifiers","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","useModelDuplex","useRender","useTimer","animate","omit","bindClasses","chooseProps","defineComponent","propsFactory","pressYLayerProps","YLayer","YPlate","defaultSnackbarTransition","name","onBeforeEnter","direction","el","getAttribute","cache","style","getPropertyValue","setAttribute","setProperty","replace","onEnter","done","transform","duration","easing","fill","then","removeAttribute","pressYSnackbarPropsOptions","scrollStrategy","position","modelValue","type","Boolean","contentClasses","Array","String","Object","transition","default","Number","closeClickContent","YSnackbar","components","emits","props","setup","_ref","emit","slots","active","hover","start","stop","reset","dismiss","classes","computedContentClasses","boundClasses","computedInset","first","second","split","y","x","ret","proxyTransition","includes","neo","setTimer","isNaN","value","immediate","onClickContent","event","v","e","key","onMouseenter","onMouseleave"],"sources":["../../../src/components/snackbar/YSnackbar.tsx"],"sourcesContent":["import { computed, type PropType, ref, toRef, watch, withModifiers } from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { useRender } from '@/composables/component';\r\nimport { useTimer } from '@/composables/timing';\r\nimport { animate } from '@/util/animation';\r\nimport { omit } from '@/util/common';\r\nimport {\r\n bindClasses,\r\n chooseProps,\r\n defineComponent,\r\n propsFactory,\r\n} from '@/util/component';\r\n\r\nimport { pressYLayerProps, YLayer } from '../layer';\r\nimport { YPlate } from '../plate';\r\n\r\nimport './YSnackbar.scss';\r\n\r\nconst defaultSnackbarTransition = {\r\n name: 'y-snackbar',\r\n onBeforeEnter: (direction: 'top' | 'bottom') => (el: HTMLElement) => {\r\n if (!el.getAttribute('data-transform')) {\r\n const cache = el.style.getPropertyValue('transform');\r\n el.setAttribute('data-transform', cache);\r\n el.setAttribute('data-direction', direction);\r\n el.style.setProperty(\r\n 'transform',\r\n `${cache.replace(/translateY(.+)/, '')} translateY(${direction === 'top' ? '-' : ''}40px)`,\r\n );\r\n }\r\n },\r\n onEnter(el: HTMLElement, done: () => void) {\r\n const cache = el.getAttribute('data-transform');\r\n const direction = el.getAttribute('data-direction');\r\n if (!direction || !cache) {\r\n return;\r\n }\r\n animate(\r\n el,\r\n [\r\n {\r\n transform: `${cache.replace(/translateY(.+)/, `translateY(${direction === 'top' ? '-' : ''}40px)`)}`,\r\n },\r\n {\r\n transform: `${cache.replace(/translateY(.+)/, 'translateY(0)')}`,\r\n },\r\n ],\r\n {\r\n duration: 300,\r\n easing: 'cubic-bezier(0.25, 0.8, 0.5, 1)',\r\n fill: 'forwards',\r\n },\r\n ).then(() => {\r\n el.removeAttribute('data-transform');\r\n el.removeAttribute('data-direction');\r\n el.style.setProperty('transform', '');\r\n done();\r\n });\r\n },\r\n};\r\n\r\nexport const pressYSnackbarPropsOptions = propsFactory(\r\n {\r\n ...pressYLayerProps({\r\n scrollStrategy: 'none' as const,\r\n position: 'top center',\r\n }),\r\n modelValue: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n contentClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n transition: {\r\n type: [String, Object] as PropType<string | any>,\r\n default: () => ({ ...defaultSnackbarTransition }),\r\n },\r\n /**\r\n * @property Number\r\n *\r\n * The amount of time the snackbar should be displayed.\r\n * @default 4000\r\n */\r\n duration: {\r\n type: Number as PropType<number>,\r\n default: 4000,\r\n },\r\n closeClickContent: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n 'YSnackbar',\r\n);\r\n\r\nexport const YSnackbar = defineComponent({\r\n name: 'YSnackbar',\r\n components: { YPlate, YLayer },\r\n emits: ['update:modelValue', 'click'],\r\n props: {\r\n ...pressYSnackbarPropsOptions(),\r\n },\r\n setup(props, { emit, slots }) {\r\n const active = useModelDuplex(props);\r\n const hover = ref(false);\r\n const duration = toRef(props, 'duration');\r\n\r\n const { start, stop, reset } = useTimer(dismiss, duration);\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-snackbar': 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 'y-snackbar__display': true,\r\n };\r\n });\r\n\r\n const computedInset = computed(() => {\r\n const [first, second] = props.position?.split(' ') ?? [];\r\n let y = 'top';\r\n let x = 'left';\r\n if (second) {\r\n x = second;\r\n y = first;\r\n } else if (first === 'bottom') {\r\n y = 'bottom';\r\n } else {\r\n x = first;\r\n }\r\n const ret = {\r\n [x === 'center' ? 'left' : x]: x === 'center' ? `50%` : 0,\r\n [y]: 0,\r\n } as any;\r\n if (x === 'center') {\r\n ret.transform = 'translateX(-50%)';\r\n }\r\n return ret;\r\n });\r\n\r\n const proxyTransition = computed(() => {\r\n const { transition, position } = props;\r\n if (transition?.name === 'y-snackbar') {\r\n transition.onBeforeEnter = defaultSnackbarTransition.onBeforeEnter(\r\n position.includes('top') ? 'top' : 'bottom',\r\n );\r\n return { ...transition };\r\n }\r\n return props.transition;\r\n });\r\n\r\n watch(hover, (neo: boolean) => {\r\n if (neo) {\r\n stop();\r\n } else {\r\n setTimer();\r\n }\r\n });\r\n\r\n watch(\r\n () => props.duration,\r\n (neo) => {\r\n if (!Number.isNaN(neo) && active.value) {\r\n reset();\r\n setTimer();\r\n if (hover.value) {\r\n stop();\r\n }\r\n }\r\n },\r\n );\r\n\r\n watch(\r\n active,\r\n (neo: boolean) => {\r\n if (neo) {\r\n setTimer();\r\n } else {\r\n reset();\r\n }\r\n },\r\n { immediate: true },\r\n );\r\n\r\n function dismiss() {\r\n active.value = false;\r\n }\r\n\r\n function setTimer() {\r\n if (props.duration > 0) {\r\n start();\r\n }\r\n }\r\n\r\n function onClickContent(event: Event) {\r\n emit('click', event);\r\n if (props.closeClickContent) {\r\n active.value = false;\r\n }\r\n }\r\n\r\n useRender(() => {\r\n return (\r\n <YLayer\r\n ref=\"layer\"\r\n {...omit(chooseProps(props, YLayer.props), [\r\n 'scrim',\r\n 'transition',\r\n 'content-classes',\r\n 'classes',\r\n ])}\r\n modelValue={active.value}\r\n onUpdate:modelValue={(v) => {\r\n active.value = v;\r\n }}\r\n classes={classes.value}\r\n content-classes={computedContentClasses.value}\r\n scrim={false}\r\n content-styles={computedInset.value}\r\n transition={proxyTransition.value as any}\r\n >\r\n {{\r\n default: () => (\r\n <>\r\n <YPlate></YPlate>\r\n <div\r\n class=\"y-snackbar__content\"\r\n tabindex={0}\r\n onKeydown={(e) => {\r\n if (e.key === 'Enter') {\r\n onClickContent(e);\r\n }\r\n }}\r\n onClick={withModifiers(onClickContent, ['exact'])}\r\n onMouseenter={() => {\r\n hover.value = true;\r\n }}\r\n onMouseleave={() => {\r\n hover.value = false;\r\n }}\r\n >\r\n {slots.default?.()}\r\n </div>\r\n </>\r\n ),\r\n }}\r\n </YLayer>\r\n );\r\n });\r\n\r\n return {\r\n active,\r\n hover,\r\n classes,\r\n computedContentClasses,\r\n computedInset,\r\n proxyTransition,\r\n onClickContent,\r\n };\r\n },\r\n});\r\n\r\nexport type YSnackbar = InstanceType<typeof YSnackbar>;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -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","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":"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","ignoreList":[]}
|
|
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';\r\n\r\nimport { kebabToCamel, toKebabCase } from '@/util/string';\r\n\r\nimport { useToggleScope } from './scope';\r\n\r\nexport function useModelDuplex(\r\n props: any,\r\n prop: string = 'modelValue',\r\n defaultValue?: any,\r\n getIn: (value?: any) => any = (v: any) => v,\r\n setOut: (value: any) => any = (v: any) => v,\r\n) {\r\n const vm = getCurrentInstance()!;\r\n const kebabProp = toKebabCase(prop);\r\n const property = kebabProp === prop ? kebabToCamel(prop) : prop;\r\n const txValue = ref(\r\n props[property] !== undefined ? props[property] : defaultValue,\r\n );\r\n\r\n const isDefinedProp = computed(() => {\r\n props[property];\r\n const registeredProps = vm.vnode.props;\r\n return (\r\n !!registeredProps &&\r\n (registeredProps.hasOwnProperty(kebabProp) ||\r\n registeredProps.hasOwnProperty(property)) &&\r\n (registeredProps.hasOwnProperty(`onUpdate:${kebabProp}`) ||\r\n registeredProps.hasOwnProperty(`onUpdate:${property}`))\r\n );\r\n });\r\n\r\n useToggleScope(\r\n () => !isDefinedProp.value,\r\n () => {\r\n watch(\r\n () => props[property],\r\n (value) => {\r\n txValue.value = value;\r\n },\r\n );\r\n },\r\n );\r\n\r\n const model = computed({\r\n get(): any {\r\n return getIn(isDefinedProp.value ? props[property] : txValue.value);\r\n },\r\n set(value) {\r\n const neo = setOut(value);\r\n const current = toRaw(\r\n isDefinedProp.value ? props[property] : txValue.value,\r\n );\r\n if (current === neo || getIn(current) === value) {\r\n return;\r\n }\r\n txValue.value = neo;\r\n vm?.emit(`update:${property}`, neo);\r\n },\r\n }) as any as Ref<any> & { readonly rxValue: any };\r\n\r\n Object.defineProperty(model, 'rxValue', {\r\n get: () => (isDefinedProp.value ? props[property] : txValue.value),\r\n });\r\n\r\n return model;\r\n}\r\n\r\nexport function useProvided<T>(props: any, prop: string, provided: Ref<T>) {\r\n const internal = useModelDuplex(props, prop, props[prop] ?? provided.value);\r\n\r\n watch(provided, (value) => {\r\n if (props[prop] == null) {\r\n internal.value = value;\r\n }\r\n });\r\n return internal;\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -34,7 +34,7 @@ export function useValidation(props, name) {
|
|
|
34
34
|
const cid = computed(() => props.name ?? uid);
|
|
35
35
|
const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);
|
|
36
36
|
const validateOn = computed(() => {
|
|
37
|
-
let value = props.validateOn || 'input';
|
|
37
|
+
let value = props.validateOn || form?.validateOn || 'input';
|
|
38
38
|
if (value === 'lazy') value = 'input,lazy';
|
|
39
39
|
const onSet = new Set(value?.split(',') ?? []);
|
|
40
40
|
return {
|
|
@@ -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","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":[]}
|
|
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 {\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 model = useModelDuplex(props, 'modelValue');\r\n const vm = getCurrentInstance()!;\r\n const form = useForm();\r\n const validating = ref(false);\r\n const errorResult = ref();\r\n const errors = ref<any[]>([]);\r\n\r\n const cid = computed(() => props.name ?? uid);\r\n\r\n const validationModel = computed(() =>\r\n props.validationValue === undefined ? model.value : props.validationValue,\r\n );\r\n\r\n const validateOn = computed(() => {\r\n let value = props.validateOn || form?.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 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 watch(\r\n [isError, errors],\r\n ([is, list]) => {\r\n form?.update(cid.value, is, list);\r\n },\r\n { immediate: true },\r\n );\r\n\r\n watch(\r\n () => props.validators,\r\n () => {\r\n resetValidation();\r\n },\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 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 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 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":[]}
|