yuyeon 0.3.7-beta.2 → 0.3.7-beta.4

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.
@@ -5,7 +5,7 @@ import { defineComponent, propsFactory } from "../../util/component/index.js";
5
5
  import "./YListItem.scss";
6
6
  export const pressYListItemProps = propsFactory({
7
7
  tag: {
8
- type: String,
8
+ type: [String, Object],
9
9
  default: 'div'
10
10
  },
11
11
  onClick: Function,
@@ -1 +1 @@
1
- {"version":3,"file":"YListItem.js","names":["computed","createVNode","_createVNode","useRender","pressThemePropsOptions","useLocalTheme","defineComponent","propsFactory","pressYListItemProps","tag","type","String","default","onClick","Function","disabled","Boolean","YListItem","name","props","emits","click","e","slots","Object","setup","_ref","emit","themeClasses","clickable","ElTag","value","leading","trailing"],"sources":["../../../src/components/list/YListItem.tsx"],"sourcesContent":["import { computed, SlotsType } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { pressThemePropsOptions, useLocalTheme } from '@/composables/theme';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\n\r\nimport './YListItem.scss';\r\n\r\nexport const pressYListItemProps = propsFactory(\r\n {\r\n tag: {\r\n type: String,\r\n default: 'div',\r\n },\r\n onClick: Function,\r\n disabled: Boolean,\r\n ...pressThemePropsOptions(),\r\n },\r\n 'YListItem',\r\n);\r\n\r\nexport const YListItem = defineComponent({\r\n name: 'YListItem',\r\n props: {\r\n ...pressYListItemProps(),\r\n },\r\n emits: {\r\n click: (e: MouseEvent) => true,\r\n },\r\n slots: Object as SlotsType<{\r\n default: any;\r\n leading: any;\r\n trailing: any;\r\n }>,\r\n setup(props, { slots, emit }) {\r\n const { themeClasses } = useLocalTheme(props);\r\n\r\n function onClick(e: MouseEvent) {\r\n emit('click', e);\r\n }\r\n\r\n const clickable = computed(() => {\r\n return !props.disabled && !!props.onClick;\r\n });\r\n\r\n useRender(() => {\r\n const ElTag = props.tag as keyof HTMLElementTagNameMap;\r\n return (\r\n <ElTag\r\n class={[\r\n 'y-list-item',\r\n {\r\n 'y-list-item--pointer': clickable.value,\r\n 'y-list-item--disabled': props.disabled,\r\n },\r\n themeClasses.value,\r\n ]}\r\n onClick={onClick}\r\n >\r\n {slots.leading && (\r\n <div class={'y-list-item__leading'}>{slots.leading()}</div>\r\n )}\r\n <div class={'y-list-item__content'}>{slots.default?.()}</div>\r\n {slots.trailing && (\r\n <div class={'y-list-item__trailing'}>{slots.trailing()}</div>\r\n )}\r\n </ElTag>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YListItem = InstanceType<typeof YListItem>;\r\n"],"mappings":"AAAA,SAASA,QAAQ,EAAAC,WAAA,IAAAC,YAAA,QAAmB,KAAK;AAAC,SAEjCC,SAAS;AAAA,SACTC,sBAAsB,EAAEC,aAAa;AAAA,SACrCC,eAAe,EAAEC,YAAY;AAEtC;AAEA,OAAO,MAAMC,mBAAmB,GAAGD,YAAY,CAC7C;EACEE,GAAG,EAAE;IACHC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,OAAO,EAAEC,QAAQ;EACjBC,QAAQ,EAAEC,OAAO;EACjB,GAAGZ,sBAAsB,CAAC;AAC5B,CAAC,EACD,WACF,CAAC;AAED,OAAO,MAAMa,SAAS,GAAGX,eAAe,CAAC;EACvCY,IAAI,EAAE,WAAW;EACjBC,KAAK,EAAE;IACL,GAAGX,mBAAmB,CAAC;EACzB,CAAC;EACDY,KAAK,EAAE;IACLC,KAAK,EAAGC,CAAa,IAAK;EAC5B,CAAC;EACDC,KAAK,EAAEC,MAIL;EACFC,KAAKA,CAACN,KAAK,EAAAO,IAAA,EAAmB;IAAA,IAAjB;MAAEH,KAAK;MAAEI;IAAK,CAAC,GAAAD,IAAA;IAC1B,MAAM;MAAEE;IAAa,CAAC,GAAGvB,aAAa,CAACc,KAAK,CAAC;IAE7C,SAASN,OAAOA,CAACS,CAAa,EAAE;MAC9BK,IAAI,CAAC,OAAO,EAAEL,CAAC,CAAC;IAClB;IAEA,MAAMO,SAAS,GAAG7B,QAAQ,CAAC,MAAM;MAC/B,OAAO,CAACmB,KAAK,CAACJ,QAAQ,IAAI,CAAC,CAACI,KAAK,CAACN,OAAO;IAC3C,CAAC,CAAC;IAEFV,SAAS,CAAC,MAAM;MACd,MAAM2B,KAAK,GAAGX,KAAK,CAACV,GAAkC;MACtD,OAAAP,YAAA,CAAA4B,KAAA;QAAA,SAEW,CACL,aAAa,EACb;UACE,sBAAsB,EAAED,SAAS,CAACE,KAAK;UACvC,uBAAuB,EAAEZ,KAAK,CAACJ;QACjC,CAAC,EACDa,YAAY,CAACG,KAAK,CACnB;QAAA,WACQlB;MAAO;QAAAD,OAAA,EAAAA,CAAA,MAEfW,KAAK,CAACS,OAAO,IAAA9B,YAAA;UAAA,SACA;QAAsB,IAAGqB,KAAK,CAACS,OAAO,CAAC,CAAC,EACrD,EAAA9B,YAAA;UAAA,SACW;QAAsB,IAAGqB,KAAK,CAACX,OAAO,GAAG,CAAC,IACrDW,KAAK,CAACU,QAAQ,IAAA/B,YAAA;UAAA,SACD;QAAuB,IAAGqB,KAAK,CAACU,QAAQ,CAAC,CAAC,EACvD;MAAA;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"YListItem.js","names":["computed","createVNode","_createVNode","useRender","pressThemePropsOptions","useLocalTheme","defineComponent","propsFactory","pressYListItemProps","tag","type","String","Object","default","onClick","Function","disabled","Boolean","YListItem","name","props","emits","click","e","slots","setup","_ref","emit","themeClasses","clickable","ElTag","value","leading","trailing"],"sources":["../../../src/components/list/YListItem.tsx"],"sourcesContent":["import { computed, SlotsType } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { pressThemePropsOptions, useLocalTheme } from '@/composables/theme';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\n\r\nimport './YListItem.scss';\r\n\r\nexport const pressYListItemProps = propsFactory(\r\n {\r\n tag: {\r\n type: [String, Object],\r\n default: 'div',\r\n },\r\n onClick: Function,\r\n disabled: Boolean,\r\n ...pressThemePropsOptions(),\r\n },\r\n 'YListItem',\r\n);\r\n\r\nexport const YListItem = defineComponent({\r\n name: 'YListItem',\r\n props: {\r\n ...pressYListItemProps(),\r\n },\r\n emits: {\r\n click: (e: MouseEvent) => true,\r\n },\r\n slots: Object as SlotsType<{\r\n default: any;\r\n leading: any;\r\n trailing: any;\r\n }>,\r\n setup(props, { slots, emit }) {\r\n const { themeClasses } = useLocalTheme(props);\r\n\r\n function onClick(e: MouseEvent) {\r\n emit('click', e);\r\n }\r\n\r\n const clickable = computed(() => {\r\n return !props.disabled && !!props.onClick;\r\n });\r\n\r\n useRender(() => {\r\n const ElTag = props.tag as keyof HTMLElementTagNameMap;\r\n return (\r\n <ElTag\r\n class={[\r\n 'y-list-item',\r\n {\r\n 'y-list-item--pointer': clickable.value,\r\n 'y-list-item--disabled': props.disabled,\r\n },\r\n themeClasses.value,\r\n ]}\r\n onClick={onClick}\r\n >\r\n {slots.leading && (\r\n <div class={'y-list-item__leading'}>{slots.leading()}</div>\r\n )}\r\n <div class={'y-list-item__content'}>{slots.default?.()}</div>\r\n {slots.trailing && (\r\n <div class={'y-list-item__trailing'}>{slots.trailing()}</div>\r\n )}\r\n </ElTag>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YListItem = InstanceType<typeof YListItem>;\r\n"],"mappings":"AAAA,SAASA,QAAQ,EAAAC,WAAA,IAAAC,YAAA,QAAmB,KAAK;AAAC,SAEjCC,SAAS;AAAA,SACTC,sBAAsB,EAAEC,aAAa;AAAA,SACrCC,eAAe,EAAEC,YAAY;AAEtC;AAEA,OAAO,MAAMC,mBAAmB,GAAGD,YAAY,CAC7C;EACEE,GAAG,EAAE;IACHC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX,CAAC;EACDC,OAAO,EAAEC,QAAQ;EACjBC,QAAQ,EAAEC,OAAO;EACjB,GAAGb,sBAAsB,CAAC;AAC5B,CAAC,EACD,WACF,CAAC;AAED,OAAO,MAAMc,SAAS,GAAGZ,eAAe,CAAC;EACvCa,IAAI,EAAE,WAAW;EACjBC,KAAK,EAAE;IACL,GAAGZ,mBAAmB,CAAC;EACzB,CAAC;EACDa,KAAK,EAAE;IACLC,KAAK,EAAGC,CAAa,IAAK;EAC5B,CAAC;EACDC,KAAK,EAAEZ,MAIL;EACFa,KAAKA,CAACL,KAAK,EAAAM,IAAA,EAAmB;IAAA,IAAjB;MAAEF,KAAK;MAAEG;IAAK,CAAC,GAAAD,IAAA;IAC1B,MAAM;MAAEE;IAAa,CAAC,GAAGvB,aAAa,CAACe,KAAK,CAAC;IAE7C,SAASN,OAAOA,CAACS,CAAa,EAAE;MAC9BI,IAAI,CAAC,OAAO,EAAEJ,CAAC,CAAC;IAClB;IAEA,MAAMM,SAAS,GAAG7B,QAAQ,CAAC,MAAM;MAC/B,OAAO,CAACoB,KAAK,CAACJ,QAAQ,IAAI,CAAC,CAACI,KAAK,CAACN,OAAO;IAC3C,CAAC,CAAC;IAEFX,SAAS,CAAC,MAAM;MACd,MAAM2B,KAAK,GAAGV,KAAK,CAACX,GAAkC;MACtD,OAAAP,YAAA,CAAA4B,KAAA;QAAA,SAEW,CACL,aAAa,EACb;UACE,sBAAsB,EAAED,SAAS,CAACE,KAAK;UACvC,uBAAuB,EAAEX,KAAK,CAACJ;QACjC,CAAC,EACDY,YAAY,CAACG,KAAK,CACnB;QAAA,WACQjB;MAAO;QAAAD,OAAA,EAAAA,CAAA,MAEfW,KAAK,CAACQ,OAAO,IAAA9B,YAAA;UAAA,SACA;QAAsB,IAAGsB,KAAK,CAACQ,OAAO,CAAC,CAAC,EACrD,EAAA9B,YAAA;UAAA,SACW;QAAsB,IAAGsB,KAAK,CAACX,OAAO,GAAG,CAAC,IACrDW,KAAK,CAACS,QAAQ,IAAA/B,YAAA;UAAA,SACD;QAAuB,IAAGsB,KAAK,CAACS,QAAQ,CAAC,CAAC,EACvD;MAAA;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { computed, getCurrentInstance, ref, toRef, watch, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
1
+ import { computed, getCurrentInstance, ref, toRef, watch, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from 'vue';
2
2
  import { useModelDuplex } from "../../composables/communication.js";
3
3
  import { useRender } from "../../composables/component.js";
4
4
  import { pressPolyTransitionPropsOptions } from "../../composables/transition.js";
@@ -9,7 +9,7 @@ import { pressYLayerProps, YLayer } from "../layer/index.js";
9
9
  import { useDelay } from "../layer/active-delay.js";
10
10
  import { useActiveStack } from "../layer/active-stack.js";
11
11
  import "./YMenu.scss";
12
- const NAME = "YMenu";
12
+ const NAME = 'YMenu';
13
13
  const CLASS_NAME = toKebabCase(NAME);
14
14
  export const YMenuPropOptions = {
15
15
  menuClasses: {
@@ -28,8 +28,8 @@ export const YMenuPropOptions = {
28
28
  default: true
29
29
  },
30
30
  ...pressYLayerProps({
31
- coordinateStrategy: "levitation",
32
- scrollStrategy: "reposition"
31
+ coordinateStrategy: 'levitation',
32
+ scrollStrategy: 'reposition'
33
33
  }),
34
34
  preventCloseBubble: Boolean
35
35
  };
@@ -42,12 +42,12 @@ export const YMenu = defineComponent({
42
42
  props: {
43
43
  ...YMenuPropOptions,
44
44
  ...pressPolyTransitionPropsOptions({
45
- transition: "fade"
45
+ transition: 'fade'
46
46
  })
47
47
  },
48
- emits: ["update:modelValue", "afterLeave", "hoverContent"],
48
+ emits: ['update:modelValue', 'afterLeave', 'hoverContent'],
49
49
  slots: Object,
50
- expose: ["layer$", "baseEl"],
50
+ expose: ['layer$', 'baseEl'],
51
51
  setup(props, _ref) {
52
52
  let {
53
53
  slots,
@@ -60,7 +60,7 @@ export const YMenu = defineComponent({
60
60
  const boundClasses = bindClasses(props.menuClasses);
61
61
  return {
62
62
  ...boundClasses,
63
- "y-menu": true
63
+ 'y-menu': true
64
64
  };
65
65
  });
66
66
  const active = useModelDuplex(props);
@@ -69,7 +69,7 @@ export const YMenu = defineComponent({
69
69
  const {
70
70
  children,
71
71
  parent
72
- } = useActiveStack(layer$, active, toRef(props, "preventCloseBubble"));
72
+ } = useActiveStack(layer$, active, toRef(props, 'preventCloseBubble'));
73
73
  const {
74
74
  startOpenDelay,
75
75
  startCloseDelay
@@ -91,7 +91,7 @@ export const YMenu = defineComponent({
91
91
  }
92
92
  }
93
93
  watch(hovered, value => {
94
- emit("hoverContent", value);
94
+ emit('hoverContent', value);
95
95
  if (!value) {
96
96
  startCloseDelay();
97
97
  }
@@ -113,7 +113,7 @@ export const YMenu = defineComponent({
113
113
  if (props.closeCondition === false) {
114
114
  return;
115
115
  }
116
- if (typeof props.closeCondition === "function") {
116
+ if (typeof props.closeCondition === 'function') {
117
117
  if (props.closeCondition(e) === false) {
118
118
  active.value = false;
119
119
  return;
@@ -131,20 +131,20 @@ export const YMenu = defineComponent({
131
131
  }
132
132
  }
133
133
  function bindHover(el) {
134
- el.addEventListener("mouseenter", onMouseenter);
135
- el.addEventListener("mouseleave", onMouseleave);
134
+ el.addEventListener('mouseenter', onMouseenter);
135
+ el.addEventListener('mouseleave', onMouseleave);
136
136
  }
137
137
  function unbindHover(el) {
138
- el.removeEventListener("mouseenter", onMouseenter);
139
- el.removeEventListener("mouseleave", onMouseleave);
138
+ el.removeEventListener('mouseenter', onMouseenter);
139
+ el.removeEventListener('mouseleave', onMouseleave);
140
140
  }
141
141
  watch(() => layer$.value?.baseEl, (neo, old) => {
142
142
  if (neo) {
143
143
  bindHover(neo);
144
- neo.addEventListener("click", onClick);
144
+ neo.addEventListener('click', onClick);
145
145
  } else if (old) {
146
146
  unbindHover(old);
147
- old.removeEventListener("click", onClick);
147
+ old.removeEventListener('click', onClick);
148
148
  }
149
149
  }, {
150
150
  immediate: true
@@ -163,17 +163,17 @@ export const YMenu = defineComponent({
163
163
  baseEl
164
164
  });
165
165
  useRender(() => {
166
- return _createVNode(_Fragment, null, [_createVNode(YLayer, _mergeProps({
166
+ return _createVNode(YLayer, _mergeProps({
167
167
  "ref": layer$,
168
168
  "transition": props.transition,
169
169
  "onClick:complement": onComplementClick,
170
- "onAfterLeave": () => emit("afterLeave")
170
+ "onAfterLeave": () => emit('afterLeave')
171
171
  }, {
172
172
  ...chooseProps(props, YLayer.props),
173
173
  classes: classes.value,
174
174
  scrim: false,
175
175
  contentClasses: {
176
- "y-menu__content": true,
176
+ 'y-menu__content': true,
177
177
  ...computedContentClasses.value
178
178
  }
179
179
  }, {
@@ -184,7 +184,7 @@ export const YMenu = defineComponent({
184
184
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
185
185
  args[_key] = arguments[_key];
186
186
  }
187
- return _createVNode(_Fragment, null, [slots.default?.(...args) ?? ""]);
187
+ return _createVNode(_Fragment, null, [slots.default?.(...args) ?? '']);
188
188
  },
189
189
  base: function () {
190
190
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
@@ -192,7 +192,7 @@ export const YMenu = defineComponent({
192
192
  }
193
193
  return slots.base?.(...args);
194
194
  }
195
- })]);
195
+ });
196
196
  });
197
197
  return {
198
198
  layer$,
@@ -1 +1 @@
1
- {"version":3,"file":"YMenu.js","names":["computed","getCurrentInstance","ref","toRef","watch","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","useModelDuplex","useRender","pressPolyTransitionPropsOptions","bindClasses","chooseProps","defineComponent","hasElementMouseEvent","toKebabCase","pressYLayerProps","YLayer","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","scrollStrategy","preventCloseBubble","YMenu","name","props","transition","emits","slots","expose","setup","_ref","emit","vm","layer$","classes","boundClasses","active","hovered","value","finish","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","disabled","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","immediate","computedContentClasses","contentClasses","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import {\r\n\tcomputed,\r\n\tgetCurrentInstance,\r\n\ttype PropType,\r\n\tref,\r\n\ttype SlotsType,\r\n\ttoRef,\r\n\twatch,\r\n} from \"vue\";\r\n\r\nimport { useModelDuplex } from \"@/composables/communication\";\r\nimport { useRender } from \"@/composables/component\";\r\nimport { pressPolyTransitionPropsOptions } from \"@/composables/transition\";\r\nimport { bindClasses, chooseProps, defineComponent } from \"@/util/component\";\r\nimport { hasElementMouseEvent } from \"@/util/dom\";\r\nimport { toKebabCase } from \"@/util/string\";\r\n\r\nimport { pressYLayerProps, YLayer } from \"../layer\";\r\nimport { useDelay } from \"../layer/active-delay\";\r\nimport { useActiveStack } from \"../layer/active-stack\";\r\n\r\nimport \"./YMenu.scss\";\r\n\r\nconst NAME = \"YMenu\";\r\nconst CLASS_NAME = toKebabCase(NAME);\r\n\r\nexport const YMenuPropOptions = {\r\n\tmenuClasses: {\r\n\t\ttype: [Array, String, Object] as PropType<\r\n\t\t\tstring[] | string | Record<string, any>\r\n\t\t>,\r\n\t},\r\n\topenOnClickBase: {\r\n\t\ttype: Boolean as PropType<boolean>,\r\n\t\tdefault: true,\r\n\t},\r\n\tcloseCondition: {\r\n\t\ttype: [Boolean, Function],\r\n\t\tdefault: undefined,\r\n\t},\r\n\tpreventClip: {\r\n\t\ttype: Boolean as PropType<boolean>,\r\n\t\tdefault: true,\r\n\t},\r\n\t...pressYLayerProps({\r\n\t\tcoordinateStrategy: \"levitation\" as const,\r\n\t\tscrollStrategy: \"reposition\" as const,\r\n\t}),\r\n\tpreventCloseBubble: Boolean as PropType<boolean>,\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YMenu = defineComponent({\r\n\tname: NAME,\r\n\tprops: {\r\n\t\t...YMenuPropOptions,\r\n\t\t...pressPolyTransitionPropsOptions({\r\n\t\t\ttransition: \"fade\",\r\n\t\t}),\r\n\t},\r\n\temits: [\"update:modelValue\", \"afterLeave\", \"hoverContent\"],\r\n\tslots: Object as SlotsType<{\r\n\t\tdefault: any;\r\n\t\tbase: any;\r\n\t}>,\r\n\texpose: [\"layer$\", \"baseEl\"],\r\n\tsetup(props, { slots, emit, expose }) {\r\n\t\tconst vm = getCurrentInstance();\r\n\t\tconst layer$ = ref<typeof YLayer>();\r\n\r\n\t\tconst classes = computed(() => {\r\n\t\t\tconst boundClasses = bindClasses(props.menuClasses);\r\n\t\t\treturn {\r\n\t\t\t\t...boundClasses,\r\n\t\t\t\t\"y-menu\": true,\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst active = useModelDuplex(props);\r\n\t\tconst hovered = computed(() => !!layer$.value?.hovered);\r\n\t\tconst finish = computed(() => !!layer$.value?.finish);\r\n\t\tconst { children, parent } = useActiveStack(\r\n\t\t\tlayer$,\r\n\t\t\tactive,\r\n\t\t\ttoRef(props, \"preventCloseBubble\"),\r\n\t\t);\r\n\t\tconst { startOpenDelay, startCloseDelay } = useDelay(\r\n\t\t\tprops,\r\n\t\t\t(changeActive) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\t!changeActive &&\r\n\t\t\t\t\tprops.openOnHover &&\r\n\t\t\t\t\t!hovered.value &&\r\n\t\t\t\t\tchildren.value.length === 0\r\n\t\t\t\t) {\r\n\t\t\t\t\tactive.value = false;\r\n\t\t\t\t} else if (changeActive) {\r\n\t\t\t\t\tactive.value = true;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\tfunction onMouseenter(e: MouseEvent) {\r\n\t\t\tif (props.openOnHover) {\r\n\t\t\t\tstartOpenDelay();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onMouseleave(e: MouseEvent) {\r\n\t\t\tif (props.openOnHover) {\r\n\t\t\t\tstartCloseDelay();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twatch(hovered, (value) => {\r\n\t\t\temit(\"hoverContent\", value);\r\n\t\t\tif (!value) {\r\n\t\t\t\tstartCloseDelay();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfunction onClick(e: MouseEvent) {\r\n\t\t\te.stopPropagation();\r\n\t\t\tif (!props.openOnClickBase) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst currentActive = active.value;\r\n\t\t\tif (!props.disabled) {\r\n\t\t\t\tif (props.openOnHover && finish.value && currentActive) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tactive.value = !currentActive;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onComplementClick(e: Event) {\r\n\t\t\tif (props.closeCondition === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (typeof props.closeCondition === \"function\") {\r\n\t\t\t\tif (props.closeCondition(e) === false) {\r\n\t\t\t\t\tactive.value = false;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (active.value) {\r\n\t\t\t\tif (children.value.length === 0) {\r\n\t\t\t\t\tactive.value = false;\r\n\t\t\t\t}\r\n\t\t\t\tconst parentContent = parent?.$el.value?.content$;\r\n\t\t\t\tconst parentModal = parent?.$el.value?.modal;\r\n\t\t\t\tif (\r\n\t\t\t\t\t!(parentContent && !hasElementMouseEvent(e, parentContent)) &&\r\n\t\t\t\t\t!parentModal &&\r\n\t\t\t\t\t!props.preventCloseBubble\r\n\t\t\t\t) {\r\n\t\t\t\t\tparent?.clear();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction bindHover(el: HTMLElement) {\r\n\t\t\tel.addEventListener(\"mouseenter\", onMouseenter);\r\n\t\t\tel.addEventListener(\"mouseleave\", onMouseleave);\r\n\t\t}\r\n\r\n\t\tfunction unbindHover(el: HTMLElement) {\r\n\t\t\tel.removeEventListener(\"mouseenter\", onMouseenter);\r\n\t\t\tel.removeEventListener(\"mouseleave\", onMouseleave);\r\n\t\t}\r\n\r\n\t\twatch(\r\n\t\t\t() => layer$.value?.baseEl,\r\n\t\t\t(neo, old) => {\r\n\t\t\t\tif (neo) {\r\n\t\t\t\t\tbindHover(neo);\r\n\t\t\t\t\tneo.addEventListener(\"click\", onClick);\r\n\t\t\t\t} else if (old) {\r\n\t\t\t\t\tunbindHover(old);\r\n\t\t\t\t\told.removeEventListener(\"click\", onClick);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\timmediate: true,\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\tconst computedContentClasses = computed<Record<string, boolean>>(() => {\r\n\t\t\tconst boundClasses = bindClasses(props.contentClasses);\r\n\t\t\treturn {\r\n\t\t\t\t...boundClasses,\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst baseEl = computed(() => {\r\n\t\t\treturn layer$.value?.baseEl;\r\n\t\t});\r\n\r\n\t\texpose({\r\n\t\t\tlayer$,\r\n\t\t\tbaseEl,\r\n\t\t});\r\n\r\n\t\tuseRender(() => {\r\n\t\t\treturn (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<YLayer\r\n\t\t\t\t\t\tref={layer$}\r\n\t\t\t\t\t\ttransition={props.transition}\r\n\t\t\t\t\t\tonClick:complement={onComplementClick}\r\n\t\t\t\t\t\tonAfterLeave={() => emit(\"afterLeave\")}\r\n\t\t\t\t\t\t{...{\r\n\t\t\t\t\t\t\t...chooseProps(props, YLayer.props),\r\n\t\t\t\t\t\t\tclasses: classes.value,\r\n\t\t\t\t\t\t\tscrim: false,\r\n\t\t\t\t\t\t\tcontentClasses: {\r\n\t\t\t\t\t\t\t\t\"y-menu__content\": true,\r\n\t\t\t\t\t\t\t\t...computedContentClasses.value,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tv-model={active.value}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\tdefault: (...args: any) => {\r\n\t\t\t\t\t\t\t\treturn <>{slots.default?.(...args) ?? \"\"}</>;\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbase: (...args: any[]) => slots.base?.(...args),\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t</YLayer>\r\n\t\t\t\t</>\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tlayer$,\r\n\t\t\tbaseEl,\r\n\t\t\tclasses,\r\n\t\t\tchildren,\r\n\t\t\tparent,\r\n\t\t\tactive,\r\n\t\t\thovered,\r\n\t\t};\r\n\t},\r\n});\r\n\r\nexport type YMenu = InstanceType<typeof YMenu>;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"YMenu.js","names":["computed","getCurrentInstance","ref","toRef","watch","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","useModelDuplex","useRender","pressPolyTransitionPropsOptions","bindClasses","chooseProps","defineComponent","hasElementMouseEvent","toKebabCase","pressYLayerProps","YLayer","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","scrollStrategy","preventCloseBubble","YMenu","name","props","transition","emits","slots","expose","setup","_ref","emit","vm","layer$","classes","boundClasses","active","hovered","value","finish","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","disabled","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","immediate","computedContentClasses","contentClasses","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import {\r\n computed,\r\n getCurrentInstance,\r\n type PropType,\r\n ref,\r\n type SlotsType,\r\n toRef,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { useRender } from '@/composables/component';\r\nimport { pressPolyTransitionPropsOptions } from '@/composables/transition';\r\nimport { bindClasses, chooseProps, defineComponent } from '@/util/component';\r\nimport { hasElementMouseEvent } from '@/util/dom';\r\nimport { toKebabCase } from '@/util/string';\r\n\r\nimport { pressYLayerProps, YLayer } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { useActiveStack } from '../layer/active-stack';\r\n\r\nimport './YMenu.scss';\r\n\r\nconst NAME = 'YMenu';\r\nconst CLASS_NAME = toKebabCase(NAME);\r\n\r\nexport const YMenuPropOptions = {\r\n menuClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n openOnClickBase: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n closeCondition: {\r\n type: [Boolean, Function],\r\n default: undefined,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation' as const,\r\n scrollStrategy: 'reposition' as const,\r\n }),\r\n preventCloseBubble: Boolean as PropType<boolean>,\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YMenu = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YMenuPropOptions,\r\n ...pressPolyTransitionPropsOptions({\r\n transition: 'fade',\r\n }),\r\n },\r\n emits: ['update:modelValue', 'afterLeave', 'hoverContent'],\r\n slots: Object as SlotsType<{\r\n default: any;\r\n base: any;\r\n }>,\r\n expose: ['layer$', 'baseEl'],\r\n setup(props, { slots, emit, expose }) {\r\n const vm = getCurrentInstance();\r\n const layer$ = ref<typeof YLayer>();\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.menuClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-menu': true,\r\n };\r\n });\r\n\r\n const active = useModelDuplex(props);\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n const finish = computed(() => !!layer$.value?.finish);\r\n const { children, parent } = useActiveStack(\r\n layer$,\r\n active,\r\n toRef(props, 'preventCloseBubble'),\r\n );\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (\r\n !changeActive &&\r\n props.openOnHover &&\r\n !hovered.value &&\r\n children.value.length === 0\r\n ) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n emit('hoverContent', value);\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function onClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n if (!props.openOnClickBase) {\r\n return;\r\n }\r\n const currentActive = active.value;\r\n if (!props.disabled) {\r\n if (props.openOnHover && finish.value && currentActive) {\r\n return;\r\n }\r\n active.value = !currentActive;\r\n }\r\n }\r\n\r\n function onComplementClick(e: Event) {\r\n if (props.closeCondition === false) {\r\n return;\r\n }\r\n if (typeof props.closeCondition === 'function') {\r\n if (props.closeCondition(e) === false) {\r\n active.value = false;\r\n return;\r\n }\r\n }\r\n if (active.value) {\r\n if (children.value.length === 0) {\r\n active.value = false;\r\n }\r\n const parentContent = parent?.$el.value?.content$;\r\n const parentModal = parent?.$el.value?.modal;\r\n if (\r\n !(parentContent && !hasElementMouseEvent(e, parentContent)) &&\r\n !parentModal &&\r\n !props.preventCloseBubble\r\n ) {\r\n parent?.clear();\r\n }\r\n }\r\n }\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener('mouseenter', onMouseenter);\r\n el.addEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener('mouseenter', onMouseenter);\r\n el.removeEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n neo.addEventListener('click', onClick);\r\n } else if (old) {\r\n unbindHover(old);\r\n old.removeEventListener('click', onClick);\r\n }\r\n },\r\n {\r\n immediate: true,\r\n },\r\n );\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n return {\r\n ...boundClasses,\r\n };\r\n });\r\n\r\n const baseEl = computed(() => {\r\n return layer$.value?.baseEl;\r\n });\r\n\r\n expose({\r\n layer$,\r\n baseEl,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <YLayer\r\n ref={layer$}\r\n transition={props.transition}\r\n onClick:complement={onComplementClick}\r\n onAfterLeave={() => emit('afterLeave')}\r\n {...{\r\n ...chooseProps(props, YLayer.props),\r\n classes: classes.value,\r\n scrim: false,\r\n contentClasses: {\r\n 'y-menu__content': true,\r\n ...computedContentClasses.value,\r\n },\r\n }}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return <>{slots.default?.(...args) ?? ''}</>;\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n );\r\n });\r\n\r\n return {\r\n layer$,\r\n baseEl,\r\n classes,\r\n children,\r\n parent,\r\n active,\r\n hovered,\r\n };\r\n },\r\n});\r\n\r\nexport type YMenu = InstanceType<typeof YMenu>;\r\n"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@ import { useModelDuplex } from "../../composables/communication.js";
3
3
  import { useRender } from "../../composables/component.js";
4
4
  import { useRefs } from "../../composables/ref.js";
5
5
  import { useResizeObserver } from "../../composables/resize-observer.js";
6
- import { getRangeArr } from "../../util/common.js";
6
+ import { clamp, getRangeArr } from "../../util/common.js";
7
7
  import { defineComponent, propsFactory } from "../../util/component/index.js";
8
8
  import { toStyleSizeValue } from "../../util/ui.js";
9
9
  import { YButton } from "../button/index.js";
@@ -26,7 +26,9 @@ export const pressYPaginationProps = propsFactory({
26
26
  },
27
27
  totalVisible: [Number, String],
28
28
  maxVisible: [Number, String],
29
- showEndButton: Boolean,
29
+ endButton: {
30
+ type: [Boolean, Number]
31
+ },
30
32
  gap: {
31
33
  type: [String, Number],
32
34
  default: 4
@@ -81,7 +83,7 @@ export const YPagination = defineComponent({
81
83
  }
82
84
  });
83
85
  function calcItemCount(listWidth, itemWidth) {
84
- const fixedCount = props.showEndButton ? 5 : 3;
86
+ const fixedCount = props.endButton ? 5 : 3;
85
87
  const gap = +(props.gap ?? 4);
86
88
  const fixedWidth = (itemWidth + gap) * fixedCount - gap;
87
89
  const count = Math.max(0, Math.floor(+((listWidth - fixedWidth) / (itemWidth + gap)).toFixed(2)));
@@ -111,8 +113,17 @@ export const YPagination = defineComponent({
111
113
  variation: props.buttonVariation,
112
114
  onClick: e => {
113
115
  e.preventDefault();
114
- page.value = 1;
115
- emit('change', 1, 'first');
116
+ let to = page.value;
117
+ if (props.endButton === true) {
118
+ to = 1;
119
+ } else {
120
+ const del = Number(props.endButton);
121
+ if (!Number.isNaN(del)) {
122
+ to = clamp(to - del, 1, +length.value);
123
+ }
124
+ }
125
+ page.value = to;
126
+ emit('change', to, 'first');
116
127
  }
117
128
  },
118
129
  prev: {
@@ -140,8 +151,13 @@ export const YPagination = defineComponent({
140
151
  variation: props.buttonVariation,
141
152
  onClick: e => {
142
153
  e.preventDefault();
143
- const to = +length.value;
144
- page.value = +length.value;
154
+ let to = page.value;
155
+ if (props.endButton === true) {
156
+ to = +length.value;
157
+ } else if (typeof props.endButton === 'number') {
158
+ to = clamp(to + props.endButton, 1, +length.value);
159
+ }
160
+ page.value = to;
145
161
  emit('change', to, 'last');
146
162
  }
147
163
  }
@@ -238,7 +254,7 @@ export const YPagination = defineComponent({
238
254
  "style": styles.value
239
255
  }, [_createVNode("ul", {
240
256
  "class": ['y-pagination__list']
241
- }, [props.showEndButton && _createVNode("li", {
257
+ }, [props.endButton && _createVNode("li", {
242
258
  "key": "first",
243
259
  "class": "y-pagination__first"
244
260
  }, [slots.first ? slots.first(controls.value.first) : _createVNode(YButton, controls.value.first, {
@@ -268,7 +284,7 @@ export const YPagination = defineComponent({
268
284
  default: () => [slots['next-icon'] ? slots['next-icon']() : _createVNode(YIconPageControl, {
269
285
  "type": 'next'
270
286
  }, null)]
271
- })]), props.showEndButton && _createVNode("li", {
287
+ })]), props.endButton && _createVNode("li", {
272
288
  "key": "last",
273
289
  "class": "y-pagination__last"
274
290
  }, [slots.last ? slots.last(controls.value.last) : _createVNode(YButton, controls.value.last, {
@@ -1 +1 @@
1
- {"version":3,"file":"YPagination.js","names":["computed","shallowRef","createVNode","_createVNode","useModelDuplex","useRender","useRefs","useResizeObserver","getRangeArr","defineComponent","propsFactory","toStyleSizeValue","YButton","YIconPageControl","pressYPaginationProps","start","type","Number","String","default","modelValue","props","disabled","Boolean","length","validator","val","totalVisible","maxVisible","showEndButton","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","prev","to","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 { 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 showEndButton: Boolean,\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.showEndButton ? 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 page.value = 1;\n emit('change', 1, '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 const to = +length.value;\n page.value = +length.value;\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.showEndButton && (\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.showEndButton && (\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":"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","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 {\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":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuyeon",
3
- "version": "0.3.7-beta.2",
3
+ "version": "0.3.7-beta.4",
4
4
  "keywords": [
5
5
  "UI Library",
6
6
  "Vue"
@@ -26,8 +26,8 @@ export declare const pressYDatePickerControlPropsOptions: <Defaults extends {
26
26
  type: (ObjectConstructor | StringConstructor)[];
27
27
  default: string;
28
28
  }, "type" | "default"> & {
29
- type: PropType<unknown extends Defaults["nextIcon"] ? string | Record<string, any> : Defaults["nextIcon"] | NonNullable<string | Record<string, any>>>;
30
- default: unknown extends Defaults["nextIcon"] ? string | Record<string, any> : Defaults["nextIcon"] | NonNullable<string | Record<string, any>>;
29
+ type: PropType<unknown extends Defaults["nextIcon"] ? string | Record<string, any> : NonNullable<string | Record<string, any>> | Defaults["nextIcon"]>;
30
+ default: unknown extends Defaults["nextIcon"] ? string | Record<string, any> : NonNullable<string | Record<string, any>> | Defaults["nextIcon"];
31
31
  };
32
32
  prevIcon: unknown extends Defaults["prevIcon"] ? {
33
33
  type: (ObjectConstructor | StringConstructor)[];
@@ -10,14 +10,14 @@ export declare const pressYListItemProps: <Defaults extends {
10
10
  default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
11
11
  };
12
12
  tag: unknown extends Defaults["tag"] ? {
13
- type: StringConstructor;
13
+ type: (ObjectConstructor | StringConstructor)[];
14
14
  default: string;
15
15
  } : Omit<{
16
- type: StringConstructor;
16
+ type: (ObjectConstructor | StringConstructor)[];
17
17
  default: string;
18
18
  }, "type" | "default"> & {
19
- type: import('vue').PropType<unknown extends Defaults["tag"] ? string : string | Defaults["tag"]>;
20
- default: unknown extends Defaults["tag"] ? string : string | Defaults["tag"];
19
+ type: import('vue').PropType<unknown extends Defaults["tag"] ? string | Record<string, any> : Defaults["tag"] | NonNullable<string | Record<string, any>>>;
20
+ default: unknown extends Defaults["tag"] ? string | Record<string, any> : Defaults["tag"] | NonNullable<string | Record<string, any>>;
21
21
  };
22
22
  onClick: unknown extends Defaults["onClick"] ? FunctionConstructor : {
23
23
  type: import('vue').PropType<unknown extends Defaults["onClick"] ? Function : Function | Defaults["onClick"]>;
@@ -31,7 +31,7 @@ export declare const pressYListItemProps: <Defaults extends {
31
31
  export declare const YListItem: import('vue').DefineComponent<{
32
32
  theme: import('vue').PropType<string>;
33
33
  tag: {
34
- type: StringConstructor;
34
+ type: (ObjectConstructor | StringConstructor)[];
35
35
  default: string;
36
36
  };
37
37
  onClick: FunctionConstructor;
@@ -511,7 +511,7 @@ export declare const YMenu: import('vue').DefineComponent<{
511
511
  }, string> | undefined>;
512
512
  baseEl: import('vue').ComputedRef<any>;
513
513
  classes: import('vue').ComputedRef<{
514
- "y-menu": boolean;
514
+ 'y-menu': boolean;
515
515
  }>;
516
516
  children: import('vue').ShallowRef<any[], any[]>;
517
517
  parent: import('../layer/active-stack').ActiveStackProvide | null;
@@ -7,7 +7,7 @@ export declare const pressYPaginationProps: <Defaults extends {
7
7
  length?: unknown;
8
8
  totalVisible?: unknown;
9
9
  maxVisible?: unknown;
10
- showEndButton?: unknown;
10
+ endButton?: unknown;
11
11
  gap?: unknown;
12
12
  color?: unknown;
13
13
  activeColor?: unknown;
@@ -59,9 +59,13 @@ export declare const pressYPaginationProps: <Defaults extends {
59
59
  type: PropType<unknown extends Defaults["maxVisible"] ? string | number : NonNullable<string | number> | Defaults["maxVisible"]>;
60
60
  default: unknown extends Defaults["maxVisible"] ? string | number : NonNullable<string | number> | Defaults["maxVisible"];
61
61
  };
62
- showEndButton: unknown extends Defaults["showEndButton"] ? BooleanConstructor : {
63
- type: PropType<unknown extends Defaults["showEndButton"] ? boolean : boolean | Defaults["showEndButton"]>;
64
- default: unknown extends Defaults["showEndButton"] ? boolean : boolean | Defaults["showEndButton"];
62
+ endButton: unknown extends Defaults["endButton"] ? {
63
+ type: PropType<boolean | number>;
64
+ } : Omit<{
65
+ type: PropType<boolean | number>;
66
+ }, "type" | "default"> & {
67
+ type: PropType<unknown extends Defaults["endButton"] ? number | boolean : NonNullable<number | boolean> | Defaults["endButton"]>;
68
+ default: unknown extends Defaults["endButton"] ? number | boolean : NonNullable<number | boolean> | Defaults["endButton"];
65
69
  };
66
70
  gap: unknown extends Defaults["gap"] ? {
67
71
  type: (StringConstructor | NumberConstructor)[];
@@ -117,7 +121,9 @@ export declare const YPagination: import('vue').DefineComponent<{
117
121
  };
118
122
  totalVisible: (StringConstructor | NumberConstructor)[];
119
123
  maxVisible: (StringConstructor | NumberConstructor)[];
120
- showEndButton: BooleanConstructor;
124
+ endButton: {
125
+ type: PropType<boolean | number>;
126
+ };
121
127
  gap: {
122
128
  type: (StringConstructor | NumberConstructor)[];
123
129
  default: number;