yuyeon 0.0.40 → 0.0.42-rc1

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.
Files changed (108) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +4969 -3111
  3. package/dist/yuyeon.umd.cjs +8 -4
  4. package/lib/components/button/YButton.scss +2 -1
  5. package/lib/components/date-picker/YDateCalendar.mjs +242 -0
  6. package/lib/components/date-picker/YDateCalendar.mjs.map +1 -0
  7. package/lib/components/date-picker/YDateCalendar.scss +82 -0
  8. package/lib/components/date-picker/YDatePicker.mjs +12 -0
  9. package/lib/components/date-picker/YDatePicker.mjs.map +1 -0
  10. package/lib/components/date-picker/YDatePickerControl.mjs +29 -0
  11. package/lib/components/date-picker/YDatePickerControl.mjs.map +1 -0
  12. package/lib/components/date-picker/YDatePickerControl.scss +3 -0
  13. package/lib/components/date-picker/index.mjs +2 -0
  14. package/lib/components/date-picker/index.mjs.map +1 -0
  15. package/lib/components/default-provider/YDefaultProvider.mjs +2 -0
  16. package/lib/components/default-provider/YDefaultProvider.mjs.map +1 -0
  17. package/lib/components/default-provider/index.mjs +2 -0
  18. package/lib/components/default-provider/index.mjs.map +1 -0
  19. package/lib/components/index.mjs +2 -0
  20. package/lib/components/index.mjs.map +1 -1
  21. package/lib/components/layer/YLayer.mjs +1 -1
  22. package/lib/components/layer/YLayer.mjs.map +1 -1
  23. package/lib/components/list/YList.mjs +6 -5
  24. package/lib/components/list/YList.mjs.map +1 -1
  25. package/lib/components/menu/YMenu.mjs +6 -4
  26. package/lib/components/menu/YMenu.mjs.map +1 -1
  27. package/lib/components/select/YSelect.mjs +25 -4
  28. package/lib/components/select/YSelect.mjs.map +1 -1
  29. package/lib/components/table/composibles/pagination.mjs.map +1 -1
  30. package/lib/components/tooltip/YTooltip.mjs +2 -2
  31. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  32. package/lib/components/tree-view/YTreeView.mjs +5 -0
  33. package/lib/components/tree-view/YTreeView.mjs.map +1 -1
  34. package/lib/components/tree-view/YTreeViewNode.mjs +1 -0
  35. package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
  36. package/lib/composables/communication.mjs +9 -0
  37. package/lib/composables/communication.mjs.map +1 -1
  38. package/lib/composables/date/factory.mjs +12 -0
  39. package/lib/composables/date/factory.mjs.map +1 -0
  40. package/lib/composables/date/index.mjs +19 -1
  41. package/lib/composables/date/index.mjs.map +1 -1
  42. package/lib/composables/date/setting.mjs +11 -0
  43. package/lib/composables/date/setting.mjs.map +1 -0
  44. package/lib/composables/date/types.mjs +1 -1
  45. package/lib/composables/date/types.mjs.map +1 -1
  46. package/lib/composables/i18n/index.mjs +30 -0
  47. package/lib/composables/i18n/index.mjs.map +1 -0
  48. package/lib/composables/i18n/locale.mjs +5 -0
  49. package/lib/composables/i18n/locale.mjs.map +1 -0
  50. package/lib/composables/i18n/rtl.mjs +34 -0
  51. package/lib/composables/i18n/rtl.mjs.map +1 -0
  52. package/lib/composables/i18n/share.mjs +2 -0
  53. package/lib/composables/i18n/share.mjs.map +1 -0
  54. package/lib/composables/index.mjs +1 -0
  55. package/lib/composables/index.mjs.map +1 -1
  56. package/lib/composables/transition.mjs.map +1 -1
  57. package/lib/i18n/built-in.mjs +77 -0
  58. package/lib/i18n/built-in.mjs.map +1 -0
  59. package/lib/i18n/config.mjs +82 -0
  60. package/lib/i18n/config.mjs.map +1 -0
  61. package/lib/i18n/types.mjs +2 -0
  62. package/lib/i18n/types.mjs.map +1 -0
  63. package/lib/index.mjs +21 -5
  64. package/lib/index.mjs.map +1 -1
  65. package/lib/locales/en.mjs +4 -0
  66. package/lib/locales/en.mjs.map +1 -0
  67. package/lib/locales/index.mjs +3 -0
  68. package/lib/locales/index.mjs.map +1 -0
  69. package/lib/locales/ko.mjs +4 -0
  70. package/lib/locales/ko.mjs.map +1 -0
  71. package/lib/styles/util/_mixin.scss +34 -0
  72. package/lib/util/date/adapters/yuyeon-date-adapter.mjs +99 -0
  73. package/lib/util/date/adapters/yuyeon-date-adapter.mjs.map +1 -0
  74. package/lib/util/date/built-in.mjs +175 -82
  75. package/lib/util/date/built-in.mjs.map +1 -1
  76. package/lib/util/date/index.mjs +1 -0
  77. package/lib/util/date/index.mjs.map +1 -1
  78. package/lib/util/date/types.mjs.map +1 -1
  79. package/lib/util/index.mjs +1 -0
  80. package/lib/util/index.mjs.map +1 -1
  81. package/package.json +6 -4
  82. package/types/components/date-picker/YDateCalendar.d.ts +136 -0
  83. package/types/components/date-picker/index.d.ts +1 -0
  84. package/types/components/index.d.ts +2 -0
  85. package/types/components/menu/YMenu.d.ts +1 -1
  86. package/types/components/select/YSelect.d.ts +3918 -0
  87. package/types/components/tree-view/YTreeView.d.ts +3 -0
  88. package/types/components/tree-view/YTreeViewNode.d.ts +8 -0
  89. package/types/composables/communication.d.ts +2 -0
  90. package/types/composables/date/factory.d.ts +2 -0
  91. package/types/composables/date/index.d.ts +11 -0
  92. package/types/composables/date/setting.d.ts +4 -0
  93. package/types/composables/date/types.d.ts +12 -0
  94. package/types/composables/i18n/index.d.ts +8 -0
  95. package/types/composables/i18n/locale.d.ts +2 -0
  96. package/types/composables/i18n/rtl.d.ts +20 -0
  97. package/types/composables/i18n/share.d.ts +1 -0
  98. package/types/composables/index.d.ts +2 -0
  99. package/types/i18n/built-in.d.ts +2 -0
  100. package/types/i18n/config.d.ts +81 -0
  101. package/types/i18n/types.d.ts +19 -0
  102. package/types/locales/en.d.ts +4 -0
  103. package/types/shims.d.ts +2 -0
  104. package/types/util/date/adapters/yuyeon-date-adapter.d.ts +38 -0
  105. package/types/util/date/built-in.d.ts +35 -0
  106. package/types/util/date/index.d.ts +3 -0
  107. package/types/util/date/types.d.ts +163 -0
  108. package/types/util/index.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"YList.mjs","names":["defineComponent","ref","shallowRef","useRender","pressThemePropsOptions","useLocalTheme","propsFactory","pressYListPropsOptions","disabled","Boolean","YList","name","props","setup","_ref","slots","el$","themeClasses","focused","onFocus","event","value","relatedTarget","contains","focus","onFocusIn","onFocusOut","onKeydown","target","_createVNode","default"],"sources":["../../../src/components/list/YList.tsx"],"sourcesContent":["import { defineComponent, ref, shallowRef } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\r\nimport { propsFactory } from '../../util/vue-component';\r\n\r\nimport './YList.scss';\r\n\r\nexport const pressYListPropsOptions = propsFactory(\r\n {\r\n disabled: Boolean,\r\n ...pressThemePropsOptions(),\r\n },\r\n 'YList',\r\n);\r\n\r\nexport const YList = defineComponent({\r\n name: 'YList',\r\n props: {\r\n ...pressYListPropsOptions(),\r\n },\r\n setup(props, { slots }) {\r\n const el$ = ref<HTMLElement>();\r\n\r\n const { themeClasses } = useLocalTheme(props);\r\n\r\n const focused = shallowRef(false);\r\n\r\n function onFocus(event: FocusEvent) {\r\n if (!focused.value && !(event.relatedTarget && el$.value?.contains(event.relatedTarget as Node))) {\r\n focus();\r\n }\r\n }\r\n\r\n function onFocusIn(event: FocusEvent) {\r\n focused.value = true;\r\n }\r\n\r\n function onFocusOut(event: FocusEvent) {\r\n focused.value = false;\r\n }\r\n\r\n function onKeydown(event: KeyboardEvent) {\r\n //\r\n }\r\n\r\n function focus(target?: string) {\r\n //\r\n }\r\n\r\n useRender(() => (\r\n <div\r\n ref={el$}\r\n class={['y-list', themeClasses.value]}\r\n role=\"listbox\"\r\n tabindex={props.disabled || focused.value ? -1 : 0}\r\n onFocus={onFocus}\r\n onFocusin={onFocusIn}\r\n onFocusout={onFocusOut}\r\n onKeydown={onKeydown}\r\n >\r\n {slots.default?.()}\r\n </div>\r\n ));\r\n },\r\n});\r\n\r\nexport type YList = InstanceType<typeof YList>;\r\n"],"mappings":";AAAA,SAASA,eAAe,EAAEC,GAAG,EAAEC,UAAU,QAAQ,KAAK;AAAC,SAE9CC,SAAS;AAAA,SACTC,sBAAsB,EAAEC,aAAa;AAAA,SACrCC,YAAY;AAErB;AAEA,OAAO,MAAMC,sBAAsB,GAAGD,YAAY,CAChD;EACEE,QAAQ,EAAEC,OAAO;EACjB,GAAGL,sBAAsB,CAAC;AAC5B,CAAC,EACD,OACF,CAAC;AAED,OAAO,MAAMM,KAAK,GAAGV,eAAe,CAAC;EACnCW,IAAI,EAAE,OAAO;EACbC,KAAK,EAAE;IACL,GAAGL,sBAAsB,CAAC;EAC5B,CAAC;EACDM,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAME,GAAG,GAAGf,GAAG,CAAc,CAAC;IAE9B,MAAM;MAAEgB;IAAa,CAAC,GAAGZ,aAAa,CAACO,KAAK,CAAC;IAE7C,MAAMM,OAAO,GAAGhB,UAAU,CAAC,KAAK,CAAC;IAEjC,SAASiB,OAAOA,CAACC,KAAiB,EAAE;MAClC,IAAI,CAACF,OAAO,CAACG,KAAK,IAAI,EAAED,KAAK,CAACE,aAAa,IAAIN,GAAG,CAACK,KAAK,EAAEE,QAAQ,CAACH,KAAK,CAACE,aAAqB,CAAC,CAAC,EAAE;QAChGE,KAAK,CAAC,CAAC;MACT;IACF;IAEA,SAASC,SAASA,CAACL,KAAiB,EAAE;MACpCF,OAAO,CAACG,KAAK,GAAG,IAAI;IACtB;IAEA,SAASK,UAAUA,CAACN,KAAiB,EAAE;MACrCF,OAAO,CAACG,KAAK,GAAG,KAAK;IACvB;IAEA,SAASM,SAASA,CAACP,KAAoB,EAAE;MACvC;IAAA;IAGF,SAASI,KAAKA,CAACI,MAAe,EAAE;MAC9B;IAAA;IAGFzB,SAAS,CAAC,MAAA0B,YAAA;MAAA,OAEGb,GAAG;MAAA,SACD,CAAC,QAAQ,EAAEC,YAAY,CAACI,KAAK,CAAC;MAAA,QAChC,SAAS;MAAA,YACJT,KAAK,CAACJ,QAAQ,IAAIU,OAAO,CAACG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;MAAA,WACzCF,OAAO;MAAA,aACLM,SAAS;MAAA,cACRC,UAAU;MAAA,aACXC;IAAS,IAErBZ,KAAK,CAACe,OAAO,GAAG,CAAC,EAEvB,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YList.mjs","names":["defineComponent","ref","shallowRef","useRender","pressThemePropsOptions","useLocalTheme","propsFactory","pressYListPropsOptions","disabled","Boolean","YList","name","props","setup","_ref","slots","attrs","el$","themeClasses","focused","onFocus","event","value","relatedTarget","contains","focus","onFocusIn","onFocusOut","onKeydown","target","_createVNode","_mergeProps","tabindex","default"],"sources":["../../../src/components/list/YList.tsx"],"sourcesContent":["import { defineComponent, ref, shallowRef } from 'vue';\r\n\r\n\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\r\nimport { propsFactory } from '../../util/vue-component';\r\n\r\n\r\n\r\nimport './YList.scss';\r\n\r\n\r\nexport const pressYListPropsOptions = propsFactory(\r\n {\r\n disabled: Boolean,\r\n ...pressThemePropsOptions(),\r\n },\r\n 'YList',\r\n);\r\n\r\nexport const YList = defineComponent({\r\n name: 'YList',\r\n props: {\r\n ...pressYListPropsOptions(),\r\n },\r\n setup(props, { slots, attrs }) {\r\n const el$ = ref<HTMLElement>();\r\n\r\n const { themeClasses } = useLocalTheme(props);\r\n\r\n const focused = shallowRef(false);\r\n\r\n function onFocus(event: FocusEvent) {\r\n if (\r\n !focused.value &&\r\n !(\r\n event.relatedTarget &&\r\n el$.value?.contains(event.relatedTarget as Node)\r\n )\r\n ) {\r\n focus();\r\n }\r\n }\r\n\r\n function onFocusIn(event: FocusEvent) {\r\n focused.value = true;\r\n }\r\n\r\n function onFocusOut(event: FocusEvent) {\r\n focused.value = false;\r\n }\r\n\r\n function onKeydown(event: KeyboardEvent) {\r\n //\r\n }\r\n\r\n function focus(target?: string) {\r\n //\r\n }\r\n\r\n useRender(() => (\r\n <div\r\n ref={el$}\r\n class={['y-list', themeClasses.value]}\r\n role=\"listbox\"\r\n tabindex={\r\n (attrs.tabindex as number | string) ??\r\n (props.disabled || focused.value ? -1 : 0)\r\n }\r\n onFocus={onFocus}\r\n onFocusin={onFocusIn}\r\n onFocusout={onFocusOut}\r\n onKeydown={onKeydown}\r\n {...attrs}\r\n >\r\n {slots.default?.()}\r\n </div>\r\n ));\r\n },\r\n});\r\n\r\nexport type YList = InstanceType<typeof YList>;\r\n"],"mappings":";AAAA,SAASA,eAAe,EAAEC,GAAG,EAAEC,UAAU,QAAQ,KAAK;AAAC,SAI9CC,SAAS;AAAA,SACTC,sBAAsB,EAAEC,aAAa;AAAA,SACrCC,YAAY;AAIrB;AAGA,OAAO,MAAMC,sBAAsB,GAAGD,YAAY,CAChD;EACEE,QAAQ,EAAEC,OAAO;EACjB,GAAGL,sBAAsB,CAAC;AAC5B,CAAC,EACD,OACF,CAAC;AAED,OAAO,MAAMM,KAAK,GAAGV,eAAe,CAAC;EACnCW,IAAI,EAAE,OAAO;EACbC,KAAK,EAAE;IACL,GAAGL,sBAAsB,CAAC;EAC5B,CAAC;EACDM,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,GAAG,GAAGhB,GAAG,CAAc,CAAC;IAE9B,MAAM;MAAEiB;IAAa,CAAC,GAAGb,aAAa,CAACO,KAAK,CAAC;IAE7C,MAAMO,OAAO,GAAGjB,UAAU,CAAC,KAAK,CAAC;IAEjC,SAASkB,OAAOA,CAACC,KAAiB,EAAE;MAClC,IACE,CAACF,OAAO,CAACG,KAAK,IACd,EACED,KAAK,CAACE,aAAa,IACnBN,GAAG,CAACK,KAAK,EAAEE,QAAQ,CAACH,KAAK,CAACE,aAAqB,CAAC,CACjD,EACD;QACAE,KAAK,CAAC,CAAC;MACT;IACF;IAEA,SAASC,SAASA,CAACL,KAAiB,EAAE;MACpCF,OAAO,CAACG,KAAK,GAAG,IAAI;IACtB;IAEA,SAASK,UAAUA,CAACN,KAAiB,EAAE;MACrCF,OAAO,CAACG,KAAK,GAAG,KAAK;IACvB;IAEA,SAASM,SAASA,CAACP,KAAoB,EAAE;MACvC;IAAA;IAGF,SAASI,KAAKA,CAACI,MAAe,EAAE;MAC9B;IAAA;IAGF1B,SAAS,CAAC,MAAA2B,YAAA,QAAAC,WAAA;MAAA,OAEDd,GAAG;MAAA,SACD,CAAC,QAAQ,EAAEC,YAAY,CAACI,KAAK,CAAC;MAAA,QAChC,SAAS;MAAA,YAEXN,KAAK,CAACgB,QAAQ,KACdpB,KAAK,CAACJ,QAAQ,IAAIW,OAAO,CAACG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;MAAA,WAEnCF,OAAO;MAAA,aACLM,SAAS;MAAA,cACRC,UAAU;MAAA,aACXC;IAAS,GAChBZ,KAAK,IAERD,KAAK,CAACkB,OAAO,GAAG,CAAC,EAErB,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -34,8 +34,8 @@ export const YMenuPropOptions = {
34
34
  preventCloseBubble: Boolean
35
35
  };
36
36
 
37
- /**
38
- * # Component
37
+ /**
38
+ * # Component
39
39
  */
40
40
  export const YMenu = defineComponent({
41
41
  name: NAME,
@@ -47,6 +47,7 @@ export const YMenu = defineComponent({
47
47
  }
48
48
  },
49
49
  emits: ['update:modelValue', 'afterLeave'],
50
+ expose: ['layer$', 'baseEl'],
50
51
  setup(props, _ref) {
51
52
  let {
52
53
  slots,
@@ -117,8 +118,8 @@ export const YMenu = defineComponent({
117
118
  if (typeof props.closeCondition === 'function') {
118
119
  if (props.closeCondition(e) === false) {
119
120
  active.value = false;
121
+ return;
120
122
  }
121
- return;
122
123
  }
123
124
  if (active.value) {
124
125
  const parentContent = parent?.$el.value?.content$;
@@ -156,6 +157,7 @@ export const YMenu = defineComponent({
156
157
  return layer$.value?.baseEl;
157
158
  });
158
159
  expose({
160
+ layer$,
159
161
  baseEl
160
162
  });
161
163
  useRender(() => {
@@ -191,7 +193,7 @@ export const YMenu = defineComponent({
191
193
  })]);
192
194
  });
193
195
  return {
194
- el$: layer$,
196
+ layer$,
195
197
  baseEl,
196
198
  classes
197
199
  };
@@ -1 +1 @@
1
- {"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","ref","toRef","watch","useModelDuplex","useRender","polyTransitionPropOptions","hasElementMouseEvent","toKebabCase","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","preventCloseBubble","YMenu","name","props","transition","emits","setup","_ref","slots","emit","expose","layer$","classes","boundClasses","model","active","get","value","set","v","disabled","hovered","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","computedContentClasses","contentClasses","_createVNode","_Fragment","_mergeProps","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2","el$"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { polyTransitionPropOptions } from '../../composables/transition';\nimport { hasElementMouseEvent } from '../../util/dom';\nimport { toKebabCase } from '../../util/string';\nimport { bindClasses, chooseProps } from '../../util/vue-component';\nimport { YLayer, pressYLayerProps } from '../layer';\nimport { useDelay } from '../layer/active-delay';\nimport { useActiveStack } from '../layer/active-stack';\n\nimport './YMenu.scss';\n\nconst NAME = 'YMenu';\nconst CLASS_NAME = toKebabCase(NAME);\n\nexport const YMenuPropOptions = {\n menuClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n openOnClickBase: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n closeCondition: {\n type: [Boolean, Function],\n default: undefined,\n },\n preventClip: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n ...pressYLayerProps({\n coordinateStrategy: 'levitation',\n }),\n preventCloseBubble: Boolean as PropType<boolean>,\n};\n\n/**\n * # Component\n */\nexport const YMenu = defineComponent({\n name: NAME,\n props: {\n ...YMenuPropOptions,\n transition: {\n ...polyTransitionPropOptions.transition,\n default: 'fade',\n },\n },\n emits: ['update:modelValue', 'afterLeave'],\n setup(props, { slots, emit, expose }) {\n const layer$ = ref<typeof YLayer>();\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.menuClasses);\n return {\n ...boundClasses,\n 'y-menu': true,\n };\n });\n\n const model = useModelDuplex(props);\n\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\n const hovered = computed(() => !!layer$.value?.hovered);\n const { children, parent } = useActiveStack(\n layer$,\n active,\n toRef(props, 'preventCloseBubble'),\n );\n const { startOpenDelay, startCloseDelay } = useDelay(\n props,\n (changeActive) => {\n if (\n !changeActive &&\n props.openOnHover &&\n !hovered.value &&\n children.value.length === 0\n ) {\n active.value = false;\n } else if (changeActive) {\n active.value = true;\n }\n },\n );\n\n function onMouseenter(e: MouseEvent) {\n if (props.openOnHover) {\n startOpenDelay();\n }\n }\n\n function onMouseleave(e: MouseEvent) {\n if (props.openOnHover) {\n startCloseDelay();\n }\n }\n\n watch(hovered, (value) => {\n if (!value) {\n startCloseDelay();\n }\n });\n\n function onClick(e: MouseEvent) {\n e.stopPropagation();\n if (!props.openOnClickBase) {\n return;\n }\n const currentActive = active.value;\n if (!props.disabled) {\n active.value = !currentActive;\n }\n }\n\n function onComplementClick(e: Event) {\n if (props.closeCondition === false) {\n return;\n }\n if (typeof props.closeCondition === 'function') {\n if (props.closeCondition(e) === false) {\n active.value = false;\n }\n return;\n }\n if (active.value) {\n const parentContent = parent?.$el.value?.content$;\n const parentModal = parent?.$el.value?.modal;\n active.value = false;\n if (\n !(parentContent && !hasElementMouseEvent(e, parentContent)) &&\n !parentModal\n ) {\n parent?.clear();\n }\n }\n }\n\n function bindHover(el: HTMLElement) {\n el.addEventListener('mouseenter', onMouseenter);\n el.addEventListener('mouseleave', onMouseleave);\n }\n\n function unbindHover(el: HTMLElement) {\n el.removeEventListener('mouseenter', onMouseenter);\n el.removeEventListener('mouseleave', onMouseleave);\n }\n\n watch(\n () => layer$.value?.baseEl,\n (neo, old) => {\n if (neo) {\n bindHover(neo);\n neo.addEventListener('click', onClick);\n } else if (old) {\n unbindHover(old);\n old.removeEventListener('click', onClick);\n }\n },\n );\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n };\n });\n\n const baseEl = computed(() => {\n return layer$.value?.baseEl;\n });\n\n expose({\n baseEl,\n });\n\n useRender(() => {\n return (\n <>\n <YLayer\n ref={layer$}\n transition={props.transition}\n onClick:complement={onComplementClick}\n onAfterLeave={() => emit('afterLeave')}\n {...{\n ...chooseProps(props, YLayer.props),\n classes: classes.value,\n scrim: false,\n contentClasses: {\n 'y-menu__content': true,\n ...computedContentClasses.value,\n },\n }}\n v-model={active.value}\n >\n {{\n default: (...args: any) => {\n return <>{slots.default?.(...args) ?? ''}</>;\n },\n base: (...args: any[]) => slots.base?.(...args),\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n el$: layer$,\n baseEl,\n classes,\n };\n },\n});\n\nexport type YMenu = InstanceType<typeof YMenu>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","ref","toRef","watch","useModelDuplex","useRender","polyTransitionPropOptions","hasElementMouseEvent","toKebabCase","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","preventCloseBubble","YMenu","name","props","transition","emits","expose","setup","_ref","slots","emit","layer$","classes","boundClasses","model","active","get","value","set","v","disabled","hovered","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","computedContentClasses","contentClasses","_createVNode","_Fragment","_mergeProps","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { PropType } from 'vue';\r\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { polyTransitionPropOptions } from '../../composables/transition';\r\nimport { hasElementMouseEvent } from '../../util/dom';\r\nimport { toKebabCase } from '../../util/string';\r\nimport { bindClasses, chooseProps } from '../../util/vue-component';\r\nimport { YLayer, pressYLayerProps } 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',\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 transition: {\r\n ...polyTransitionPropOptions.transition,\r\n default: 'fade',\r\n },\r\n },\r\n emits: ['update:modelValue', 'afterLeave'],\r\n expose: ['layer$', 'baseEl'],\r\n setup(props, { slots, emit, expose }) {\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 model = useModelDuplex(props);\r\n\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\r\n const hovered = computed(() => !!layer$.value?.hovered);\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 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 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 const parentContent = parent?.$el.value?.content$;\r\n const parentModal = parent?.$el.value?.modal;\r\n active.value = false;\r\n if (\r\n !(parentContent && !hasElementMouseEvent(e, parentContent)) &&\r\n !parentModal\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\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 <>\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\r\n return {\r\n layer$,\r\n baseEl,\r\n classes,\r\n };\r\n },\r\n});\r\n\r\nexport type YMenu = InstanceType<typeof YMenu>;\r\n"],"mappings":"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"}
@@ -39,6 +39,14 @@ export const pressYSelectPropsOptions = propsFactory({
39
39
  expandIcon: {
40
40
  type: Object
41
41
  },
42
+ openDelay: {
43
+ type: Number,
44
+ default: 200
45
+ },
46
+ closeDelay: {
47
+ type: Number,
48
+ default: 200
49
+ },
42
50
  ...pressSelectPropsOptions(),
43
51
  ...pressYFieldInputPropsOptions(),
44
52
  ...omit(pressCoordinateProps({
@@ -118,6 +126,11 @@ export const YSelect = defineComponent({
118
126
  fieldInputRef.value?.focus();
119
127
  }
120
128
  }
129
+ function closeCondition(event) {
130
+ if (event.target && menuRef.value?.layer$?.content$.value) {
131
+ return event.target?.contains(menuRef.value?.layer$?.content$.value);
132
+ }
133
+ }
121
134
  function select(item) {
122
135
  if (props.multiple) {
123
136
  const index = selections.value.findIndex(selectedItem => {
@@ -141,7 +154,7 @@ export const YSelect = defineComponent({
141
154
  return selections.value?.[0]?.text ?? '';
142
155
  });
143
156
  const baseEl = computed(() => {
144
- return menuRef.value.baseEl;
157
+ return menuRef.value?.baseEl;
145
158
  });
146
159
  useRender(() => {
147
160
  const fieldInputProps = chooseProps(props, YFieldInput.props);
@@ -151,11 +164,15 @@ export const YSelect = defineComponent({
151
164
  "ref": menuRef,
152
165
  "offset": props.offset,
153
166
  "position": props.position,
167
+ "align": props.align,
154
168
  "origin": props.origin,
155
169
  "content-classes": ['y-select__content'],
156
170
  "maxHeight": props.maxHeight,
157
171
  "open-on-click-base": false,
158
- "onAfterLeave": onAfterLeave
172
+ "onAfterLeave": onAfterLeave,
173
+ "open-delay": props.openDelay,
174
+ "close-delay": props.closeDelay,
175
+ "closeCondition": closeCondition
159
176
  }, {
160
177
  base: function () {
161
178
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
@@ -198,7 +215,7 @@ export const YSelect = defineComponent({
198
215
  'helper-text': slots['helper-text'] ? slots['helper-text']?.() : undefined
199
216
  });
200
217
  },
201
- default: () => slots.menu ? slots.menu() : _createVNode(YCard, null, {
218
+ default: slots.menu ? () => slots.menu() : () => _createVNode(YCard, null, {
202
219
  default: () => [slots['menu-prepend']?.(), items.value.length > 0 ? _createVNode(YList, {
203
220
  "ref": listRef
204
221
  }, {
@@ -211,7 +228,10 @@ export const YSelect = defineComponent({
211
228
  }, {
212
229
  default: () => [slots.item ? slots.item({
213
230
  item,
214
- selected: isSelected(item)
231
+ selected: isSelected(item),
232
+ select: () => {
233
+ select(item);
234
+ }
215
235
  }) : item.text]
216
236
  });
217
237
  })]
@@ -235,6 +255,7 @@ export const YSelect = defineComponent({
235
255
  model,
236
256
  selections,
237
257
  selected,
258
+ menuRef,
238
259
  baseEl
239
260
  };
240
261
  }
@@ -1 +1 @@
1
- {"version":3,"file":"YSelect.mjs","names":["shallowRef","computed","defineComponent","mergeProps","onMounted","ref","useModelDuplex","useRender","pressCoordinateProps","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIconDropdown","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","pressYSelectPropsOptions","maxHeight","Number","String","expandIcon","Object","position","YSelect","name","inheritAttrs","props","emits","value","click:item","item","e","slots","setup","_ref","attrs","expose","fieldInputRef","menuRef","listRef","focused","items","toRefineItems","toEmitItems","model","v","emitValue","selections","map","find","selected","selection","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","onAfterLeave","focus","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","fieldInputProps","_createVNode","$event","offset","origin","base","_len","args","Array","_key","_mergeProps","leading","_len2","_key2","trailing","menu","_createTextVNode","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport type { PropType, SlotsType } from 'vue';\nimport { computed, defineComponent, mergeProps, onMounted, ref } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { pressCoordinateProps } from '../../composables/coordinate';\nimport {\n ListItem,\n pressListItemsPropsOptions,\n useItems,\n} from '../../composables/list-items';\nimport { wrapInArray } from '../../util/array';\nimport { deepEqual, getObjectValueByPath, omit } from '../../util/common';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIconDropdown } from '../icons/YIconDropdown';\nimport { YList, YListItem } from '../list';\nimport { YMenu } from '../menu';\n\nimport './YSelect.scss';\n\nexport type SelectEquals = (\n optionsItem: any,\n valueItem: any,\n valueKey?: string,\n) => boolean;\n\nexport function returnItemEquals(\n optionsItem: any,\n valueItem: any,\n valueKey = 'value',\n) {\n const valueItemType = typeof valueItem;\n const itemValue =\n valueItemType === 'string' || valueItemType === 'number'\n ? getObjectValueByPath(optionsItem, valueKey)\n : optionsItem;\n return deepEqual(itemValue, valueItem);\n}\n\nexport const pressSelectPropsOptions = propsFactory(\n {\n opened: Boolean as PropType<boolean>,\n multiple: Boolean,\n weakEquals: Boolean,\n valueEquals: {\n type: Function as PropType<SelectEquals>,\n default: deepEqual,\n },\n defaultSelect: Boolean,\n ...pressListItemsPropsOptions(),\n },\n 'Select',\n);\n\nexport const pressYSelectPropsOptions = propsFactory(\n {\n maxHeight: {\n type: [Number, String],\n default: 310,\n },\n expandIcon: {\n type: Object,\n },\n ...pressSelectPropsOptions(),\n ...pressYFieldInputPropsOptions(),\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\n 'coordinateStrategy',\n ]),\n },\n 'YSelect',\n);\n\nexport const YSelect = defineComponent({\n name: 'YSelect',\n inheritAttrs: false,\n props: {\n ...pressYSelectPropsOptions(),\n },\n emits: {\n 'update:modelValue': (value: any) => true,\n 'update:opened': (opened: boolean) => true,\n 'click:item': (item: any, e: MouseEvent) => true,\n },\n slots: Object as SlotsType<{\n base: any;\n selection: any;\n leading: any;\n 'helper-text': any;\n menu: any;\n 'menu-prepend': any;\n 'menu-append': any;\n 'expand-icon': any;\n item: { item: any; selected: boolean };\n }>,\n setup(props, { slots, attrs, expose }) {\n const fieldInputRef = ref();\n const menuRef = ref();\n const listRef = ref<InstanceType<typeof YList>>();\n\n const opened = useModelDuplex(props, 'opened');\n const focused = shallowRef(false);\n\n const { items, toRefineItems, toEmitItems } = useItems(props);\n const model = useModelDuplex(\n props,\n 'modelValue',\n [],\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\n (v) => {\n const emitValue = toEmitItems(wrapInArray(v));\n return props.multiple ? emitValue : emitValue[0] ?? null;\n },\n );\n\n const selections = computed<ListItem[]>(() => {\n return model.value.map((v: any) => {\n return items.value.find((item) => {\n return props.valueEquals(item.value, v.value);\n });\n });\n });\n\n const selected = computed(() => {\n return selections.value.map((selection) => selection.props.value);\n });\n\n function isSelected(item: ListItem) {\n return !!selections.value.find((selectedItem) => {\n return selectedItem?.value === item.value;\n });\n }\n\n // Field\n function onMousedownDisplay(event: MouseEvent) {\n if (props.disabled) {\n return;\n }\n opened.value = !opened.value;\n }\n\n function onBlur(event: FocusEvent) {\n // if (listRef.value?.$el.contains(event.relatedTarget)) {\n // opened.value = false;\n // }\n }\n\n // Menu Contents\n function onClickItem(item: ListItem, e: MouseEvent) {\n select(item);\n if (!props.multiple) {\n opened.value = false;\n }\n }\n\n function onAfterLeave() {\n if (focused.value) {\n fieldInputRef.value?.focus();\n }\n }\n\n function select(item: ListItem) {\n if (props.multiple) {\n const index = selections.value.findIndex((selectedItem) => {\n return selectedItem.value === item.value;\n });\n if (index === -1) {\n model.value = [...model.value, item];\n } else {\n const neo = model.value.slice();\n neo.splice(index, 1);\n model.value = neo;\n }\n } else {\n model.value = [item];\n }\n }\n\n const displayText = computed(() => {\n if (props.multiple) {\n return selections.value.map((item) => item.text).join(', ');\n }\n return selections.value?.[0]?.text ?? '';\n });\n\n const baseEl = computed(() => {\n return menuRef.value.baseEl;\n });\n\n useRender(() => {\n const fieldInputProps = chooseProps(props, YFieldInput.props);\n return (\n <YMenu\n v-model={opened.value}\n ref={menuRef}\n offset={props.offset}\n position={props.position}\n origin={props.origin}\n content-classes={['y-select__content']}\n maxHeight={props.maxHeight}\n open-on-click-base={false}\n onAfterLeave={onAfterLeave}\n >\n {{\n base: (...args: any[]) =>\n slots.base ? (\n slots.base?.(...args)\n ) : (\n <YFieldInput\n {...{\n ...fieldInputProps,\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\n }}\n onMousedown:display={onMousedownDisplay}\n onBlur={onBlur}\n readonly\n class={['y-select', { 'y-select--opened': opened.value }]}\n {...attrs}\n v-model:focused={focused.value}\n >\n {{\n default: () => {\n return (\n <div class={['y-select__selection']}>\n {slots.selection\n ? slots.selection?.()\n : displayText.value}\n </div>\n );\n },\n leading: slots.leading\n ? (...args: any[]) => slots.leading?.(...args)\n : undefined,\n trailing: (...args: any[]) => {\n return slots['expand-icon'] ? (\n slots['expand-icon']()\n ) : (\n <i class=\"y-select__icon\">\n <YIconDropdown></YIconDropdown>\n </i>\n );\n },\n 'helper-text': slots['helper-text']\n ? slots['helper-text']?.()\n : undefined,\n }}\n </YFieldInput>\n ),\n default: () =>\n slots.menu ? (\n slots.menu()\n ) : (\n <YCard>\n {slots['menu-prepend']?.()}\n {items.value.length > 0 ? (\n <YList ref={listRef}>\n {items.value.map((item) => {\n return (\n <YListItem\n onClick={(e) => onClickItem(item, e)}\n class={{ 'y-list-item--active': isSelected(item) }}\n >\n {slots.item\n ? slots.item({ item, selected: isSelected(item) })\n : item.text}\n </YListItem>\n );\n })}\n </YList>\n ) : (\n <div class=\"y-select__no-options\">항목이 없습니다.</div>\n )}\n {slots['menu-append']?.()}\n </YCard>\n ),\n }}\n </YMenu>\n );\n });\n\n onMounted(() => {\n if (\n props.defaultSelect &&\n (props.modelValue === undefined ||\n (Array.isArray(props.modelValue) && props.modelValue.length === 0)) &&\n items.value?.length\n ) {\n select(items.value[0]);\n }\n });\n\n expose({\n fieldInputRef,\n baseEl,\n });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n baseEl,\n };\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"YSelect.mjs","names":["shallowRef","computed","defineComponent","mergeProps","onMounted","ref","useModelDuplex","useRender","pressCoordinateProps","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIconDropdown","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","pressYSelectPropsOptions","maxHeight","Number","String","expandIcon","Object","openDelay","closeDelay","position","YSelect","name","inheritAttrs","props","emits","value","click:item","item","e","slots","setup","_ref","attrs","expose","fieldInputRef","menuRef","listRef","focused","items","toRefineItems","toEmitItems","model","v","emitValue","selections","map","find","selected","selection","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","onAfterLeave","focus","closeCondition","target","layer$","content$","contains","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","fieldInputProps","_createVNode","$event","offset","align","origin","base","_len","args","Array","_key","_mergeProps","leading","_len2","_key2","trailing","menu","_createTextVNode","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\r\nimport type { PropType, SlotsType } from 'vue';\r\nimport { computed, defineComponent, mergeProps, onMounted, ref } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressCoordinateProps } from '../../composables/coordinate';\r\nimport {\r\n ListItem,\r\n pressListItemsPropsOptions,\r\n useItems,\r\n} from '../../composables/list-items';\r\nimport { wrapInArray } from '../../util/array';\r\nimport { deepEqual, getObjectValueByPath, omit } from '../../util/common';\r\nimport { chooseProps, propsFactory } from '../../util/vue-component';\r\nimport { YCard } from '../card';\r\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\r\nimport { YIconDropdown } from '../icons/YIconDropdown';\r\nimport { YList, YListItem } from '../list';\r\nimport { YMenu } from '../menu';\r\n\r\nimport './YSelect.scss';\r\n\r\nexport type SelectEquals = (\r\n optionsItem: any,\r\n valueItem: any,\r\n valueKey?: string,\r\n) => boolean;\r\n\r\nexport function returnItemEquals(\r\n optionsItem: any,\r\n valueItem: any,\r\n valueKey = 'value',\r\n) {\r\n const valueItemType = typeof valueItem;\r\n const itemValue =\r\n valueItemType === 'string' || valueItemType === 'number'\r\n ? getObjectValueByPath(optionsItem, valueKey)\r\n : optionsItem;\r\n return deepEqual(itemValue, valueItem);\r\n}\r\n\r\nexport const pressSelectPropsOptions = propsFactory(\r\n {\r\n opened: Boolean as PropType<boolean>,\r\n multiple: Boolean,\r\n weakEquals: Boolean,\r\n valueEquals: {\r\n type: Function as PropType<SelectEquals>,\r\n default: deepEqual,\r\n },\r\n defaultSelect: Boolean,\r\n ...pressListItemsPropsOptions(),\r\n },\r\n 'Select',\r\n);\r\n\r\nexport const pressYSelectPropsOptions = propsFactory(\r\n {\r\n maxHeight: {\r\n type: [Number, String],\r\n default: 310,\r\n },\r\n expandIcon: {\r\n type: Object,\r\n },\r\n openDelay: {\r\n type: Number as PropType<number>,\r\n default: 200,\r\n },\r\n closeDelay: {\r\n type: Number as PropType<number>,\r\n default: 200,\r\n },\r\n ...pressSelectPropsOptions(),\r\n ...pressYFieldInputPropsOptions(),\r\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\r\n 'coordinateStrategy',\r\n ]),\r\n },\r\n 'YSelect',\r\n);\r\n\r\nexport const YSelect = defineComponent({\r\n name: 'YSelect',\r\n inheritAttrs: false,\r\n props: {\r\n ...pressYSelectPropsOptions(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: any) => true,\r\n 'update:opened': (opened: boolean) => true,\r\n 'click:item': (item: any, e: MouseEvent) => true,\r\n },\r\n slots: Object as SlotsType<{\r\n base: any;\r\n selection: any;\r\n leading: any;\r\n 'helper-text': any;\r\n menu: any;\r\n 'menu-prepend': any;\r\n 'menu-append': any;\r\n 'expand-icon': any;\r\n item: { item: any; selected: boolean; select: () => void };\r\n }>,\r\n setup(props, { slots, attrs, expose }) {\r\n const fieldInputRef = ref();\r\n const menuRef = ref<InstanceType<typeof YMenu>>();\r\n const listRef = ref<InstanceType<typeof YList>>();\r\n\r\n const opened = useModelDuplex(props, 'opened');\r\n const focused = shallowRef(false);\r\n\r\n const { items, toRefineItems, toEmitItems } = useItems(props);\r\n const model = useModelDuplex(\r\n props,\r\n 'modelValue',\r\n [],\r\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\r\n (v) => {\r\n const emitValue = toEmitItems(wrapInArray(v));\r\n return props.multiple ? emitValue : emitValue[0] ?? null;\r\n },\r\n );\r\n\r\n const selections = computed<ListItem[]>(() => {\r\n return model.value.map((v: any) => {\r\n return items.value.find((item) => {\r\n return props.valueEquals(item.value, v.value);\r\n });\r\n });\r\n });\r\n\r\n const selected = computed(() => {\r\n return selections.value.map((selection) => selection.props.value);\r\n });\r\n\r\n function isSelected(item: ListItem) {\r\n return !!selections.value.find((selectedItem) => {\r\n return selectedItem?.value === item.value;\r\n });\r\n }\r\n\r\n // Field\r\n function onMousedownDisplay(event: MouseEvent) {\r\n if (props.disabled) {\r\n return;\r\n }\r\n opened.value = !opened.value;\r\n }\r\n\r\n function onBlur(event: FocusEvent) {\r\n // if (listRef.value?.$el.contains(event.relatedTarget)) {\r\n // opened.value = false;\r\n // }\r\n }\r\n\r\n // Menu Contents\r\n function onClickItem(item: ListItem, e: MouseEvent) {\r\n select(item);\r\n if (!props.multiple) {\r\n opened.value = false;\r\n }\r\n }\r\n\r\n function onAfterLeave() {\r\n if (focused.value) {\r\n fieldInputRef.value?.focus();\r\n }\r\n }\r\n\r\n function closeCondition(event: MouseEvent) {\r\n if (event.target && (menuRef.value as any)?.layer$?.content$.value) {\r\n return (event.target as HTMLElement)?.contains((menuRef.value as any)?.layer$?.content$.value)\r\n }\r\n }\r\n\r\n function select(item: ListItem) {\r\n if (props.multiple) {\r\n const index = selections.value.findIndex((selectedItem) => {\r\n return selectedItem.value === item.value;\r\n });\r\n if (index === -1) {\r\n model.value = [...model.value, item];\r\n } else {\r\n const neo = model.value.slice();\r\n neo.splice(index, 1);\r\n model.value = neo;\r\n }\r\n } else {\r\n model.value = [item];\r\n }\r\n }\r\n\r\n const displayText = computed(() => {\r\n if (props.multiple) {\r\n return selections.value.map((item) => item.text).join(', ');\r\n }\r\n return selections.value?.[0]?.text ?? '';\r\n });\r\n\r\n const baseEl = computed(() => {\r\n return menuRef.value?.baseEl;\r\n });\r\n\r\n useRender(() => {\r\n const fieldInputProps = chooseProps(props, YFieldInput.props);\r\n return (\r\n <YMenu\r\n v-model={opened.value}\r\n ref={menuRef}\r\n offset={props.offset}\r\n position={props.position}\r\n align={props.align}\r\n origin={props.origin}\r\n content-classes={['y-select__content']}\r\n maxHeight={props.maxHeight}\r\n open-on-click-base={false}\r\n onAfterLeave={onAfterLeave}\r\n open-delay={props.openDelay}\r\n close-delay={props.closeDelay}\r\n closeCondition={closeCondition}\r\n >\r\n {{\r\n base: (...args: any[]) =>\r\n slots.base ? (\r\n slots.base?.(...args)\r\n ) : (\r\n <YFieldInput\r\n {...{\r\n ...fieldInputProps,\r\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\r\n }}\r\n onMousedown:display={onMousedownDisplay}\r\n onBlur={onBlur}\r\n readonly\r\n class={['y-select', { 'y-select--opened': opened.value }]}\r\n {...attrs}\r\n v-model:focused={focused.value}\r\n >\r\n {{\r\n default: () => {\r\n return (\r\n <div class={['y-select__selection']}>\r\n {slots.selection\r\n ? slots.selection?.()\r\n : displayText.value}\r\n </div>\r\n );\r\n },\r\n leading: slots.leading\r\n ? (...args: any[]) => slots.leading?.(...args)\r\n : undefined,\r\n trailing: (...args: any[]) => {\r\n return slots['expand-icon'] ? (\r\n slots['expand-icon']()\r\n ) : (\r\n <i class=\"y-select__icon\">\r\n <YIconDropdown></YIconDropdown>\r\n </i>\r\n );\r\n },\r\n 'helper-text': slots['helper-text']\r\n ? slots['helper-text']?.()\r\n : undefined,\r\n }}\r\n </YFieldInput>\r\n ),\r\n default: slots.menu\r\n ? () => slots.menu()\r\n : () => (\r\n <YCard>\r\n {slots['menu-prepend']?.()}\r\n {items.value.length > 0 ? (\r\n <YList ref={listRef}>\r\n {items.value.map((item) => {\r\n return (\r\n <YListItem\r\n onClick={(e) => onClickItem(item, e)}\r\n class={{\r\n 'y-list-item--active': isSelected(item),\r\n }}\r\n >\r\n {slots.item\r\n ? slots.item({\r\n item,\r\n selected: isSelected(item),\r\n select: () => {\r\n select(item);\r\n },\r\n })\r\n : item.text}\r\n </YListItem>\r\n );\r\n })}\r\n </YList>\r\n ) : (\r\n <div class=\"y-select__no-options\">항목이 없습니다.</div>\r\n )}\r\n {slots['menu-append']?.()}\r\n </YCard>\r\n ),\r\n }}\r\n </YMenu>\r\n );\r\n });\r\n\r\n onMounted(() => {\r\n if (\r\n props.defaultSelect &&\r\n (props.modelValue === undefined ||\r\n (Array.isArray(props.modelValue) && props.modelValue.length === 0)) &&\r\n items.value?.length\r\n ) {\r\n select(items.value[0]);\r\n }\r\n });\r\n\r\n expose({\r\n fieldInputRef,\r\n baseEl,\r\n });\r\n\r\n return {\r\n fieldInputRef,\r\n model,\r\n selections,\r\n selected,\r\n menuRef,\r\n baseEl,\r\n };\r\n },\r\n});\r\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.mjs","names":["computed","inject","provide","watchEffect","useModelDuplex","clamp","propsFactory","Y_DATA_TABLE_PAGINATION_KEY","Symbol","for","pressDataTablePaginationProps","page","type","Number","String","default","pageSize","createPagination","props","undefined","value","providePagination","options","total","startIndex","endIndex","Math","min","pageLength","ceil","setPageSize","nextPage","prevPage","setPage","data","usePagination","Error","description","usePaginatedItems","items","paginatedItems","slice"],"sources":["../../../../src/components/table/composibles/pagination.ts"],"sourcesContent":["import type { InjectionKey, PropType, Ref } from 'vue';\nimport { computed, inject, provide, watchEffect } from 'vue';\n\nimport { useModelDuplex } from '../../../composables/communication';\nimport { clamp } from '../../../util/common';\nimport { propsFactory } from '../../../util/vue-component';\nimport { DataTableProvidePaginationData } from \"../types\";\n\nexport const Y_DATA_TABLE_PAGINATION_KEY: InjectionKey<{\n page: Ref<number>;\n pageSize: Ref<number>;\n startIndex: Ref<number>;\n endIndex: Ref<number>;\n pageLength: Ref<number>;\n total: Ref<number>;\n prevPage: () => void;\n nextPage: () => void;\n setPage: (page: number) => void;\n setPageSize: (size: number) => void;\n}> = Symbol.for('yuyeon.data-table.pagination');\n\nexport const pressDataTablePaginationProps = propsFactory(\n {\n page: {\n type: [Number, String] as PropType<number | string>,\n default: 1,\n },\n pageSize: {\n type: [Number, String] as PropType<number | string>,\n default: 10,\n },\n },\n 'YDataTable--pagination',\n);\n\ntype PaginationProps = {\n page: number | string;\n 'onUpdate:page': ((v: any) => void) | undefined;\n pageSize: number | string;\n 'onUpdate:pageSize': ((v: any) => void) | undefined;\n total?: number | string;\n};\n\nexport function createPagination(props: PaginationProps) {\n const page = useModelDuplex(\n props,\n 'page',\n undefined,\n (value) => +(value ?? 1),\n );\n const pageSize = useModelDuplex(\n props,\n 'pageSize',\n undefined,\n (value) => +(value ?? 10),\n );\n return { page, pageSize };\n}\n\nexport function providePagination(options: {\n page: Ref<number>;\n pageSize: Ref<number>;\n total: Ref<number>;\n}) {\n const { page, pageSize, total } = options;\n const startIndex = computed(() => {\n if (pageSize.value === -1) return 0;\n\n return pageSize.value * (page.value - 1);\n });\n const endIndex = computed(() => {\n if (pageSize.value === -1) return total.value;\n\n return Math.min(total.value, startIndex.value + pageSize.value);\n });\n\n const pageLength = computed(() => {\n if (pageSize.value === -1 || total.value === 0) return 1;\n\n return Math.ceil(total.value / pageSize.value);\n });\n\n watchEffect(() => {\n if (page.value > pageLength.value) {\n page.value = pageLength.value;\n }\n });\n\n function setPageSize(value: number) {\n pageSize.value = value;\n page.value = 1;\n }\n\n function nextPage() {\n page.value = clamp(page.value + 1, 1, pageLength.value);\n }\n\n function prevPage() {\n page.value = clamp(page.value - 1, 1, pageLength.value);\n }\n\n function setPage(value: number) {\n page.value = clamp(value, 1, pageLength.value);\n }\n\n const data: DataTableProvidePaginationData = {\n page,\n pageSize,\n startIndex,\n endIndex,\n pageLength,\n total,\n nextPage,\n prevPage,\n setPage,\n setPageSize,\n };\n\n provide(Y_DATA_TABLE_PAGINATION_KEY, data);\n\n return data;\n}\n\nexport function usePagination() {\n const data = inject(Y_DATA_TABLE_PAGINATION_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_PAGINATION_KEY.description}`);\n }\n return data;\n}\n\nexport function usePaginatedItems <T> (options: {\n items: Ref<readonly (T)[]>\n startIndex: Ref<number>\n endIndex: Ref<number>\n pageSize: Ref<number>\n}) {\n const { items, startIndex, endIndex, pageSize } = options\n const paginatedItems = computed(() => {\n if (pageSize.value <= 0) return items.value\n\n return items.value.slice(startIndex.value, endIndex.value)\n })\n\n return { paginatedItems }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pagination.mjs","names":["computed","inject","provide","watchEffect","useModelDuplex","clamp","propsFactory","Y_DATA_TABLE_PAGINATION_KEY","Symbol","for","pressDataTablePaginationProps","page","type","Number","String","default","pageSize","createPagination","props","undefined","value","providePagination","options","total","startIndex","endIndex","Math","min","pageLength","ceil","setPageSize","nextPage","prevPage","setPage","data","usePagination","Error","description","usePaginatedItems","items","paginatedItems","slice"],"sources":["../../../../src/components/table/composibles/pagination.ts"],"sourcesContent":["import type { InjectionKey, PropType, Ref } from 'vue';\r\nimport { computed, inject, provide, watchEffect } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../../composables/communication';\r\nimport { clamp } from '../../../util/common';\r\nimport { propsFactory } from '../../../util/vue-component';\r\nimport { DataTableProvidePaginationData } from \"../types\";\r\n\r\nexport const Y_DATA_TABLE_PAGINATION_KEY: InjectionKey<{\r\n page: Ref<number>;\r\n pageSize: Ref<number>;\r\n startIndex: Ref<number>;\r\n endIndex: Ref<number>;\r\n pageLength: Ref<number>;\r\n total: Ref<number>;\r\n prevPage: () => void;\r\n nextPage: () => void;\r\n setPage: (page: number) => void;\r\n setPageSize: (size: number) => void;\r\n}> = Symbol.for('yuyeon.data-table.pagination');\r\n\r\nexport const pressDataTablePaginationProps = propsFactory(\r\n {\r\n page: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 1,\r\n },\r\n pageSize: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 10,\r\n },\r\n },\r\n 'YDataTable--pagination',\r\n);\r\n\r\ntype PaginationProps = {\r\n page: number | string;\r\n 'onUpdate:page': ((v: any) => void) | undefined;\r\n pageSize: number | string;\r\n 'onUpdate:pageSize': ((v: any) => void) | undefined;\r\n total?: number | string;\r\n};\r\n\r\nexport function createPagination(props: PaginationProps) {\r\n const page = useModelDuplex(\r\n props,\r\n 'page',\r\n undefined,\r\n (value) => +(value ?? 1),\r\n );\r\n const pageSize = useModelDuplex(\r\n props,\r\n 'pageSize',\r\n undefined,\r\n (value) => +(value ?? 10),\r\n );\r\n return { page, pageSize };\r\n}\r\n\r\nexport function providePagination(options: {\r\n page: Ref<number>;\r\n pageSize: Ref<number>;\r\n total: Ref<number>;\r\n}) {\r\n const { page, pageSize, total } = options;\r\n const startIndex = computed(() => {\r\n if (pageSize.value === -1) return 0;\r\n\r\n return pageSize.value * (page.value - 1);\r\n });\r\n const endIndex = computed(() => {\r\n if (pageSize.value === -1) return total.value;\r\n\r\n return Math.min(total.value, startIndex.value + pageSize.value);\r\n });\r\n\r\n const pageLength = computed(() => {\r\n if (pageSize.value === -1 || total.value === 0) return 1;\r\n\r\n return Math.ceil(total.value / pageSize.value);\r\n });\r\n\r\n watchEffect(() => {\r\n if (page.value > pageLength.value) {\r\n page.value = pageLength.value;\r\n }\r\n });\r\n\r\n function setPageSize(value: number) {\r\n pageSize.value = value;\r\n page.value = 1;\r\n }\r\n\r\n function nextPage() {\r\n page.value = clamp(page.value + 1, 1, pageLength.value);\r\n }\r\n\r\n function prevPage() {\r\n page.value = clamp(page.value - 1, 1, pageLength.value);\r\n }\r\n\r\n function setPage(value: number) {\r\n page.value = clamp(value, 1, pageLength.value);\r\n }\r\n\r\n const data: DataTableProvidePaginationData = {\r\n page,\r\n pageSize,\r\n startIndex,\r\n endIndex,\r\n pageLength,\r\n total,\r\n nextPage,\r\n prevPage,\r\n setPage,\r\n setPageSize,\r\n };\r\n\r\n provide(Y_DATA_TABLE_PAGINATION_KEY, data);\r\n\r\n return data;\r\n}\r\n\r\nexport function usePagination() {\r\n const data = inject(Y_DATA_TABLE_PAGINATION_KEY);\r\n if (!data) {\r\n throw new Error(`Not provided: ${Y_DATA_TABLE_PAGINATION_KEY.description}`);\r\n }\r\n return data;\r\n}\r\n\r\nexport function usePaginatedItems <T> (options: {\r\n items: Ref<readonly (T)[]>\r\n startIndex: Ref<number>\r\n endIndex: Ref<number>\r\n pageSize: Ref<number>\r\n}) {\r\n const { items, startIndex, endIndex, pageSize } = options\r\n const paginatedItems = computed(() => {\r\n if (pageSize.value <= 0) return items.value\r\n\r\n return items.value.slice(startIndex.value, endIndex.value)\r\n })\r\n\r\n return { paginatedItems }\r\n}\r\n"],"mappings":"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"}
@@ -20,8 +20,8 @@ const YTooltipPropOptions = {
20
20
  }
21
21
  };
22
22
 
23
- /**
24
- * # Component
23
+ /**
24
+ * # Component
25
25
  */
26
26
  export const YTooltip = defineComponent({
27
27
  name: NAME,
@@ -1 +1 @@
1
- {"version":3,"file":"YTooltip.mjs","names":["computed","defineComponent","nextTick","ref","watch","watchEffect","useModelDuplex","useRender","polyTransitionPropOptions","omit","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","YPlate","NAME","YTooltipPropOptions","tooltipClasses","type","Array","String","Object","preventClip","Boolean","default","YTooltip","name","props","coordinateStrategy","openOnHover","align","offset","transition","emits","setup","_ref","slots","emit","expose","layer$","base$","baseSlot","baseEl","contentEl","classes","boundClasses","model","active","get","value","set","v","disabled","hovered","baseFromSlotEl","el","nodeType","base","$el","neo","$content","content$","startOpenDelay","startCloseDelay","changeActive","onMouseenter","e","onMouseleave","bindHover","addEventListener","unbindHover","removeEventListener","old","_createVNode","_Fragment","_mergeProps","$event","_len","arguments","length","args","_key","_len2","_key2","el$"],"sources":["../../../src/components/tooltip/YTooltip.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport {\n computed,\n defineComponent,\n nextTick,\n ref,\n watch,\n watchEffect,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { polyTransitionPropOptions } from '../../composables/transition';\nimport { omit } from '../../util';\nimport { bindClasses, chooseProps } from '../../util/vue-component';\nimport { YLayer, pressYLayerProps } from '../layer';\nimport { useDelay } from '../layer/active-delay';\nimport { YPlate } from '../plate';\n\nimport './YTooltip.scss';\n\nconst NAME = 'YTooltip';\n\nconst YTooltipPropOptions = {\n tooltipClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n preventClip: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n};\n\n/**\n * # Component\n */\nexport const YTooltip = defineComponent({\n name: NAME,\n props: {\n ...YTooltipPropOptions,\n ...pressYLayerProps({\n coordinateStrategy: 'levitation',\n openOnHover: true,\n align: 'center',\n offset: 8,\n }),\n transition: {\n ...polyTransitionPropOptions.transition,\n default: 'fade',\n },\n },\n emits: ['update:modelValue'],\n setup(props, { slots, emit, expose }) {\n const layer$ = ref<typeof YLayer>();\n const base$ = ref();\n const baseSlot = ref();\n const baseEl = ref<HTMLElement>();\n const contentEl = ref<HTMLElement>();\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.tooltipClasses);\n return {\n ...boundClasses,\n 'y-tooltip': true,\n };\n });\n\n const model = useModelDuplex(props);\n\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\n const hovered = computed(() => !!layer$.value?.hovered);\n\n const baseFromSlotEl = computed(() => {\n return baseSlot.value?.[0]?.el;\n });\n\n watchEffect(() => {\n if (!base$.value) {\n if (baseFromSlotEl.value?.nodeType !== 3) {\n baseEl.value = baseFromSlotEl.value;\n }\n return;\n }\n const base = base$.value;\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\n });\n\n watch(active, (neo) => {\n if (neo) {\n nextTick(() => {\n const $content = layer$.value?.content$;\n contentEl.value = $content;\n });\n }\n });\n\n const { startOpenDelay, startCloseDelay } = useDelay(\n props,\n (changeActive) => {\n if (!changeActive && props.openOnHover && !hovered.value) {\n active.value = false;\n } else if (changeActive) {\n active.value = true;\n }\n },\n );\n\n function onMouseenter(e: MouseEvent) {\n if (props.openOnHover) {\n startOpenDelay();\n }\n }\n\n function onMouseleave(e: MouseEvent) {\n if (props.openOnHover) {\n startCloseDelay();\n }\n }\n\n watch(hovered, (value) => {\n if (!value) {\n startCloseDelay();\n }\n });\n\n function bindHover(el: HTMLElement) {\n el.addEventListener('mouseenter', onMouseenter);\n el.addEventListener('mouseleave', onMouseleave);\n }\n\n function unbindHover(el: HTMLElement) {\n el.removeEventListener('mouseenter', onMouseenter);\n el.removeEventListener('mouseleave', onMouseleave);\n }\n\n watch(\n () => layer$.value?.baseEl,\n (neo, old) => {\n if (neo) {\n bindHover(neo);\n } else if (old) {\n unbindHover(old);\n }\n },\n );\n\n useRender(() => {\n return (\n <>\n <YLayer\n ref={layer$}\n {...omit(chooseProps(props, YLayer.props), ['scrim'])}\n classes={classes.value}\n scrim={false}\n transition={props.transition}\n v-model={active.value}\n >\n {{\n default: (...args: any) => {\n return (\n <>\n <YPlate></YPlate>\n <div class=\"y-tooltip__content\">\n {slots.default?.(...args) ?? ''}\n </div>\n </>\n );\n },\n base: (...args: any[]) => slots.base?.(...args),\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n base$,\n el$: layer$,\n baseEl,\n baseSlot,\n active,\n };\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"YTooltip.mjs","names":["computed","defineComponent","nextTick","ref","watch","watchEffect","useModelDuplex","useRender","polyTransitionPropOptions","omit","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","YPlate","NAME","YTooltipPropOptions","tooltipClasses","type","Array","String","Object","preventClip","Boolean","default","YTooltip","name","props","coordinateStrategy","openOnHover","align","offset","transition","emits","setup","_ref","slots","emit","expose","layer$","base$","baseSlot","baseEl","contentEl","classes","boundClasses","model","active","get","value","set","v","disabled","hovered","baseFromSlotEl","el","nodeType","base","$el","neo","$content","content$","startOpenDelay","startCloseDelay","changeActive","onMouseenter","e","onMouseleave","bindHover","addEventListener","unbindHover","removeEventListener","old","_createVNode","_Fragment","_mergeProps","$event","_len","arguments","length","args","_key","_len2","_key2","el$"],"sources":["../../../src/components/tooltip/YTooltip.tsx"],"sourcesContent":["import type { PropType } from 'vue';\r\nimport {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n ref,\r\n watch,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { polyTransitionPropOptions } from '../../composables/transition';\r\nimport { omit } from '../../util';\r\nimport { bindClasses, chooseProps } from '../../util/vue-component';\r\nimport { YLayer, pressYLayerProps } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { YPlate } from '../plate';\r\n\r\nimport './YTooltip.scss';\r\n\r\nconst NAME = 'YTooltip';\r\n\r\nconst YTooltipPropOptions = {\r\n tooltipClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YTooltip = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YTooltipPropOptions,\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation',\r\n openOnHover: true,\r\n align: 'center',\r\n offset: 8,\r\n }),\r\n transition: {\r\n ...polyTransitionPropOptions.transition,\r\n default: 'fade',\r\n },\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { slots, emit, expose }) {\r\n const layer$ = ref<typeof YLayer>();\r\n const base$ = ref();\r\n const baseSlot = ref();\r\n const baseEl = ref<HTMLElement>();\r\n const contentEl = ref<HTMLElement>();\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.tooltipClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-tooltip': true,\r\n };\r\n });\r\n\r\n const model = useModelDuplex(props);\r\n\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\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n\r\n const baseFromSlotEl = computed(() => {\r\n return baseSlot.value?.[0]?.el;\r\n });\r\n\r\n watchEffect(() => {\r\n if (!base$.value) {\r\n if (baseFromSlotEl.value?.nodeType !== 3) {\r\n baseEl.value = baseFromSlotEl.value;\r\n }\r\n return;\r\n }\r\n const base = base$.value;\r\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\r\n });\r\n\r\n watch(active, (neo) => {\r\n if (neo) {\r\n nextTick(() => {\r\n const $content = layer$.value?.content$;\r\n contentEl.value = $content;\r\n });\r\n }\r\n });\r\n\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (!changeActive && props.openOnHover && !hovered.value) {\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 if (!value) {\r\n startCloseDelay();\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 } else if (old) {\r\n unbindHover(old);\r\n }\r\n },\r\n );\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n ref={layer$}\r\n {...omit(chooseProps(props, YLayer.props), ['scrim'])}\r\n classes={classes.value}\r\n scrim={false}\r\n transition={props.transition}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return (\r\n <>\r\n <YPlate></YPlate>\r\n <div class=\"y-tooltip__content\">\r\n {slots.default?.(...args) ?? ''}\r\n </div>\r\n </>\r\n );\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n base$,\r\n el$: layer$,\r\n baseEl,\r\n baseSlot,\r\n active,\r\n };\r\n },\r\n});\r\n"],"mappings":";AACA,SACEA,QAAQ,EACRC,eAAe,EACfC,QAAQ,EACRC,GAAG,EACHC,KAAK,EACLC,WAAW,QACN,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,yBAAyB;AAAA,SACzBC,IAAI;AAAA,SACJC,WAAW,EAAEC,WAAW;AAAA,SACxBC,MAAM,EAAEC,gBAAgB;AAAA,SACxBC,QAAQ;AAAA,SACRC,MAAM;AAEf;AAEA,MAAMC,IAAI,GAAG,UAAU;AAEvB,MAAMC,mBAAmB,GAAG;EAC1BC,cAAc,EAAE;IACdC,IAAI,EAAE,CAACC,KAAK,EAAEC,MAAM,EAAEC,MAAM;EAG9B,CAAC;EACDC,WAAW,EAAE;IACXJ,IAAI,EAAEK,OAA4B;IAClCC,OAAO,EAAE;EACX;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAGzB,eAAe,CAAC;EACtC0B,IAAI,EAAEX,IAAI;EACVY,KAAK,EAAE;IACL,GAAGX,mBAAmB;IACtB,GAAGJ,gBAAgB,CAAC;MAClBgB,kBAAkB,EAAE,YAAY;MAChCC,WAAW,EAAE,IAAI;MACjBC,KAAK,EAAE,QAAQ;MACfC,MAAM,EAAE;IACV,CAAC,CAAC;IACFC,UAAU,EAAE;MACV,GAAGzB,yBAAyB,CAACyB,UAAU;MACvCR,OAAO,EAAE;IACX;EACF,CAAC;EACDS,KAAK,EAAE,CAAC,mBAAmB,CAAC;EAC5BC,KAAKA,CAACP,KAAK,EAAAQ,IAAA,EAA2B;IAAA,IAAzB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAO,CAAC,GAAAH,IAAA;IAClC,MAAMI,MAAM,GAAGrC,GAAG,CAAgB,CAAC;IACnC,MAAMsC,KAAK,GAAGtC,GAAG,CAAC,CAAC;IACnB,MAAMuC,QAAQ,GAAGvC,GAAG,CAAC,CAAC;IACtB,MAAMwC,MAAM,GAAGxC,GAAG,CAAc,CAAC;IACjC,MAAMyC,SAAS,GAAGzC,GAAG,CAAc,CAAC;IAEpC,MAAM0C,OAAO,GAAG7C,QAAQ,CAAC,MAAM;MAC7B,MAAM8C,YAAY,GAAGpC,WAAW,CAACkB,KAAK,CAACV,cAAc,CAAC;MACtD,OAAO;QACL,GAAG4B,YAAY;QACf,WAAW,EAAE;MACf,CAAC;IACH,CAAC,CAAC;IAEF,MAAMC,KAAK,GAAGzC,cAAc,CAACsB,KAAK,CAAC;IAEnC,MAAMoB,MAAM,GAAGhD,QAAQ,CAAC;MACtBiD,GAAG,EAAEA,CAAA,KAAe;QAClB,OAAO,CAAC,CAACF,KAAK,CAACG,KAAK;MACtB,CAAC;MACDC,GAAG,EAAGC,CAAU,IAAK;QACnB,IAAI,EAAEA,CAAC,IAAIxB,KAAK,CAACyB,QAAQ,CAAC,EAAEN,KAAK,CAACG,KAAK,GAAGE,CAAC;MAC7C;IACF,CAAC,CAAC;IAEF,MAAME,OAAO,GAAGtD,QAAQ,CAAC,MAAM,CAAC,CAACwC,MAAM,CAACU,KAAK,EAAEI,OAAO,CAAC;IAEvD,MAAMC,cAAc,GAAGvD,QAAQ,CAAC,MAAM;MACpC,OAAO0C,QAAQ,CAACQ,KAAK,GAAG,CAAC,CAAC,EAAEM,EAAE;IAChC,CAAC,CAAC;IAEFnD,WAAW,CAAC,MAAM;MAChB,IAAI,CAACoC,KAAK,CAACS,KAAK,EAAE;QAChB,IAAIK,cAAc,CAACL,KAAK,EAAEO,QAAQ,KAAK,CAAC,EAAE;UACxCd,MAAM,CAACO,KAAK,GAAGK,cAAc,CAACL,KAAK;QACrC;QACA;MACF;MACA,MAAMQ,IAAI,GAAGjB,KAAK,CAACS,KAAK;MACxBP,MAAM,CAACO,KAAK,GAAGT,KAAK,CAACS,KAAK,EAAES,GAAG,GAAGlB,KAAK,CAACS,KAAK,EAAES,GAAG,GAAGD,IAAI;IAC3D,CAAC,CAAC;IAEFtD,KAAK,CAAC4C,MAAM,EAAGY,GAAG,IAAK;MACrB,IAAIA,GAAG,EAAE;QACP1D,QAAQ,CAAC,MAAM;UACb,MAAM2D,QAAQ,GAAGrB,MAAM,CAACU,KAAK,EAAEY,QAAQ;UACvClB,SAAS,CAACM,KAAK,GAAGW,QAAQ;QAC5B,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,MAAM;MAAEE,cAAc;MAAEC;IAAgB,CAAC,GAAGlD,QAAQ,CAClDc,KAAK,EACJqC,YAAY,IAAK;MAChB,IAAI,CAACA,YAAY,IAAIrC,KAAK,CAACE,WAAW,IAAI,CAACwB,OAAO,CAACJ,KAAK,EAAE;QACxDF,MAAM,CAACE,KAAK,GAAG,KAAK;MACtB,CAAC,MAAM,IAAIe,YAAY,EAAE;QACvBjB,MAAM,CAACE,KAAK,GAAG,IAAI;MACrB;IACF,CACF,CAAC;IAED,SAASgB,YAAYA,CAACC,CAAa,EAAE;MACnC,IAAIvC,KAAK,CAACE,WAAW,EAAE;QACrBiC,cAAc,CAAC,CAAC;MAClB;IACF;IAEA,SAASK,YAAYA,CAACD,CAAa,EAAE;MACnC,IAAIvC,KAAK,CAACE,WAAW,EAAE;QACrBkC,eAAe,CAAC,CAAC;MACnB;IACF;IAEA5D,KAAK,CAACkD,OAAO,EAAGJ,KAAK,IAAK;MACxB,IAAI,CAACA,KAAK,EAAE;QACVc,eAAe,CAAC,CAAC;MACnB;IACF,CAAC,CAAC;IAEF,SAASK,SAASA,CAACb,EAAe,EAAE;MAClCA,EAAE,CAACc,gBAAgB,CAAC,YAAY,EAAEJ,YAAY,CAAC;MAC/CV,EAAE,CAACc,gBAAgB,CAAC,YAAY,EAAEF,YAAY,CAAC;IACjD;IAEA,SAASG,WAAWA,CAACf,EAAe,EAAE;MACpCA,EAAE,CAACgB,mBAAmB,CAAC,YAAY,EAAEN,YAAY,CAAC;MAClDV,EAAE,CAACgB,mBAAmB,CAAC,YAAY,EAAEJ,YAAY,CAAC;IACpD;IAEAhE,KAAK,CACH,MAAMoC,MAAM,CAACU,KAAK,EAAEP,MAAM,EAC1B,CAACiB,GAAG,EAAEa,GAAG,KAAK;MACZ,IAAIb,GAAG,EAAE;QACPS,SAAS,CAACT,GAAG,CAAC;MAChB,CAAC,MAAM,IAAIa,GAAG,EAAE;QACdF,WAAW,CAACE,GAAG,CAAC;MAClB;IACF,CACF,CAAC;IAEDlE,SAAS,CAAC,MAAM;MACd,OAAAmE,YAAA,CAAAC,SAAA,SAAAD,YAAA,CAAA9D,MAAA,EAAAgE,WAAA;QAAA,OAGWpC;MAAM,GACP/B,IAAI,CAACE,WAAW,CAACiB,KAAK,EAAEhB,MAAM,CAACgB,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAAA,WAC5CiB,OAAO,CAACK,KAAK;QAAA,SACf,KAAK;QAAA,cACAtB,KAAK,CAACK,UAAU;QAAA,cACnBe,MAAM,CAACE,KAAK;QAAA,uBAAA2B,MAAA,IAAZ7B,MAAM,CAACE,KAAK,GAAA2B;MAAA;QAGnBpD,OAAO,EAAE,SAAAA,CAAA,EAAkB;UAAA,SAAAqD,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAdC,IAAI,OAAA7D,KAAA,CAAA0D,IAAA,GAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;YAAJD,IAAI,CAAAC,IAAA,IAAAH,SAAA,CAAAG,IAAA;UAAA;UACf,OAAAR,YAAA,CAAAC,SAAA,SAAAD,YAAA,CAAA3D,MAAA,eAAA2D,YAAA;YAAA,SAGe;UAAoB,IAC5BrC,KAAK,CAACZ,OAAO,GAAG,GAAGwD,IAAI,CAAC,IAAI,EAAE;QAIvC,CAAC;QACDvB,IAAI,EAAE,SAAAA,CAAA;UAAA,SAAAyB,KAAA,GAAAJ,SAAA,CAAAC,MAAA,EAAIC,IAAI,OAAA7D,KAAA,CAAA+D,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;YAAJH,IAAI,CAAAG,KAAA,IAAAL,SAAA,CAAAK,KAAA;UAAA;UAAA,OAAY/C,KAAK,CAACqB,IAAI,GAAG,GAAGuB,IAAI,CAAC;QAAA;MAAA;IAKzD,CAAC,CAAC;IAEF,OAAO;MACLxC,KAAK;MACL4C,GAAG,EAAE7C,MAAM;MACXG,MAAM;MACND,QAAQ;MACRM;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
@@ -187,6 +187,11 @@ export const YTreeView = defineComponent({
187
187
  if (to) {
188
188
  activeSet.value.add(key);
189
189
  node.active = true;
190
+ } else {
191
+ if (props.requiredActive && activeSet.value.size === 1 && key === inactiveKey) {
192
+ issueVnodeState(key);
193
+ return;
194
+ }
190
195
  }
191
196
  if (inactiveKey && inactiveKey in nodes.value) {
192
197
  activeSet.value.delete(inactiveKey);
@@ -1 +1 @@
1
- {"version":3,"file":"YTreeView.mjs","names":["computed","defineComponent","onMounted","provide","ref","shallowRef","watch","watchEffect","useModelDuplex","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","hasOwnProperty","debounce","chooseProps","YProgressBar","YTreeViewNode","pressYTreeViewNodeProps","filterTreeItem","filterTreeItems","getKeys","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","activeStrategy","String","selected","selectStrategy","returnItem","defaultExpand","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","emit","expose","nodes","expandedSet","Set","selectedSet","activeSet","excludedSet","filterItemsFn","excludeItem","expandedCache","searchLoading","items","search","arguments","length","undefined","excluded","value","diff","forEach","key","updateExpanded","item","itemKey","itemText","itemChildren","expand","getDescendants","descendants","childKeys","push","childKey","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","existNode","vnode","indeterminate","node","map","child","add","issueVnodeState","to","isArray","delete","neo","deep","until","Object","entries","_ref2","emitExpanded","updateActive","event","inactiveKey","keys","activeSingleModifier","getModifierState","descendant","updateSelected","arr","emitActive","emitSelected","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","nodeKey","neoKeys","k","oldSelected","clear","isExcluded","has","register","activeValue","selectedValue","renderLeaves","leaf","classes","styles","color","activeColor","_createVNode","_Fragment","_mergeProps","_createTextVNode"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\r\n PropType,\r\n Ref,\r\n VNode,\r\n computed,\r\n defineComponent,\r\n onMounted,\r\n provide,\r\n ref,\r\n shallowRef,\r\n watch,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { CandidateKey } from '../../types';\r\nimport { differenceBetween } from '../../util/array';\r\nimport { isColorValue } from '../../util/color';\r\nimport {\r\n deepEqual,\r\n getObjectValueByPath,\r\n hasOwnProperty,\r\n} from '../../util/common';\r\nimport { debounce } from '../../util/debounce';\r\nimport { chooseProps } from '../../util/vue-component';\r\nimport { YProgressBar } from '../progress-bar';\r\nimport { YTreeViewNode, pressYTreeViewNodeProps } from './YTreeViewNode';\r\nimport { NodeState, TreeviewFilterFn } from './types';\r\nimport { filterTreeItem, filterTreeItems, getKeys } from './util';\r\n\r\nimport './YTreeView.scss';\r\n\r\nconst treeViewNodeProps = pressYTreeViewNodeProps();\r\n\r\nexport const YTreeView = defineComponent({\r\n name: 'YTreeView',\r\n props: {\r\n expanded: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n active: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n multipleActive: Boolean,\r\n activeStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'independent',\r\n },\r\n selected: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n selectStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'leaf',\r\n },\r\n returnItem: Boolean,\r\n defaultExpand: [Boolean, String, Number],\r\n filter: Function as PropType<TreeviewFilterFn>,\r\n searchDebounceWait: {\r\n type: Number as PropType<number>,\r\n default: 700,\r\n },\r\n ...treeViewNodeProps,\r\n },\r\n emits: ['update:expanded', 'update:active', 'update:selected'],\r\n setup(props, { slots, emit, expose }) {\r\n const nodes = ref<Record<CandidateKey, any>>({});\r\n\r\n const expanded = useModelDuplex(props, 'expanded');\r\n const active = useModelDuplex(props, 'active');\r\n const selected = useModelDuplex(props, 'selected');\r\n\r\n const expandedSet = ref(new Set<CandidateKey>());\r\n const selectedSet = ref(new Set<CandidateKey>());\r\n const activeSet = ref(new Set<CandidateKey>());\r\n const excludedSet = ref(new Set<CandidateKey>());\r\n const filterItemsFn = shallowRef(\r\n debounce(excludeItem, props.searchDebounceWait),\r\n );\r\n const expandedCache = ref<CandidateKey[]>([]);\r\n const searchLoading = shallowRef(false);\r\n\r\n function excludeItem(items: any[], search = '', filter = filterTreeItem) {\r\n const excluded = new Set<CandidateKey>();\r\n if (!search) {\r\n searchLoading.value = false;\r\n excludedSet.value = excluded;\r\n const diff = differenceBetween(expandedCache.value, [\r\n ...expandedSet.value,\r\n ]);\r\n diff.forEach((key) => {\r\n updateExpanded(key, false);\r\n });\r\n expandedCache.value.forEach((key) => {\r\n updateExpanded(key, true);\r\n });\r\n return;\r\n }\r\n for (const item of items) {\r\n filterTreeItems(\r\n filter,\r\n item,\r\n search ?? '',\r\n props.itemKey,\r\n props.itemText,\r\n props.itemChildren as string,\r\n excluded,\r\n );\r\n }\r\n excludedSet.value = excluded;\r\n searchLoading.value = false;\r\n expand();\r\n }\r\n\r\n watchEffect(() => {\r\n searchLoading.value = true;\r\n filterItemsFn.value(props.items, props.search, props.filter);\r\n });\r\n\r\n // Util Methods\r\n function getDescendants(\r\n key: CandidateKey,\r\n descendants: CandidateKey[] = [],\r\n ) {\r\n const { childKeys } = nodes.value[key];\r\n descendants.push(...childKeys);\r\n for (const childKey of childKeys) {\r\n descendants = getDescendants(childKey, descendants);\r\n }\r\n return descendants;\r\n }\r\n\r\n function getNodeKey(itemOrKey: any) {\r\n return props.returnItem\r\n ? getObjectValueByPath(itemOrKey, props.itemKey)\r\n : itemOrKey;\r\n }\r\n\r\n // State Methods\r\n function updateNodes(\r\n items: any[],\r\n parentKey: CandidateKey | null = null,\r\n level = 0,\r\n ) {\r\n for (const item of items) {\r\n const key = getObjectValueByPath(item, props.itemKey);\r\n const children =\r\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\r\n const exist = hasOwnProperty(nodes.value, key);\r\n const existNode = exist\r\n ? nodes.value[key]\r\n : {\r\n vnode: null,\r\n selected: false,\r\n indeterminate: false,\r\n active: false,\r\n expanded: false,\r\n };\r\n const node: NodeState = {\r\n vnode: existNode.vnode,\r\n item,\r\n level,\r\n parentKey,\r\n childKeys: children.map((child: any) =>\r\n getObjectValueByPath(child, props.itemKey),\r\n ),\r\n expanded: children.length > 0 && existNode.expanded,\r\n active: existNode.active,\r\n indeterminate: existNode.indeterminate,\r\n selected: existNode.selected,\r\n };\r\n\r\n updateNodes(children, key, level + 1);\r\n\r\n nodes.value[key] = node;\r\n if (nodes.value[key].expanded) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].selected) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].active) {\r\n activeSet.value.add(key);\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n function updateExpanded(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n const children = getObjectValueByPath(\r\n node.item,\r\n props.itemChildren as string,\r\n );\r\n if (Array.isArray(children) && children.length > 0) {\r\n to ? expandedSet.value.add(key) : expandedSet.value.delete(key);\r\n node.expanded = to;\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n watch(\r\n expandedSet,\r\n (neo) => {\r\n if (!props.search) {\r\n expandedCache.value = [...neo];\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n function expand(until: boolean | string | number = true) {\r\n Object.entries(nodes.value).forEach(([key, node]) => {\r\n if (until === true || until >= node.level) {\r\n updateExpanded(key, true);\r\n }\r\n });\r\n emitExpanded();\r\n return expandedSet.value;\r\n }\r\n\r\n function updateActive(key: CandidateKey, to: boolean, event?: MouseEvent) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n let inactiveKey = !to ? key : '';\r\n if (!props.multipleActive) {\r\n [inactiveKey] = activeSet.value.keys();\r\n }\r\n if (to) {\r\n activeSet.value.add(key);\r\n node.active = true;\r\n }\r\n if (inactiveKey && inactiveKey in nodes.value) {\r\n activeSet.value.delete(inactiveKey);\r\n nodes.value[inactiveKey].active = false;\r\n issueVnodeState(inactiveKey);\r\n }\r\n\r\n if (\r\n props.activeSingleModifier &&\r\n event?.getModifierState(props.activeSingleModifier)\r\n ) {\r\n return;\r\n }\r\n\r\n if (props.multipleActive && props.activeStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? activeSet.value.add(descendant)\r\n : activeSet.value.delete(descendant);\r\n nodes.value[descendant].active = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function updateSelected(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n\r\n if (to) {\r\n selectedSet.value.add(key);\r\n node.selected = true;\r\n }\r\n\r\n if (!to && key in nodes.value) {\r\n selectedSet.value.delete(key);\r\n nodes.value[key].selected = false;\r\n issueVnodeState(key);\r\n }\r\n\r\n if (props.selectStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? selectedSet.value.add(descendant)\r\n : selectedSet.value.delete(descendant);\r\n nodes.value[descendant].selected = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function emitExpanded() {\r\n const arr = [...expandedSet.value];\r\n expanded.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitActive() {\r\n const arr = [...activeSet.value];\r\n active.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitSelected() {\r\n const arr = [...selectedSet.value];\r\n selected.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function stateWatcher(\r\n value: any[],\r\n stateSet: Ref<Set<CandidateKey>>,\r\n updater: (key: CandidateKey, to: boolean) => void,\r\n emitter: () => void,\r\n ) {\r\n const valuesOfKey = props.returnItem\r\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\r\n : value;\r\n const old = [...stateSet.value];\r\n if (deepEqual(old, valuesOfKey)) {\r\n return;\r\n }\r\n old.forEach((key) => updater(key, false));\r\n valuesOfKey.forEach((key) => updater(key, true));\r\n emitter();\r\n }\r\n\r\n watch(expanded, (neo) => {\r\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\r\n });\r\n\r\n watch(active, (neo) => {\r\n stateWatcher(neo, activeSet, updateActive, emitActive);\r\n });\r\n\r\n watch(selected, (neo) => {\r\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\r\n });\r\n\r\n watch(\r\n () => props.items,\r\n (neo: any[]) => {\r\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\r\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\r\n );\r\n const neoKeys = getKeys(\r\n neo,\r\n props.itemKey,\r\n props.itemChildren as string,\r\n );\r\n const diff = differenceBetween(oldKeys, neoKeys);\r\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\r\n return;\r\n }\r\n diff.forEach((k) => delete nodes.value[k]);\r\n\r\n // init\r\n const oldSelected = [...selectedSet.value];\r\n selectedSet.value.clear();\r\n expandedSet.value.clear();\r\n activeSet.value.clear();\r\n updateNodes(neo);\r\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\r\n emitSelected();\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n // Search\r\n function isExcluded(key: CandidateKey) {\r\n return !!props.search && excludedSet.value.has(key);\r\n }\r\n\r\n // Provide & Issue\r\n function issueVnodeState(key: CandidateKey) {\r\n const node = nodes.value[key];\r\n if (node && node.vnode) {\r\n node.vnode.active = node.active;\r\n node.vnode.selected = node.selected;\r\n node.vnode.indeterminate = node.indeterminate;\r\n node.vnode.expanded = node.expanded;\r\n }\r\n }\r\n\r\n function register(key: CandidateKey, vnode: VNode) {\r\n if (nodes.value[key]) {\r\n nodes.value[key].vnode = vnode;\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n\r\n updateNodes(props.items);\r\n\r\n for (const activeValue of props.active.map(getNodeKey)) {\r\n updateActive(activeValue, true);\r\n }\r\n\r\n for (const selectedValue of props.selected.map(getNodeKey)) {\r\n updateSelected(selectedValue, true);\r\n }\r\n\r\n provide('tree-view', {\r\n register,\r\n updateExpanded,\r\n updateActive,\r\n updateSelected,\r\n emitExpanded,\r\n emitActive,\r\n emitSelected,\r\n isExcluded,\r\n searchLoading,\r\n });\r\n\r\n const renderLeaves = computed(() => {\r\n return props.items.filter((leaf) => {\r\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view': true,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n let color = props.activeColor;\r\n if (props.activeColor && !isColorValue(props.activeColor)) {\r\n color = `var(--y-theme-${props.activeColor})`;\r\n }\r\n return {\r\n [`--y-tree-view__active-color`]: color,\r\n };\r\n });\r\n\r\n onMounted(() => {\r\n if (props.defaultExpand !== undefined) {\r\n expandedCache.value = [...expand(props.defaultExpand)];\r\n } else {\r\n expanded.value.forEach((v: any) => updateExpanded(getNodeKey(v), true));\r\n emitExpanded();\r\n }\r\n });\r\n\r\n expose({\r\n expand,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <div class={classes.value} style={styles.value} role=\"tree\">\r\n {searchLoading.value && <YProgressBar indeterminate />}\r\n {renderLeaves.value.length > 0 ? (\r\n renderLeaves.value.map((leaf) => {\r\n return (\r\n <YTreeViewNode\r\n v-slots={slots}\r\n key={getObjectValueByPath(leaf, props.itemKey)}\r\n {...{\r\n ...chooseProps(props, treeViewNodeProps),\r\n item: leaf,\r\n level: 0,\r\n }}\r\n ></YTreeViewNode>\r\n );\r\n })\r\n ) : (\r\n <div class=\"y-tree-view__no-data\">\r\n {slots['no-data'] ? slots['no-data']() : <span>No Data</span>}\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n nodes,\r\n expandedSet,\r\n selectedSet,\r\n activeSet,\r\n excludedSet,\r\n searchLoading,\r\n expandedCache,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeView = InstanceType<typeof YTreeView>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YTreeView.mjs","names":["computed","defineComponent","onMounted","provide","ref","shallowRef","watch","watchEffect","useModelDuplex","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","hasOwnProperty","debounce","chooseProps","YProgressBar","YTreeViewNode","pressYTreeViewNodeProps","filterTreeItem","filterTreeItems","getKeys","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","activeStrategy","String","selected","selectStrategy","returnItem","defaultExpand","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","emit","expose","nodes","expandedSet","Set","selectedSet","activeSet","excludedSet","filterItemsFn","excludeItem","expandedCache","searchLoading","items","search","arguments","length","undefined","excluded","value","diff","forEach","key","updateExpanded","item","itemKey","itemText","itemChildren","expand","getDescendants","descendants","childKeys","push","childKey","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","existNode","vnode","indeterminate","node","map","child","add","issueVnodeState","to","isArray","delete","neo","deep","until","Object","entries","_ref2","emitExpanded","updateActive","event","inactiveKey","keys","requiredActive","size","activeSingleModifier","getModifierState","descendant","updateSelected","arr","emitActive","emitSelected","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","nodeKey","neoKeys","k","oldSelected","clear","isExcluded","has","register","activeValue","selectedValue","renderLeaves","leaf","classes","styles","color","activeColor","_createVNode","_Fragment","_mergeProps","_createTextVNode"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\n PropType,\n Ref,\n VNode,\n computed,\n defineComponent,\n onMounted,\n provide,\n ref,\n shallowRef,\n watch,\n watchEffect,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { CandidateKey } from '../../types';\nimport { differenceBetween } from '../../util/array';\nimport { isColorValue } from '../../util/color';\nimport {\n deepEqual,\n getObjectValueByPath,\n hasOwnProperty,\n} from '../../util/common';\nimport { debounce } from '../../util/debounce';\nimport { chooseProps } from '../../util/vue-component';\nimport { YProgressBar } from '../progress-bar';\nimport { YTreeViewNode, pressYTreeViewNodeProps } from './YTreeViewNode';\nimport { NodeState, TreeviewFilterFn } from './types';\nimport { filterTreeItem, filterTreeItems, getKeys } from './util';\n\nimport './YTreeView.scss';\n\nconst treeViewNodeProps = pressYTreeViewNodeProps();\n\nexport const YTreeView = defineComponent({\n name: 'YTreeView',\n props: {\n expanded: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n active: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n multipleActive: Boolean,\n activeStrategy: {\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\n default: 'independent',\n },\n selected: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n selectStrategy: {\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\n default: 'leaf',\n },\n returnItem: Boolean,\n defaultExpand: [Boolean, String, Number],\n filter: Function as PropType<TreeviewFilterFn>,\n searchDebounceWait: {\n type: Number as PropType<number>,\n default: 700,\n },\n ...treeViewNodeProps,\n },\n emits: ['update:expanded', 'update:active', 'update:selected'],\n setup(props, { slots, emit, expose }) {\n const nodes = ref<Record<CandidateKey, any>>({});\n\n const expanded = useModelDuplex(props, 'expanded');\n const active = useModelDuplex(props, 'active');\n const selected = useModelDuplex(props, 'selected');\n\n const expandedSet = ref(new Set<CandidateKey>());\n const selectedSet = ref(new Set<CandidateKey>());\n const activeSet = ref(new Set<CandidateKey>());\n const excludedSet = ref(new Set<CandidateKey>());\n const filterItemsFn = shallowRef(\n debounce(excludeItem, props.searchDebounceWait),\n );\n const expandedCache = ref<CandidateKey[]>([]);\n const searchLoading = shallowRef(false);\n\n function excludeItem(items: any[], search = '', filter = filterTreeItem) {\n const excluded = new Set<CandidateKey>();\n if (!search) {\n searchLoading.value = false;\n excludedSet.value = excluded;\n const diff = differenceBetween(expandedCache.value, [\n ...expandedSet.value,\n ]);\n diff.forEach((key) => {\n updateExpanded(key, false);\n });\n expandedCache.value.forEach((key) => {\n updateExpanded(key, true);\n });\n return;\n }\n for (const item of items) {\n filterTreeItems(\n filter,\n item,\n search ?? '',\n props.itemKey,\n props.itemText,\n props.itemChildren as string,\n excluded,\n );\n }\n excludedSet.value = excluded;\n searchLoading.value = false;\n expand();\n }\n\n watchEffect(() => {\n searchLoading.value = true;\n filterItemsFn.value(props.items, props.search, props.filter);\n });\n\n // Util Methods\n function getDescendants(\n key: CandidateKey,\n descendants: CandidateKey[] = [],\n ) {\n const { childKeys } = nodes.value[key];\n descendants.push(...childKeys);\n for (const childKey of childKeys) {\n descendants = getDescendants(childKey, descendants);\n }\n return descendants;\n }\n\n function getNodeKey(itemOrKey: any) {\n return props.returnItem\n ? getObjectValueByPath(itemOrKey, props.itemKey)\n : itemOrKey;\n }\n\n // State Methods\n function updateNodes(\n items: any[],\n parentKey: CandidateKey | null = null,\n level = 0,\n ) {\n for (const item of items) {\n const key = getObjectValueByPath(item, props.itemKey);\n const children =\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\n const exist = hasOwnProperty(nodes.value, key);\n const existNode = exist\n ? nodes.value[key]\n : {\n vnode: null,\n selected: false,\n indeterminate: false,\n active: false,\n expanded: false,\n };\n const node: NodeState = {\n vnode: existNode.vnode,\n item,\n level,\n parentKey,\n childKeys: children.map((child: any) =>\n getObjectValueByPath(child, props.itemKey),\n ),\n expanded: children.length > 0 && existNode.expanded,\n active: existNode.active,\n indeterminate: existNode.indeterminate,\n selected: existNode.selected,\n };\n\n updateNodes(children, key, level + 1);\n\n nodes.value[key] = node;\n if (nodes.value[key].expanded) {\n expandedSet.value.add(key);\n }\n if (nodes.value[key].selected) {\n expandedSet.value.add(key);\n }\n if (nodes.value[key].active) {\n activeSet.value.add(key);\n }\n\n issueVnodeState(key);\n }\n }\n\n function updateExpanded(key: CandidateKey, to: boolean) {\n if (!(key in nodes.value)) return;\n const node = nodes.value[key];\n const children = getObjectValueByPath(\n node.item,\n props.itemChildren as string,\n );\n if (Array.isArray(children) && children.length > 0) {\n to ? expandedSet.value.add(key) : expandedSet.value.delete(key);\n node.expanded = to;\n issueVnodeState(key);\n }\n }\n\n watch(\n expandedSet,\n (neo) => {\n if (!props.search) {\n expandedCache.value = [...neo];\n }\n },\n { deep: true },\n );\n\n function expand(until: boolean | string | number = true) {\n Object.entries(nodes.value).forEach(([key, node]) => {\n if (until === true || until >= node.level) {\n updateExpanded(key, true);\n }\n });\n emitExpanded();\n return expandedSet.value;\n }\n\n function updateActive(key: CandidateKey, to: boolean, event?: MouseEvent) {\n if (!(key in nodes.value)) return;\n const node = nodes.value[key];\n let inactiveKey = !to ? key : '';\n if (!props.multipleActive) {\n [inactiveKey] = activeSet.value.keys();\n }\n if (to) {\n activeSet.value.add(key);\n node.active = true;\n } else {\n if (\n props.requiredActive &&\n activeSet.value.size === 1 &&\n key === inactiveKey\n ) {\n issueVnodeState(key);\n return;\n }\n }\n if (inactiveKey && inactiveKey in nodes.value) {\n activeSet.value.delete(inactiveKey);\n nodes.value[inactiveKey].active = false;\n issueVnodeState(inactiveKey);\n }\n\n if (\n props.activeSingleModifier &&\n event?.getModifierState(props.activeSingleModifier)\n ) {\n return;\n }\n\n if (props.multipleActive && props.activeStrategy === 'cascade') {\n for (const descendant of getDescendants(key)) {\n if (descendant in nodes.value) {\n to\n ? activeSet.value.add(descendant)\n : activeSet.value.delete(descendant);\n nodes.value[descendant].active = to;\n issueVnodeState(descendant);\n }\n }\n }\n }\n\n function updateSelected(key: CandidateKey, to: boolean) {\n if (!(key in nodes.value)) return;\n const node = nodes.value[key];\n\n if (to) {\n selectedSet.value.add(key);\n node.selected = true;\n }\n\n if (!to && key in nodes.value) {\n selectedSet.value.delete(key);\n nodes.value[key].selected = false;\n issueVnodeState(key);\n }\n\n if (props.selectStrategy === 'cascade') {\n for (const descendant of getDescendants(key)) {\n if (descendant in nodes.value) {\n to\n ? selectedSet.value.add(descendant)\n : selectedSet.value.delete(descendant);\n nodes.value[descendant].selected = to;\n issueVnodeState(descendant);\n }\n }\n }\n }\n\n function emitExpanded() {\n const arr = [...expandedSet.value];\n expanded.value = props.returnItem\n ? arr.map((key) => nodes.value[key].item)\n : arr;\n }\n\n function emitActive() {\n const arr = [...activeSet.value];\n active.value = props.returnItem\n ? arr.map((key) => nodes.value[key].item)\n : arr;\n }\n\n function emitSelected() {\n const arr = [...selectedSet.value];\n selected.value = props.returnItem\n ? arr.map((key) => nodes.value[key].item)\n : arr;\n }\n\n function stateWatcher(\n value: any[],\n stateSet: Ref<Set<CandidateKey>>,\n updater: (key: CandidateKey, to: boolean) => void,\n emitter: () => void,\n ) {\n const valuesOfKey = props.returnItem\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\n : value;\n const old = [...stateSet.value];\n if (deepEqual(old, valuesOfKey)) {\n return;\n }\n old.forEach((key) => updater(key, false));\n valuesOfKey.forEach((key) => updater(key, true));\n emitter();\n }\n\n watch(expanded, (neo) => {\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\n });\n\n watch(active, (neo) => {\n stateWatcher(neo, activeSet, updateActive, emitActive);\n });\n\n watch(selected, (neo) => {\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\n });\n\n watch(\n () => props.items,\n (neo: any[]) => {\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\n );\n const neoKeys = getKeys(\n neo,\n props.itemKey,\n props.itemChildren as string,\n );\n const diff = differenceBetween(oldKeys, neoKeys);\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\n return;\n }\n diff.forEach((k) => delete nodes.value[k]);\n\n // init\n const oldSelected = [...selectedSet.value];\n selectedSet.value.clear();\n expandedSet.value.clear();\n activeSet.value.clear();\n updateNodes(neo);\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\n emitSelected();\n }\n },\n { deep: true },\n );\n\n // Search\n function isExcluded(key: CandidateKey) {\n return !!props.search && excludedSet.value.has(key);\n }\n\n // Provide & Issue\n function issueVnodeState(key: CandidateKey) {\n const node = nodes.value[key];\n if (node && node.vnode) {\n node.vnode.active = node.active;\n node.vnode.selected = node.selected;\n node.vnode.indeterminate = node.indeterminate;\n node.vnode.expanded = node.expanded;\n }\n }\n\n function register(key: CandidateKey, vnode: VNode) {\n if (nodes.value[key]) {\n nodes.value[key].vnode = vnode;\n }\n\n issueVnodeState(key);\n }\n\n updateNodes(props.items);\n\n for (const activeValue of props.active.map(getNodeKey)) {\n updateActive(activeValue, true);\n }\n\n for (const selectedValue of props.selected.map(getNodeKey)) {\n updateSelected(selectedValue, true);\n }\n\n provide('tree-view', {\n register,\n updateExpanded,\n updateActive,\n updateSelected,\n emitExpanded,\n emitActive,\n emitSelected,\n isExcluded,\n searchLoading,\n });\n\n const renderLeaves = computed(() => {\n return props.items.filter((leaf) => {\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n const classes = computed(() => {\n return {\n 'y-tree-view': true,\n };\n });\n\n const styles = computed(() => {\n let color = props.activeColor;\n if (props.activeColor && !isColorValue(props.activeColor)) {\n color = `var(--y-theme-${props.activeColor})`;\n }\n return {\n [`--y-tree-view__active-color`]: color,\n };\n });\n\n onMounted(() => {\n if (props.defaultExpand !== undefined) {\n expandedCache.value = [...expand(props.defaultExpand)];\n } else {\n expanded.value.forEach((v: any) => updateExpanded(getNodeKey(v), true));\n emitExpanded();\n }\n });\n\n expose({\n expand,\n });\n\n useRender(() => {\n return (\n <>\n <div class={classes.value} style={styles.value} role=\"tree\">\n {searchLoading.value && <YProgressBar indeterminate />}\n {renderLeaves.value.length > 0 ? (\n renderLeaves.value.map((leaf) => {\n return (\n <YTreeViewNode\n v-slots={slots}\n key={getObjectValueByPath(leaf, props.itemKey)}\n {...{\n ...chooseProps(props, treeViewNodeProps),\n item: leaf,\n level: 0,\n }}\n ></YTreeViewNode>\n );\n })\n ) : (\n <div class=\"y-tree-view__no-data\">\n {slots['no-data'] ? slots['no-data']() : <span>No Data</span>}\n </div>\n )}\n </div>\n </>\n );\n });\n\n return {\n nodes,\n expandedSet,\n selectedSet,\n activeSet,\n excludedSet,\n searchLoading,\n expandedCache,\n };\n },\n});\n\nexport type YTreeView = InstanceType<typeof YTreeView>;\n"],"mappings":"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"}
@@ -14,6 +14,7 @@ export const pressYTreeViewNodeProps = propsFactory({
14
14
  enableActive: Boolean,
15
15
  activeClass: [String, Array],
16
16
  activeSingleModifier: String,
17
+ requiredActive: Boolean,
17
18
  activeColor: {
18
19
  type: String,
19
20
  default: 'primary'