yuyeon 0.3.2-rc.9 → 0.3.4-beta.9

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 (127) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +3414 -3201
  3. package/dist/yuyeon.umd.cjs +3 -3
  4. package/lib/components/draggable/YDraggable.js.map +1 -1
  5. package/lib/components/draggable/index.js +2 -0
  6. package/lib/components/draggable/index.js.map +1 -0
  7. package/lib/components/field-input/YFieldInput.js +4 -2
  8. package/lib/components/field-input/YFieldInput.js.map +1 -1
  9. package/lib/components/input/YInput.scss +1 -1
  10. package/lib/components/radio/YRadio.js +58 -0
  11. package/lib/components/radio/YRadio.js.map +1 -0
  12. package/lib/components/radio/YRadio.scss +38 -0
  13. package/lib/components/radio/YRadioIcon.js +33 -0
  14. package/lib/components/radio/YRadioIcon.js.map +1 -0
  15. package/lib/components/radio/YRadioIcon.scss +44 -0
  16. package/lib/components/radio/index.js +3 -0
  17. package/lib/components/radio/index.js.map +1 -0
  18. package/lib/components/select/YSelect.js +0 -1
  19. package/lib/components/select/YSelect.js.map +1 -1
  20. package/lib/components/table/YDataTable.js +26 -13
  21. package/lib/components/table/YDataTable.js.map +1 -1
  22. package/lib/components/table/YDataTableBody.js +14 -18
  23. package/lib/components/table/YDataTableBody.js.map +1 -1
  24. package/lib/components/table/YDataTableControl.js +8 -6
  25. package/lib/components/table/YDataTableControl.js.map +1 -1
  26. package/lib/components/table/YDataTableControl.scss +10 -0
  27. package/lib/components/table/YDataTableLayerRow.js +87 -0
  28. package/lib/components/table/YDataTableLayerRow.js.map +1 -0
  29. package/lib/components/table/YDataTableLayerRow.vue +7 -6
  30. package/lib/components/table/YDataTableLayerRows.js +60 -0
  31. package/lib/components/table/YDataTableLayerRows.js.map +1 -0
  32. package/lib/components/table/YDataTableLayerRows.scss +14 -0
  33. package/lib/components/table/YDataTableRow.js +13 -5
  34. package/lib/components/table/YDataTableRow.js.map +1 -1
  35. package/lib/components/table/YDataTableRows.scss +14 -0
  36. package/lib/components/table/YDataTableServer.js +20 -8
  37. package/lib/components/table/YDataTableServer.js.map +1 -1
  38. package/lib/components/table/composables/expand.js +49 -0
  39. package/lib/components/table/composables/expand.js.map +1 -0
  40. package/lib/components/table/composables/items.js +8 -2
  41. package/lib/components/table/composables/items.js.map +1 -1
  42. package/lib/components/table/index.js +2 -0
  43. package/lib/components/table/index.js.map +1 -1
  44. package/lib/components/table/types/item.js.map +1 -1
  45. package/lib/components/text-highlighter/YTextHighlighter.js +2 -1
  46. package/lib/components/text-highlighter/YTextHighlighter.js.map +1 -1
  47. package/lib/components/tree-view/YTreeViewNode.js +6 -2
  48. package/lib/components/tree-view/YTreeViewNode.js.map +1 -1
  49. package/lib/composables/style-color.js +1 -2
  50. package/lib/composables/style-color.js.map +1 -1
  51. package/lib/composables/theme/index.js +8 -1
  52. package/lib/composables/theme/index.js.map +1 -1
  53. package/lib/composables/validation.js +7 -4
  54. package/lib/composables/validation.js.map +1 -1
  55. package/lib/directives/index.js +3 -0
  56. package/lib/directives/index.js.map +1 -0
  57. package/lib/directives/plate-wave/index.js +2 -2
  58. package/lib/directives/plate-wave/index.js.map +1 -1
  59. package/lib/directives/theme-class/index.js +24 -0
  60. package/lib/directives/theme-class/index.js.map +1 -0
  61. package/lib/util/string.js +3 -0
  62. package/lib/util/string.js.map +1 -1
  63. package/package.json +13 -2
  64. package/types/abstract/items.d.ts +4 -4
  65. package/types/components/badge/YBadge.d.ts +4 -7
  66. package/types/components/button/YButton.d.ts +8 -8
  67. package/types/components/chip/YChip.d.ts +1 -4
  68. package/types/components/date-picker/YDateCalendar.d.ts +1 -1
  69. package/types/components/date-picker/YDatePicker.d.ts +1 -1
  70. package/types/components/date-picker/YDatePickerControl.d.ts +5 -5
  71. package/types/components/dialog/YDialog.d.ts +58 -58
  72. package/types/components/draggable/index.d.ts +1 -0
  73. package/types/components/dropdown/YDropdown.d.ts +55 -55
  74. package/types/components/field-input/YFieldInput.d.ts +19 -13
  75. package/types/components/hover/YHover.d.ts +3 -3
  76. package/types/components/icon/YIcon.d.ts +2 -2
  77. package/types/components/img/YImg.d.ts +5 -5
  78. package/types/components/input/YInput.d.ts +9 -9
  79. package/types/components/ip-field/YIpv4Field.d.ts +1 -1
  80. package/types/components/layer/YLayer.d.ts +26 -26
  81. package/types/components/layer/content.d.ts +1 -1
  82. package/types/components/layer/scroll-strategies.d.ts +1 -1
  83. package/types/components/list/YListItem.d.ts +1 -1
  84. package/types/components/menu/YMenu.d.ts +9 -9
  85. package/types/components/pagination/YPagination.d.ts +5 -5
  86. package/types/components/radio/YRadio.d.ts +25 -0
  87. package/types/components/radio/YRadioIcon.d.ts +6 -0
  88. package/types/components/radio/index.d.ts +2 -0
  89. package/types/components/select/YSelect.d.ts +68 -62
  90. package/types/components/snackbar/YSnackbar.d.ts +33 -33
  91. package/types/components/switch/YSwitch.d.ts +10 -10
  92. package/types/components/tab/YTab.d.ts +12 -12
  93. package/types/components/tab/YTabs.d.ts +4 -4
  94. package/types/components/table/YDataTable.d.ts +40 -15
  95. package/types/components/table/YDataTableBody.d.ts +3 -5
  96. package/types/components/table/YDataTableControl.d.ts +14 -2
  97. package/types/components/table/YDataTableHead.d.ts +2 -2
  98. package/types/components/table/YDataTableLayerRow.d.ts +22 -0
  99. package/types/components/table/YDataTableLayerRows.d.ts +9 -0
  100. package/types/components/table/YDataTableServer.d.ts +60 -26
  101. package/types/components/table/YTable.d.ts +4 -4
  102. package/types/components/table/composables/expand.d.ts +42 -0
  103. package/types/components/table/composables/header.d.ts +1 -1
  104. package/types/components/table/composables/items.d.ts +3 -3
  105. package/types/components/table/composables/pagination.d.ts +2 -2
  106. package/types/components/table/composables/selection.d.ts +3 -3
  107. package/types/components/table/composables/sorting.d.ts +1 -1
  108. package/types/components/table/index.d.ts +2 -0
  109. package/types/components/table/types/item.d.ts +1 -0
  110. package/types/components/textarea/YTextarea.d.ts +18 -18
  111. package/types/components/tooltip/YTooltip.d.ts +46 -46
  112. package/types/components/tree-view/YTreeView.d.ts +4 -4
  113. package/types/components/tree-view/YTreeViewNode.d.ts +8 -8
  114. package/types/composables/choice.d.ts +1 -1
  115. package/types/composables/coordinate/index.d.ts +8 -8
  116. package/types/composables/form.d.ts +2 -2
  117. package/types/composables/icon.d.ts +2 -2
  118. package/types/composables/list-items.d.ts +10 -10
  119. package/types/composables/style-color.d.ts +0 -1
  120. package/types/composables/theme/index.d.ts +1 -0
  121. package/types/composables/transition.d.ts +1 -1
  122. package/types/composables/validation.d.ts +3 -3
  123. package/types/directives/index.d.ts +2 -0
  124. package/types/directives/plate-wave/index.d.ts +7 -1
  125. package/types/shims.d.ts +64 -56
  126. package/types/util/string.d.ts +1 -0
  127. /package/types/directives/{theme-class.d.ts → theme-class/index.d.ts} +0 -0
@@ -1,14 +1,15 @@
1
1
  import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
2
2
  import { computed, getCurrentInstance } from 'vue';
3
3
  import { YButton } from "../button/YButton.js";
4
+ import { useExpand } from "./composables/expand.js";
5
+ import { useHeader } from "./composables/header.js";
6
+ import { useSelection } from "./composables/selection.js";
4
7
  import { useRender } from "../../composables/component.js";
5
8
  import { getPropertyFromItem } from "../../util/common.js";
6
9
  import { defineComponent } from "../../util/component/index.js";
7
10
  import { propsFactory } from "../../util/component/index.js";
8
11
  import { YIconCheckbox } from "../icons/index.js";
9
12
  import { YDataTableCell } from "./YDataTableCell.js";
10
- import { useHeader } from "./composables/header.js";
11
- import { useSelection } from "./composables/selection.js";
12
13
  export const pressYDataTableRowProps = propsFactory({
13
14
  index: Number,
14
15
  onHover: Function,
@@ -32,13 +33,17 @@ export const YDataTableRow = defineComponent({
32
33
  slots
33
34
  } = _ref;
34
35
  const vm = getCurrentInstance();
36
+ const {
37
+ columns
38
+ } = useHeader();
35
39
  const {
36
40
  isSelected,
37
41
  toggleSelect
38
42
  } = useSelection();
39
43
  const {
40
- columns
41
- } = useHeader();
44
+ isExpanded,
45
+ toggleExpand
46
+ } = useExpand();
42
47
  const selected = computed(() => props.item && isSelected(props.item));
43
48
  function arrayClasses(classes) {
44
49
  const ret = [];
@@ -70,7 +75,8 @@ export const YDataTableRow = defineComponent({
70
75
  useRender(() => {
71
76
  return _createVNode("tr", {
72
77
  "class": ['y-data-table__row', {
73
- 'y-data-table__row--selected': selected.value
78
+ 'y-data-table__row--selected': selected.value,
79
+ 'y-data-table__row--expanded': isExpanded(props.item)
74
80
  }],
75
81
  "onClick": props.onClick && onClick,
76
82
  "onContextmenu": props.onContextmenu && onContextmenu,
@@ -87,6 +93,8 @@ export const YDataTableRow = defineComponent({
87
93
  value: getPropertyFromItem(item.columns, column.key),
88
94
  selected: selected.value,
89
95
  toggleSelect,
96
+ isExpanded,
97
+ toggleExpand,
90
98
  el: vm?.proxy?.$el
91
99
  };
92
100
  const classes = computed(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableRow.js","names":["computed","getCurrentInstance","YButton","useRender","getPropertyFromItem","defineComponent","propsFactory","YIconCheckbox","YDataTableCell","useHeader","useSelection","pressYDataTableRowProps","index","Number","onHover","Function","onMousedown","onClick","onDblclick","onContextmenu","onKeydown","YDataTableRow","name","props","item","Object","cellProps","emits","setup","_ref","emit","slots","vm","isSelected","toggleSelect","columns","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","event","proxy","$el","_createVNode","value","map","column","colIndex","slotProps","raw","internalItem","key","el","result","call","_mergeProps","align","fixed","lastFixed","undefined","fixedOffset","rightOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { type PropType, computed, getCurrentInstance } from 'vue';\r\n\r\nimport { YButton } from '@/components/button/YButton';\r\nimport { useRender } from '@/composables/component';\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { defineComponent } from '@/util/component';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { YIconCheckbox } from '../icons';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from '@/components/table/composables/header';\r\nimport { useSelection } from '@/components/table/composables/selection';\r\nimport { CellProps, DataTableItem, type FixedPropType } from './types';\r\n\r\nexport const pressYDataTableRowProps = propsFactory(\r\n {\r\n index: Number as PropType<number>,\r\n onHover: Function as PropType<(...args: any[]) => void>,\r\n onMousedown: Function as PropType<(...args: any[]) => void>,\r\n onClick: Function as PropType<(...args: any[]) => void>,\r\n onDblclick: Function as PropType<(...args: any[]) => void>,\r\n onContextmenu: Function as PropType<(...args: any[]) => void>,\r\n onKeydown: Function as PropType<(...args: any[]) => void>,\r\n },\r\n 'YDataTableRow',\r\n);\r\n\r\nexport const YDataTableRow = defineComponent({\r\n name: 'YDataTableRow',\r\n props: {\r\n item: Object as PropType<DataTableItem>,\r\n cellProps: [Object, Function] as PropType<CellProps>,\r\n ...pressYDataTableRowProps(),\r\n },\r\n emits: ['hover', 'mousedown', 'click', 'dblclick', 'contextmenu'],\r\n setup(props, { emit, slots }) {\r\n const vm = getCurrentInstance();\r\n const { isSelected, toggleSelect } = useSelection();\r\n const { columns } = useHeader();\r\n\r\n const selected = computed(() => props.item && isSelected(props.item));\r\n\r\n function arrayClasses(classes: string | string[]) {\r\n const ret: string[] = [];\r\n if (typeof classes === 'string') {\r\n ret.push(classes);\r\n }\r\n if (Array.isArray(classes)) {\r\n classes.forEach((c) => {\r\n if (typeof c === 'string') ret.push(c);\r\n });\r\n }\r\n return ret;\r\n }\r\n\r\n function onMousedown(event: MouseEvent) {\r\n props.onMousedown?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onClick(event: MouseEvent) {\r\n props.onClick?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onContextmenu(event: MouseEvent) {\r\n props.onContextmenu?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onDblclick(event: MouseEvent) {\r\n props.onDblclick?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onKeydown(event: KeyboardEvent) {\r\n props.onKeydown?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n useRender(() => {\r\n return (\r\n <tr\r\n class={[\r\n 'y-data-table__row',\r\n { 'y-data-table__row--selected': selected.value },\r\n ]}\r\n onClick={props.onClick && onClick}\r\n onContextmenu={props.onContextmenu && onContextmenu}\r\n onDblclick={props.onDblclick && onDblclick}\r\n onMousedown={props.onMousedown && onMousedown}\r\n onKeydown={props.onKeydown && onKeydown}\r\n >\r\n {props.item &&\r\n columns.value.map((column, colIndex) => {\r\n const item = props.item!;\r\n const slotProps = {\r\n index: props.index!,\r\n item: props.item!.raw,\r\n internalItem: props.item!,\r\n columns: columns.value,\r\n value: getPropertyFromItem(item.columns, column.key),\r\n selected: selected.value,\r\n toggleSelect,\r\n el: vm?.proxy?.$el,\r\n };\r\n\r\n const classes = computed(() => {\r\n const ret: string[] = [];\r\n if (typeof column.classes === 'function') {\r\n const result = column.classes.call(\r\n null,\r\n slotProps.item,\r\n slotProps.index,\r\n column,\r\n );\r\n if (result) {\r\n ret.push(...arrayClasses(result));\r\n }\r\n } else if (column.classes) {\r\n ret.push(...arrayClasses(column.classes));\r\n }\r\n\r\n return ret;\r\n });\r\n\r\n const cellProps =\r\n typeof props.cellProps === 'function'\r\n ? props.cellProps({\r\n index: slotProps.index,\r\n column,\r\n internalItem: slotProps.internalItem,\r\n item: slotProps.item,\r\n value: slotProps.value,\r\n selected: slotProps.selected,\r\n })\r\n : props.cellProps;\r\n\r\n return (\r\n <YDataTableCell\r\n align={column.align}\r\n fixed={\r\n column.fixed\r\n ? (((column.fixed === 'right' ? 'trail' : 'lead') +\r\n (column.lastFixed ? '-last' : '')) as FixedPropType)\r\n : undefined\r\n }\r\n fixedOffset={column.fixedOffset}\r\n rightOffset={column.rightOffset}\r\n width={column.width}\r\n maxWidth={column.maxWidth}\r\n class={[\r\n 'y-data-table-data',\r\n {\r\n 'y-data-table-data--select':\r\n column.key === 'data-table-select',\r\n },\r\n ...classes.value,\r\n ]}\r\n {...cellProps}\r\n >\r\n {{\r\n default: () => {\r\n const slotName = `item.${column.key}`;\r\n\r\n if (slots[slotName]) {\r\n return slots[slotName]?.(slotProps);\r\n }\r\n\r\n if (column.key === 'data-table-select') {\r\n return (\r\n slots['item.data-table-select']?.(slotProps) ?? (\r\n <YButton\r\n variation={'text,small'}\r\n disabled={!item.selectable}\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation();\r\n if (item.selectable) toggleSelect(item);\r\n }}\r\n >\r\n <YIconCheckbox\r\n checked={isSelected(item)}\r\n disabled={!item.selectable}\r\n ></YIconCheckbox>\r\n </YButton>\r\n )\r\n );\r\n }\r\n\r\n return slotProps.value;\r\n },\r\n }}\r\n </YDataTableCell>\r\n );\r\n })}\r\n </tr>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDataTableRow.js","names":["computed","getCurrentInstance","YButton","useExpand","useHeader","useSelection","useRender","getPropertyFromItem","defineComponent","propsFactory","YIconCheckbox","YDataTableCell","pressYDataTableRowProps","index","Number","onHover","Function","onMousedown","onClick","onDblclick","onContextmenu","onKeydown","YDataTableRow","name","props","item","Object","cellProps","emits","setup","_ref","emit","slots","vm","columns","isSelected","toggleSelect","isExpanded","toggleExpand","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","event","proxy","$el","_createVNode","value","map","column","colIndex","slotProps","raw","internalItem","key","el","result","call","_mergeProps","align","fixed","lastFixed","undefined","fixedOffset","rightOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { type PropType, computed, getCurrentInstance } from 'vue';\n\nimport { YButton } from '@/components/button/YButton';\nimport { useExpand } from '@/components/table/composables/expand';\nimport { useHeader } from '@/components/table/composables/header';\nimport { useSelection } from '@/components/table/composables/selection';\nimport { useRender } from '@/composables/component';\nimport { getPropertyFromItem } from '@/util/common';\nimport { defineComponent } from '@/util/component';\nimport { propsFactory } from '@/util/component';\n\nimport { YIconCheckbox } from '../icons';\nimport { YDataTableCell } from './YDataTableCell';\nimport { CellProps, DataTableItem, type FixedPropType } from './types';\n\nexport const pressYDataTableRowProps = propsFactory(\n {\n index: Number as PropType<number>,\n onHover: Function as PropType<(...args: any[]) => void>,\n onMousedown: Function as PropType<(...args: any[]) => void>,\n onClick: Function as PropType<(...args: any[]) => void>,\n onDblclick: Function as PropType<(...args: any[]) => void>,\n onContextmenu: Function as PropType<(...args: any[]) => void>,\n onKeydown: Function as PropType<(...args: any[]) => void>,\n },\n 'YDataTableRow',\n);\n\nexport const YDataTableRow = defineComponent({\n name: 'YDataTableRow',\n props: {\n item: Object as PropType<DataTableItem>,\n cellProps: [Object, Function] as PropType<CellProps>,\n ...pressYDataTableRowProps(),\n },\n emits: ['hover', 'mousedown', 'click', 'dblclick', 'contextmenu'],\n setup(props, { emit, slots }) {\n const vm = getCurrentInstance();\n const { columns } = useHeader();\n const { isSelected, toggleSelect } = useSelection();\n const { isExpanded, toggleExpand } = useExpand();\n\n const selected = computed(() => props.item && isSelected(props.item));\n\n function arrayClasses(classes: string | string[]) {\n const ret: string[] = [];\n if (typeof classes === 'string') {\n ret.push(classes);\n }\n if (Array.isArray(classes)) {\n classes.forEach((c) => {\n if (typeof c === 'string') ret.push(c);\n });\n }\n return ret;\n }\n\n function onMousedown(event: MouseEvent) {\n props.onMousedown?.(event, vm?.proxy?.$el);\n }\n\n function onClick(event: MouseEvent) {\n props.onClick?.(event, vm?.proxy?.$el);\n }\n\n function onContextmenu(event: MouseEvent) {\n props.onContextmenu?.(event, vm?.proxy?.$el);\n }\n\n function onDblclick(event: MouseEvent) {\n props.onDblclick?.(event, vm?.proxy?.$el);\n }\n\n function onKeydown(event: KeyboardEvent) {\n props.onKeydown?.(event, vm?.proxy?.$el);\n }\n\n useRender(() => {\n return (\n <tr\n class={[\n 'y-data-table__row',\n {\n 'y-data-table__row--selected': selected.value,\n 'y-data-table__row--expanded': isExpanded(props.item!),\n },\n ]}\n onClick={props.onClick && onClick}\n onContextmenu={props.onContextmenu && onContextmenu}\n onDblclick={props.onDblclick && onDblclick}\n onMousedown={props.onMousedown && onMousedown}\n onKeydown={props.onKeydown && onKeydown}\n >\n {props.item &&\n columns.value.map((column, colIndex) => {\n const item = props.item!;\n const slotProps = {\n index: props.index!,\n item: props.item!.raw,\n internalItem: props.item!,\n columns: columns.value,\n value: getPropertyFromItem(item.columns, column.key),\n selected: selected.value,\n toggleSelect,\n isExpanded,\n toggleExpand,\n el: vm?.proxy?.$el,\n };\n\n const classes = computed(() => {\n const ret: string[] = [];\n if (typeof column.classes === 'function') {\n const result = column.classes.call(\n null,\n slotProps.item,\n slotProps.index,\n column,\n );\n if (result) {\n ret.push(...arrayClasses(result));\n }\n } else if (column.classes) {\n ret.push(...arrayClasses(column.classes));\n }\n\n return ret;\n });\n\n const cellProps =\n typeof props.cellProps === 'function'\n ? props.cellProps({\n index: slotProps.index,\n column,\n internalItem: slotProps.internalItem,\n item: slotProps.item,\n value: slotProps.value,\n selected: slotProps.selected,\n })\n : props.cellProps;\n\n return (\n <YDataTableCell\n align={column.align}\n fixed={\n column.fixed\n ? (((column.fixed === 'right' ? 'trail' : 'lead') +\n (column.lastFixed ? '-last' : '')) as FixedPropType)\n : undefined\n }\n fixedOffset={column.fixedOffset}\n rightOffset={column.rightOffset}\n width={column.width}\n maxWidth={column.maxWidth}\n class={[\n 'y-data-table-data',\n {\n 'y-data-table-data--select':\n column.key === 'data-table-select',\n },\n ...classes.value,\n ]}\n {...cellProps}\n >\n {{\n default: () => {\n const slotName = `item.${column.key}`;\n\n if (slots[slotName]) {\n return slots[slotName]?.(slotProps);\n }\n\n if (column.key === 'data-table-select') {\n return (\n slots['item.data-table-select']?.(slotProps) ?? (\n <YButton\n variation={'text,small'}\n disabled={!item.selectable}\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n if (item.selectable) toggleSelect(item);\n }}\n >\n <YIconCheckbox\n checked={isSelected(item)}\n disabled={!item.selectable}\n ></YIconCheckbox>\n </YButton>\n )\n );\n }\n\n return slotProps.value;\n },\n }}\n </YDataTableCell>\n );\n })}\n </tr>\n );\n });\n },\n});\n\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\n"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ .y-data-table-layer-rows {
2
+ position: absolute;
3
+ top: 0;
4
+ left: 0;
5
+ right: 0;
6
+ bottom: 0;
7
+ clip-path: inset(0 -20px 0 -20px);
8
+ }
9
+
10
+ .y-data-table-layer-row {
11
+ pointer-events: none;
12
+ position: absolute;
13
+ left: 0;
14
+ }
@@ -1,29 +1,31 @@
1
- import { mergeProps as _mergeProps, createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from "vue";
2
- import { computed, provide, ref, toRef } from 'vue';
1
+ import { mergeProps as _mergeProps, Fragment as _Fragment, createVNode as _createVNode, resolveDirective as _resolveDirective } from "vue";
2
+ import { Fragment, computed, provide, ref, toRef } from 'vue';
3
+ import { provideExpand } from "./composables/expand.js";
4
+ import { YDataTableInjectionKey } from "./composables/provides.js";
3
5
  import { useRender } from "../../composables/component.js";
4
6
  import { useResizeObserver } from "../../composables/resize-observer.js";
7
+ import { omit } from "../../util/common.js";
5
8
  import { chooseProps, defineComponent, propsFactory } from "../../util/component/index.js";
6
9
  import { debounce } from "../../util/debounce.js";
7
10
  import { toStyleSizeValue } from "../../util/ui.js";
8
11
  import { pressDataTableProps } from "./YDataTable.js";
9
12
  import { YDataTableBody } from "./YDataTableBody.js";
10
- import { YDataTableControl } from "./YDataTableControl.js";
13
+ import { YDataTableControl, pressYDataTableControlPropsOptions } from "./YDataTableControl.js";
11
14
  import { YDataTableHead } from "./YDataTableHead.js";
12
15
  import { YDataTableLayer } from "./YDataTableLayer.js";
13
16
  import { YTable } from "./YTable.js";
14
17
  import { createHeader } from "./composables/header.js";
15
18
  import { useItems } from "./composables/items.js";
16
19
  import { useOptions } from "./composables/options.js";
17
- import { createPagination, pressDataTablePaginationProps, providePagination } from "./composables/pagination.js";
20
+ import { createPagination, providePagination } from "./composables/pagination.js";
18
21
  import { provideSelection } from "./composables/selection.js";
19
22
  import { createSorting, provideSorting } from "./composables/sorting.js";
20
- import { YDataTableInjectionKey } from "./composables/provides.js";
21
23
  export const pressDataTableServerProps = propsFactory({
22
24
  total: {
23
25
  type: [Number, String],
24
26
  required: true
25
27
  },
26
- ...pressDataTablePaginationProps(),
28
+ ...omit(pressYDataTableControlPropsOptions(), ['setPage', 'setPageSize', 'pageLength']),
27
29
  ...pressDataTableProps()
28
30
  }, 'YDataTableServer');
29
31
  export const YDataTableServer = defineComponent({
@@ -44,6 +46,7 @@ export const YDataTableServer = defineComponent({
44
46
  'update:pageSize': pageSize => true,
45
47
  'update:sortBy': sortBy => true,
46
48
  'update:options': options => true,
49
+ 'update:expanded': expanded => true,
47
50
  'click:row': (e, value) => true
48
51
  },
49
52
  setup(props, _ref) {
@@ -97,6 +100,10 @@ export const YDataTableServer = defineComponent({
97
100
  allItems: items,
98
101
  pageItems: items
99
102
  });
103
+ const {
104
+ isExpanded,
105
+ toggleExpand
106
+ } = provideExpand(props);
100
107
  const headRect = ref();
101
108
  const debounceMeasureHead = debounce(measureHead, 100);
102
109
  const {
@@ -121,6 +128,9 @@ export const YDataTableServer = defineComponent({
121
128
  // sorting
122
129
  sortBy: sortBy.value,
123
130
  toggleSort,
131
+ // expand
132
+ isExpanded,
133
+ toggleExpand,
124
134
  // selection
125
135
  someSelected: someSelected.value,
126
136
  allSelected: allSelected.value,
@@ -128,7 +138,7 @@ export const YDataTableServer = defineComponent({
128
138
  select,
129
139
  selectAll,
130
140
  toggleSelect,
131
- //
141
+ // matrix
132
142
  items: items.value,
133
143
  columns: columns.value,
134
144
  headers: headers.value,
@@ -169,7 +179,9 @@ export const YDataTableServer = defineComponent({
169
179
  "items": items.value
170
180
  }), slots)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
171
181
  trailing: () => slots.trailing?.(slotProps.value),
172
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : _createVNode(YDataTableControl, null, {
182
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : _createVNode(YDataTableControl, _mergeProps(chooseProps(slotProps.value, YDataTableControl.props), {
183
+ "paginationProps": props.paginationProps
184
+ }), {
173
185
  prepend: slots['control.prepend']
174
186
  })
175
187
  });
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableServer.js","names":["computed","provide","ref","toRef","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","debounce","toStyleSizeValue","pressDataTableProps","YDataTableBody","YDataTableControl","YDataTableHead","YDataTableLayer","YTable","createHeader","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","provideSelection","createSorting","provideSorting","YDataTableInjectionKey","pressDataTableServerProps","total","type","Number","String","required","YDataTableServer","name","components","props","emits","value","page","pageSize","sortBy","options","click:row","e","setup","_ref","slots","emit","TableBodyRef","multiSort","parseInt","columns","headers","enableSelect","items","toggleSort","pageLength","setPageSize","setPage","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","headRect","debounceMeasureHead","measureHead","resizeObservedRef","headObserveRef","entries","search","slotProps","contentRect","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","length","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend"],"sources":["../../../src/components/table/YDataTableServer.tsx"],"sourcesContent":["import {\n type PropType,\n computed,\n provide,\n ref,\n toRef,\n} from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { debounce } from '@/util/debounce';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { pressDataTableProps } from './YDataTable';\nimport { YDataTableBody } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable } from './YTable';\nimport { createHeader } from './composables/header';\nimport { useItems } from './composables/items';\nimport { useOptions } from './composables/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n} from './composables/pagination';\nimport { provideSelection } from './composables/selection';\nimport { createSorting, provideSorting } from './composables/sorting';\nimport { YDataTableSlotProps } from './types';\nimport { YDataTableInjectionKey } from '@/components/table/composables/provides';\n\nexport const pressDataTableServerProps = propsFactory(\n {\n total: {\n type: [Number, String] as PropType<number | string>,\n required: true,\n },\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\n },\n 'YDataTableServer',\n);\n\nexport const YDataTableServer = defineComponent({\n name: 'YDataTableServer',\n components: {\n YTable,\n YDataTableLayer,\n YDataTableHead,\n YDataTableBody,\n YDataTableControl,\n },\n props: {\n ...pressDataTableServerProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n },\n setup(props, { slots, emit }) {\n const TableBodyRef = ref();\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const total = computed(() => parseInt(props.total as string));\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const { pageLength, setPageSize, setPage } = providePagination({\n page,\n pageSize,\n total,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n\n const headRect = ref<DOMRectReadOnly>();\n const debounceMeasureHead = debounce(measureHead, 100);\n const { resizeObservedRef: headObserveRef } = useResizeObserver(\n (entries) => {\n debounceMeasureHead(entries);\n },\n );\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n //\n items: items.value,\n columns: columns.value,\n headers: headers.value,\n //\n TableBodyRef,\n };\n });\n\n function measureHead(entries: ResizeObserverEntry[]) {\n headRect.value = entries?.[0].contentRect;\n }\n\n provide(YDataTableInjectionKey, {\n toggleSort,\n sortBy,\n headRect,\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer\n v-slots={slots}\n slotProps={slotProps.value}\n ></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n <tbody>\n <YDataTableBody\n ref={TableBodyRef}\n v-slots={slots}\n {...yDataTableBodyProps}\n items={items.value}\n ></YDataTableBody>\n </tbody>\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n v-slots={{\n prepend: slots['control.prepend'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n },\n});\n\nexport type YDataTableServer = InstanceType<typeof YDataTableServer>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDataTableServer.js","names":["Fragment","computed","provide","ref","toRef","provideExpand","YDataTableInjectionKey","useRender","useResizeObserver","omit","chooseProps","defineComponent","propsFactory","debounce","toStyleSizeValue","pressDataTableProps","YDataTableBody","YDataTableControl","pressYDataTableControlPropsOptions","YDataTableHead","YDataTableLayer","YTable","createHeader","useItems","useOptions","createPagination","providePagination","provideSelection","createSorting","provideSorting","pressDataTableServerProps","total","type","Number","String","required","YDataTableServer","name","components","props","emits","value","page","pageSize","sortBy","options","expanded","click:row","e","setup","_ref","slots","emit","TableBodyRef","multiSort","parseInt","columns","headers","enableSelect","items","toggleSort","pageLength","setPageSize","setPage","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","isExpanded","toggleExpand","headRect","debounceMeasureHead","measureHead","resizeObservedRef","headObserveRef","entries","search","slotProps","contentRect","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","length","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","paginationProps","prepend"],"sources":["../../../src/components/table/YDataTableServer.tsx"],"sourcesContent":["import { Fragment, type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport { provideExpand } from '@/components/table/composables/expand';\nimport { YDataTableInjectionKey } from '@/components/table/composables/provides';\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { omit } from '@/util/common';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { debounce } from '@/util/debounce';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { pressDataTableProps } from './YDataTable';\nimport { YDataTableBody } from './YDataTableBody';\nimport {\n YDataTableControl,\n pressYDataTableControlPropsOptions,\n} from './YDataTableControl';\nimport { YDataTableHead } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable } from './YTable';\nimport { createHeader } from './composables/header';\nimport { useItems } from './composables/items';\nimport { useOptions } from './composables/options';\nimport { createPagination, providePagination } from './composables/pagination';\nimport { provideSelection } from './composables/selection';\nimport { createSorting, provideSorting } from './composables/sorting';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableServerProps = propsFactory(\n {\n total: {\n type: [Number, String] as PropType<number | string>,\n required: true,\n },\n ...omit(pressYDataTableControlPropsOptions(), [\n 'setPage',\n 'setPageSize',\n 'pageLength',\n ]),\n ...pressDataTableProps(),\n },\n 'YDataTableServer',\n);\n\nexport const YDataTableServer = defineComponent({\n name: 'YDataTableServer',\n components: {\n YTable,\n YDataTableLayer,\n YDataTableHead,\n YDataTableBody,\n YDataTableControl,\n },\n props: {\n ...pressDataTableServerProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (expanded: any[]) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n },\n setup(props, { slots, emit }) {\n const TableBodyRef = ref();\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const total = computed(() => parseInt(props.total as string));\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const { pageLength, setPageSize, setPage } = providePagination({\n page,\n pageSize,\n total,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n const { isExpanded, toggleExpand } = provideExpand(props);\n\n const headRect = ref<DOMRectReadOnly>();\n const debounceMeasureHead = debounce(measureHead, 100);\n const { resizeObservedRef: headObserveRef } = useResizeObserver(\n (entries) => {\n debounceMeasureHead(entries);\n },\n );\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // expand\n isExpanded,\n toggleExpand,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n // matrix\n items: items.value,\n columns: columns.value,\n headers: headers.value,\n //\n TableBodyRef,\n };\n });\n\n function measureHead(entries: ResizeObserverEntry[]) {\n headRect.value = entries?.[0].contentRect;\n }\n\n provide(YDataTableInjectionKey, {\n toggleSort,\n sortBy,\n headRect,\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <Fragment>\n <YDataTableLayer\n v-slots={slots}\n slotProps={slotProps.value}\n ></YDataTableLayer>\n </Fragment>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <Fragment>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n <tbody>\n <YDataTableBody\n ref={TableBodyRef}\n v-slots={slots}\n {...yDataTableBodyProps}\n items={items.value}\n ></YDataTableBody>\n </tbody>\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </Fragment>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n {...chooseProps(slotProps.value, YDataTableControl.props)}\n paginationProps={props.paginationProps}\n v-slots={{\n prepend: slots['control.prepend'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n },\n});\n\nexport type YDataTableServer = InstanceType<typeof YDataTableServer>;\n"],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { inject, provide } from 'vue';
2
+ import { useModelDuplex } from "../../../composables/communication.js";
3
+ import { propsFactory } from "../../../util/component/props.js";
4
+ export const pressDataTableExpandProps = propsFactory({
5
+ enableExpand: Boolean,
6
+ expanded: {
7
+ type: Array,
8
+ default: () => []
9
+ }
10
+ }, 'YDataTable--expand');
11
+ const Y_DATA_TABLE_EXPAND_KEY = Symbol.for('yuyeon.data-table.expand');
12
+ export function provideExpand(props) {
13
+ const expands = useModelDuplex(props, 'expanded', props.expanded ?? [], v => new Set(v), v => [...v]);
14
+ function isExpanded(item) {
15
+ return expands.value.has(item.value);
16
+ }
17
+ function expand(item, value) {
18
+ const neo = new Set(expands.value);
19
+ if (value) {
20
+ neo.add(item.value);
21
+ } else {
22
+ neo.delete(item.value);
23
+ }
24
+ expands.value = neo;
25
+ }
26
+ function toggleExpand(item) {
27
+ expand(item, !isExpanded(item));
28
+ }
29
+ provide(Y_DATA_TABLE_EXPAND_KEY, {
30
+ expands,
31
+ isExpanded,
32
+ expand,
33
+ toggleExpand
34
+ });
35
+ return {
36
+ expands,
37
+ isExpanded,
38
+ expand,
39
+ toggleExpand
40
+ };
41
+ }
42
+ export function useExpand() {
43
+ const instance = inject(Y_DATA_TABLE_EXPAND_KEY);
44
+ if (!instance) {
45
+ throw new Error(`Not provided: ${Y_DATA_TABLE_EXPAND_KEY.description}`);
46
+ }
47
+ return instance;
48
+ }
49
+ //# sourceMappingURL=expand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand.js","names":["inject","provide","useModelDuplex","propsFactory","pressDataTableExpandProps","enableExpand","Boolean","expanded","type","Array","default","Y_DATA_TABLE_EXPAND_KEY","Symbol","for","provideExpand","props","expands","v","Set","isExpanded","item","value","has","expand","neo","add","delete","toggleExpand","useExpand","instance","Error","description"],"sources":["../../../../src/components/table/composables/expand.ts"],"sourcesContent":["import {\n type InjectionKey,\n type PropType,\n type Ref,\n inject,\n provide,\n} from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { propsFactory } from '@/util/component/props';\n\nimport type { DataTableItem } from '../types/item';\n\nexport const pressDataTableExpandProps = propsFactory(\n {\n enableExpand: Boolean,\n expanded: {\n type: Array as PropType<readonly string[]>,\n default: () => [],\n },\n },\n 'YDataTable--expand',\n);\n\ntype DataTableExpandProps = {\n enableExpand: boolean;\n expanded: readonly string[];\n 'onUpdate:expanded': ((value: any[]) => void) | undefined;\n};\n\nconst Y_DATA_TABLE_EXPAND_KEY: InjectionKey<{\n expands: Ref<Set<string>>;\n isExpanded: (item: DataTableItem) => boolean;\n expand: (item: DataTableItem, value: boolean) => void;\n toggleExpand: (item: DataTableItem) => void;\n}> = Symbol.for('yuyeon.data-table.expand');\n\nexport function provideExpand(props: DataTableExpandProps) {\n const expands = useModelDuplex(\n props,\n 'expanded',\n props.expanded ?? [],\n (v) => new Set(v),\n (v) => [...v],\n );\n\n function isExpanded(item: DataTableItem) {\n return expands.value.has(item.value);\n }\n\n function expand(item: DataTableItem, value: boolean) {\n const neo = new Set(expands.value);\n if (value) {\n neo.add(item.value);\n } else {\n neo.delete(item.value);\n }\n\n expands.value = neo;\n }\n\n function toggleExpand(item: DataTableItem) {\n expand(item, !isExpanded(item));\n }\n\n provide(Y_DATA_TABLE_EXPAND_KEY, {\n expands,\n isExpanded,\n expand,\n toggleExpand,\n });\n\n return {\n expands,\n isExpanded,\n expand,\n toggleExpand,\n };\n}\n\nexport function useExpand() {\n const instance = inject(Y_DATA_TABLE_EXPAND_KEY);\n if (!instance) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_EXPAND_KEY.description}`);\n }\n return instance;\n}\n"],"mappings":"AAAA,SAIEA,MAAM,EACNC,OAAO,QACF,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,YAAY;AAIrB,OAAO,MAAMC,yBAAyB,GAAGD,YAAY,CACnD;EACEE,YAAY,EAAEC,OAAO;EACrBC,QAAQ,EAAE;IACRC,IAAI,EAAEC,KAAoC;IAC1CC,OAAO,EAAEA,CAAA,KAAM;EACjB;AACF,CAAC,EACD,oBACF,CAAC;AAQD,MAAMC,uBAKJ,GAAGC,MAAM,CAACC,GAAG,CAAC,0BAA0B,CAAC;AAE3C,OAAO,SAASC,aAAaA,CAACC,KAA2B,EAAE;EACzD,MAAMC,OAAO,GAAGd,cAAc,CAC5Ba,KAAK,EACL,UAAU,EACVA,KAAK,CAACR,QAAQ,IAAI,EAAE,EACnBU,CAAC,IAAK,IAAIC,GAAG,CAACD,CAAC,CAAC,EAChBA,CAAC,IAAK,CAAC,GAAGA,CAAC,CACd,CAAC;EAED,SAASE,UAAUA,CAACC,IAAmB,EAAE;IACvC,OAAOJ,OAAO,CAACK,KAAK,CAACC,GAAG,CAACF,IAAI,CAACC,KAAK,CAAC;EACtC;EAEA,SAASE,MAAMA,CAACH,IAAmB,EAAEC,KAAc,EAAE;IACnD,MAAMG,GAAG,GAAG,IAAIN,GAAG,CAACF,OAAO,CAACK,KAAK,CAAC;IAClC,IAAIA,KAAK,EAAE;MACTG,GAAG,CAACC,GAAG,CAACL,IAAI,CAACC,KAAK,CAAC;IACrB,CAAC,MAAM;MACLG,GAAG,CAACE,MAAM,CAACN,IAAI,CAACC,KAAK,CAAC;IACxB;IAEAL,OAAO,CAACK,KAAK,GAAGG,GAAG;EACrB;EAEA,SAASG,YAAYA,CAACP,IAAmB,EAAE;IACzCG,MAAM,CAACH,IAAI,EAAE,CAACD,UAAU,CAACC,IAAI,CAAC,CAAC;EACjC;EAEAnB,OAAO,CAACU,uBAAuB,EAAE;IAC/BK,OAAO;IACPG,UAAU;IACVI,MAAM;IACNI;EACF,CAAC,CAAC;EAEF,OAAO;IACLX,OAAO;IACPG,UAAU;IACVI,MAAM;IACNI;EACF,CAAC;AACH;AAEA,OAAO,SAASC,SAASA,CAAA,EAAG;EAC1B,MAAMC,QAAQ,GAAG7B,MAAM,CAACW,uBAAuB,CAAC;EAChD,IAAI,CAACkB,QAAQ,EAAE;IACb,MAAM,IAAIC,KAAK,CAAE,iBAAgBnB,uBAAuB,CAACoB,WAAY,EAAC,CAAC;EACzE;EACA,OAAOF,QAAQ;AACjB"}
@@ -1,4 +1,4 @@
1
- import { computed } from 'vue';
1
+ import { computed, ref } from 'vue';
2
2
  import { getPropertyFromItem } from "../../../util/common.js";
3
3
  import { propsFactory } from "../../../util/component/index.js";
4
4
  export const pressDataTableItemsProps = propsFactory({
@@ -17,6 +17,7 @@ export const pressDataTableItemsProps = propsFactory({
17
17
  returnItem: Boolean
18
18
  }, 'YDataTable--items');
19
19
  export function updateItem(props, item, index, columns) {
20
+ const rowRef = ref(null);
20
21
  const key = getPropertyFromItem(item, props.itemKey);
21
22
  const value = props.returnItem ? item : key;
22
23
  let selectable;
@@ -29,13 +30,18 @@ export function updateItem(props, item, index, columns) {
29
30
  acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);
30
31
  return acc;
31
32
  }, {});
33
+ function _bindRowRef(el) {
34
+ rowRef.value = el;
35
+ }
32
36
  return {
33
37
  index,
34
38
  key,
35
39
  value,
36
40
  selectable,
37
41
  columns: itemColumns,
38
- raw: item
42
+ raw: item,
43
+ rowRef,
44
+ _bindRowRef
39
45
  };
40
46
  }
41
47
  export function updateItems(props, items, columns) {
@@ -1 +1 @@
1
- {"version":3,"file":"items.js","names":["computed","getPropertyFromItem","propsFactory","pressDataTableItemsProps","items","type","Array","default","itemKey","String","Function","itemSelectable","returnItem","Boolean","updateItem","props","item","index","columns","key","value","selectable","itemColumns","reduce","acc","column","raw","updateItems","map","useItems"],"sources":["../../../../src/components/table/composables/items.ts"],"sourcesContent":["import { type PropType, type Ref, computed } from 'vue';\r\n\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { DataTableItem, InternalDataTableHeader } from '../types';\r\n\r\nexport type DataTableItemsProps = {\r\n items: any[];\r\n itemKey: any;\r\n itemSelectable: any;\r\n returnItem: boolean;\r\n};\r\n\r\nexport const pressDataTableItemsProps = propsFactory(\r\n {\r\n items: {\r\n type: Array as PropType<DataTableItemsProps['items']>,\r\n default: () => [],\r\n },\r\n itemKey: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: 'id',\r\n },\r\n itemSelectable: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: null,\r\n },\r\n returnItem: Boolean,\r\n },\r\n 'YDataTable--items',\r\n);\r\n\r\nexport function updateItem(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n item: any,\r\n index: number,\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem {\r\n const key = getPropertyFromItem(item, props.itemKey);\r\n const value = props.returnItem ? item : key;\r\n let selectable;\r\n if (typeof props.itemSelectable === 'function') {\r\n selectable = !!props.itemSelectable(item);\r\n } else {\r\n selectable = getPropertyFromItem(item, props.itemSelectable, true);\r\n }\r\n\r\n const itemColumns = columns.reduce(\r\n (acc, column) => {\r\n acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);\r\n return acc;\r\n },\r\n {} as Record<string, unknown>,\r\n );\r\n\r\n return {\r\n index,\r\n key,\r\n value,\r\n selectable,\r\n columns: itemColumns,\r\n raw: item,\r\n };\r\n}\r\n\r\nexport function updateItems(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n items: DataTableItemsProps['items'],\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem[] {\r\n return items.map((item, index) => updateItem(props, item, index, columns));\r\n}\r\n\r\nexport function useItems(\r\n props: DataTableItemsProps,\r\n columns: Ref<InternalDataTableHeader[]>,\r\n) {\r\n const items = computed(() => {\r\n return updateItems(props, props.items, columns.value);\r\n });\r\n return { items };\r\n}\r\n"],"mappings":"AAAA,SAAkCA,QAAQ,QAAQ,KAAK;AAAC,SAE/CC,mBAAmB;AAAA,SACnBC,YAAY;AAWrB,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAClD;EACEE,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA+C;IACrDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE;IACPH,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDI,cAAc,EAAE;IACdN,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAEC;AACd,CAAC,EACD,mBACF,CAAC;AAED,OAAO,SAASC,UAAUA,CACxBC,KAAyC,EACzCC,IAAS,EACTC,KAAa,EACbC,OAAkC,EACnB;EACf,MAAMC,GAAG,GAAGlB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACP,OAAO,CAAC;EACpD,MAAMY,KAAK,GAAGL,KAAK,CAACH,UAAU,GAAGI,IAAI,GAAGG,GAAG;EAC3C,IAAIE,UAAU;EACd,IAAI,OAAON,KAAK,CAACJ,cAAc,KAAK,UAAU,EAAE;IAC9CU,UAAU,GAAG,CAAC,CAACN,KAAK,CAACJ,cAAc,CAACK,IAAI,CAAC;EAC3C,CAAC,MAAM;IACLK,UAAU,GAAGpB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACpE;EAEA,MAAMW,WAAW,GAAGJ,OAAO,CAACK,MAAM,CAChC,CAACC,GAAG,EAAEC,MAAM,KAAK;IACfD,GAAG,CAACC,MAAM,CAACN,GAAG,CAAC,GAAGlB,mBAAmB,CAACe,IAAI,EAAES,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACN,GAAG,CAAC;IACvE,OAAOK,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;EAED,OAAO;IACLP,KAAK;IACLE,GAAG;IACHC,KAAK;IACLC,UAAU;IACVH,OAAO,EAAEI,WAAW;IACpBI,GAAG,EAAEV;EACP,CAAC;AACH;AAEA,OAAO,SAASW,WAAWA,CACzBZ,KAAyC,EACzCX,KAAmC,EACnCc,OAAkC,EACjB;EACjB,OAAOd,KAAK,CAACwB,GAAG,CAAC,CAACZ,IAAI,EAAEC,KAAK,KAAKH,UAAU,CAACC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;AAC5E;AAEA,OAAO,SAASW,QAAQA,CACtBd,KAA0B,EAC1BG,OAAuC,EACvC;EACA,MAAMd,KAAK,GAAGJ,QAAQ,CAAC,MAAM;IAC3B,OAAO2B,WAAW,CAACZ,KAAK,EAAEA,KAAK,CAACX,KAAK,EAAEc,OAAO,CAACE,KAAK,CAAC;EACvD,CAAC,CAAC;EACF,OAAO;IAAEhB;EAAM,CAAC;AAClB"}
1
+ {"version":3,"file":"items.js","names":["computed","ref","getPropertyFromItem","propsFactory","pressDataTableItemsProps","items","type","Array","default","itemKey","String","Function","itemSelectable","returnItem","Boolean","updateItem","props","item","index","columns","rowRef","key","value","selectable","itemColumns","reduce","acc","column","_bindRowRef","el","raw","updateItems","map","useItems"],"sources":["../../../../src/components/table/composables/items.ts"],"sourcesContent":["import { type PropType, type Ref, computed, ref } from 'vue';\r\n\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { DataTableItem, InternalDataTableHeader } from '../types';\r\n\r\nexport type DataTableItemsProps = {\r\n items: any[];\r\n itemKey: any;\r\n itemSelectable: any;\r\n returnItem: boolean;\r\n};\r\n\r\nexport const pressDataTableItemsProps = propsFactory(\r\n {\r\n items: {\r\n type: Array as PropType<DataTableItemsProps['items']>,\r\n default: () => [],\r\n },\r\n itemKey: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: 'id',\r\n },\r\n itemSelectable: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: null,\r\n },\r\n returnItem: Boolean,\r\n },\r\n 'YDataTable--items',\r\n);\r\n\r\nexport function updateItem(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n item: any,\r\n index: number,\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem {\r\n const rowRef = ref<any | null>(null);\r\n const key = getPropertyFromItem(item, props.itemKey);\r\n const value = props.returnItem ? item : key;\r\n let selectable;\r\n if (typeof props.itemSelectable === 'function') {\r\n selectable = !!props.itemSelectable(item);\r\n } else {\r\n selectable = getPropertyFromItem(item, props.itemSelectable, true);\r\n }\r\n\r\n const itemColumns = columns.reduce(\r\n (acc, column) => {\r\n acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);\r\n return acc;\r\n },\r\n {} as Record<string, unknown>,\r\n );\r\n\r\n function _bindRowRef(el: any | null) {\r\n rowRef.value = el;\r\n }\r\n\r\n return {\r\n index,\r\n key,\r\n value,\r\n selectable,\r\n columns: itemColumns,\r\n raw: item,\r\n rowRef,\r\n _bindRowRef,\r\n };\r\n}\r\n\r\nexport function updateItems(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n items: DataTableItemsProps['items'],\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem[] {\r\n return items.map((item, index) => updateItem(props, item, index, columns));\r\n}\r\n\r\nexport function useItems(\r\n props: DataTableItemsProps,\r\n columns: Ref<InternalDataTableHeader[]>,\r\n) {\r\n const items = computed(() => {\r\n return updateItems(props, props.items, columns.value);\r\n });\r\n return { items };\r\n}\r\n"],"mappings":"AAAA,SAAkCA,QAAQ,EAAEC,GAAG,QAAQ,KAAK;AAAC,SAEpDC,mBAAmB;AAAA,SACnBC,YAAY;AAWrB,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAClD;EACEE,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA+C;IACrDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE;IACPH,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDI,cAAc,EAAE;IACdN,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAEC;AACd,CAAC,EACD,mBACF,CAAC;AAED,OAAO,SAASC,UAAUA,CACxBC,KAAyC,EACzCC,IAAS,EACTC,KAAa,EACbC,OAAkC,EACnB;EACf,MAAMC,MAAM,GAAGnB,GAAG,CAAa,IAAI,CAAC;EACpC,MAAMoB,GAAG,GAAGnB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACP,OAAO,CAAC;EACpD,MAAMa,KAAK,GAAGN,KAAK,CAACH,UAAU,GAAGI,IAAI,GAAGI,GAAG;EAC3C,IAAIE,UAAU;EACd,IAAI,OAAOP,KAAK,CAACJ,cAAc,KAAK,UAAU,EAAE;IAC9CW,UAAU,GAAG,CAAC,CAACP,KAAK,CAACJ,cAAc,CAACK,IAAI,CAAC;EAC3C,CAAC,MAAM;IACLM,UAAU,GAAGrB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACpE;EAEA,MAAMY,WAAW,GAAGL,OAAO,CAACM,MAAM,CAChC,CAACC,GAAG,EAAEC,MAAM,KAAK;IACfD,GAAG,CAACC,MAAM,CAACN,GAAG,CAAC,GAAGnB,mBAAmB,CAACe,IAAI,EAAEU,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACN,GAAG,CAAC;IACvE,OAAOK,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;EAED,SAASE,WAAWA,CAACC,EAAc,EAAE;IACnCT,MAAM,CAACE,KAAK,GAAGO,EAAE;EACnB;EAEA,OAAO;IACLX,KAAK;IACLG,GAAG;IACHC,KAAK;IACLC,UAAU;IACVJ,OAAO,EAAEK,WAAW;IACpBM,GAAG,EAAEb,IAAI;IACTG,MAAM;IACNQ;EACF,CAAC;AACH;AAEA,OAAO,SAASG,WAAWA,CACzBf,KAAyC,EACzCX,KAAmC,EACnCc,OAAkC,EACjB;EACjB,OAAOd,KAAK,CAAC2B,GAAG,CAAC,CAACf,IAAI,EAAEC,KAAK,KAAKH,UAAU,CAACC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;AAC5E;AAEA,OAAO,SAASc,QAAQA,CACtBjB,KAA0B,EAC1BG,OAAuC,EACvC;EACA,MAAMd,KAAK,GAAGL,QAAQ,CAAC,MAAM;IAC3B,OAAO+B,WAAW,CAACf,KAAK,EAAEA,KAAK,CAACX,KAAK,EAAEc,OAAO,CAACG,KAAK,CAAC;EACvD,CAAC,CAAC;EACF,OAAO;IAAEjB;EAAM,CAAC;AAClB"}
@@ -6,4 +6,6 @@ export * from "./YDataTableRow.js";
6
6
  export * from "./YDataTableCell.js";
7
7
  export * from "./YDataTableControl.js";
8
8
  export * from "./YDataTableLayer.js";
9
+ export * from "./YDataTableLayerRows.js";
10
+ export * from "./YDataTableLayerRow.js";
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/table/index.ts"],"sourcesContent":["export * from './YTable';\nexport * from './YDataTable';\nexport * from './YDataTableServer';\n\nexport * from './YDataTableBody';\nexport * from './YDataTableRow';\nexport * from './YDataTableCell';\nexport * from './YDataTableControl';\nexport * from './YDataTableLayer';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/table/index.ts"],"sourcesContent":["export * from './YTable';\nexport * from './YDataTable';\nexport * from './YDataTableServer';\n\nexport * from './YDataTableBody';\nexport * from './YDataTableRow';\nexport * from './YDataTableCell';\nexport * from './YDataTableControl';\nexport * from './YDataTableLayer';\nexport * from './YDataTableLayerRows';\nexport * from './YDataTableLayerRow';\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"item.js","names":[],"sources":["../../../../src/components/table/types/item.ts"],"sourcesContent":["import { SelectableItem, provideSelection } from '@/components/table/composables/selection';\nimport { InternalDataTableHeader } from './header';\n\ntype ItemSlotBase<T> = {\n index: number;\n item: T;\n internalItem: DataTableItem<T>;\n selected: boolean;\n isSelected: ReturnType<typeof provideSelection>['isSelected'];\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect'];\n};\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n value: any;\n column: InternalDataTableHeader;\n};\n\nexport interface DataTableItem<T = any> extends SelectableItem {\n index: number;\n columns: Record<string, any>;\n raw: T;\n rowRef?: any\n}\n"],"mappings":""}
1
+ {"version":3,"file":"item.js","names":[],"sources":["../../../../src/components/table/types/item.ts"],"sourcesContent":["import { SelectableItem, provideSelection } from '@/components/table/composables/selection';\nimport { InternalDataTableHeader } from './header';\n\ntype ItemSlotBase<T> = {\n index: number;\n item: T;\n internalItem: DataTableItem<T>;\n selected: boolean;\n isSelected: ReturnType<typeof provideSelection>['isSelected'];\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect'];\n};\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n value: any;\n column: InternalDataTableHeader;\n};\n\nexport interface DataTableItem<T = any> extends SelectableItem {\n index: number;\n columns: Record<string, any>;\n raw: T;\n rowRef?: any\n readonly _bindRowRef: (el: any | null) => void;\n}\n"],"mappings":""}
@@ -1,5 +1,6 @@
1
1
  import { h } from 'vue';
2
2
  import { defineComponent } from "../../util/component/index.js";
3
+ import { escapeRegExp } from "../../util/string.js";
3
4
  import "./YTextHighlighter.scss";
4
5
  export const YTextHighlighter = defineComponent({
5
6
  name: 'YTextHighlighter',
@@ -26,7 +27,7 @@ export const YTextHighlighter = defineComponent({
26
27
  if (keyword && text) {
27
28
  const split = [];
28
29
  let stack = text;
29
- const keyExp = new RegExp(keyword, this.sensitive ? '' : 'i');
30
+ const keyExp = new RegExp(escapeRegExp(keyword), this.sensitive ? '' : 'i');
30
31
  while (stack.length > 0) {
31
32
  const index = stack.search(keyExp);
32
33
  if (index < 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"YTextHighlighter.js","names":["h","defineComponent","YTextHighlighter","name","props","text","type","String","keyword","color","sensitive","Boolean","computed","splitText","split","stack","keyExp","RegExp","length","index","search","push","isKeyword","substring","methods","createItem","staticClass","createHighlightKeywordItem","class","style","backgroundColor","createSplitTexts","map","splitItem","render","children"],"sources":["../../../src/components/text-highlighter/YTextHighlighter.ts"],"sourcesContent":["import { type VNode, h } from 'vue';\r\n\r\nimport { defineComponent } from '@/util/component';\r\n\r\nimport './YTextHighlighter.scss';\r\n\r\nexport const YTextHighlighter = defineComponent({\r\n name: 'YTextHighlighter',\r\n props: {\r\n text: {\r\n type: String,\r\n },\r\n keyword: {\r\n type: String,\r\n },\r\n color: {\r\n type: String,\r\n },\r\n sensitive: {\r\n type: Boolean,\r\n },\r\n },\r\n computed: {\r\n splitText(): { text: string; isKeyword: boolean }[] {\r\n const { keyword, text } = this;\r\n if (keyword && text) {\r\n const split: { text: string; isKeyword: boolean }[] = [];\r\n let stack = text;\r\n const keyExp = new RegExp(keyword, this.sensitive ? '' : 'i');\r\n while (stack.length > 0) {\r\n const index = stack.search(keyExp);\r\n if (index < 0) {\r\n split.push({ text: stack, isKeyword: false });\r\n stack = '';\r\n } else if (index < 1) {\r\n split.push({\r\n text: stack.substring(0, keyword.length),\r\n isKeyword: true,\r\n });\r\n stack = stack.substring(keyword.length, stack.length);\r\n } else {\r\n split.push({ text: stack.substring(0, index), isKeyword: false });\r\n split.push({\r\n text: stack.substring(index, index + keyword.length),\r\n isKeyword: true,\r\n });\r\n stack = stack.substring(index + keyword.length, stack.length);\r\n }\r\n }\r\n return split;\r\n }\r\n return [{ text: this.text || '', isKeyword: false }];\r\n },\r\n },\r\n methods: {\r\n createItem(text: string): VNode {\r\n return h(\r\n 'span',\r\n {\r\n staticClass: 'y-text-highlighter__item',\r\n },\r\n [text],\r\n );\r\n },\r\n createHighlightKeywordItem(text: string): VNode {\r\n return h(\r\n 'span',\r\n {\r\n staticClass: 'y-text-highlighter__item',\r\n class: 'y-text-highlighter__item--highlight',\r\n style: {\r\n backgroundColor: this.color,\r\n },\r\n },\r\n [text],\r\n );\r\n },\r\n createSplitTexts(): VNode[] {\r\n return this.splitText.map((splitItem) => {\r\n if (splitItem.isKeyword) {\r\n return this.createHighlightKeywordItem(splitItem.text);\r\n }\r\n return this.createItem(splitItem.text);\r\n });\r\n },\r\n },\r\n render(): VNode {\r\n const children = this.createSplitTexts();\r\n return h('span', { staticClass: 'y-text-highlighter' }, children);\r\n },\r\n});\r\n\r\nexport type YTextHighlighter = InstanceType<typeof YTextHighlighter>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YTextHighlighter.js","names":["h","defineComponent","escapeRegExp","YTextHighlighter","name","props","text","type","String","keyword","color","sensitive","Boolean","computed","splitText","split","stack","keyExp","RegExp","length","index","search","push","isKeyword","substring","methods","createItem","staticClass","createHighlightKeywordItem","class","style","backgroundColor","createSplitTexts","map","splitItem","render","children"],"sources":["../../../src/components/text-highlighter/YTextHighlighter.ts"],"sourcesContent":["import { type VNode, h } from 'vue';\n\nimport { defineComponent } from '@/util/component';\nimport { escapeRegExp } from '@/util/string';\n\nimport './YTextHighlighter.scss';\n\nexport const YTextHighlighter = defineComponent({\n name: 'YTextHighlighter',\n props: {\n text: {\n type: String,\n },\n keyword: {\n type: String,\n },\n color: {\n type: String,\n },\n sensitive: {\n type: Boolean,\n },\n },\n computed: {\n splitText(): { text: string; isKeyword: boolean }[] {\n const { keyword, text } = this;\n if (keyword && text) {\n const split: { text: string; isKeyword: boolean }[] = [];\n let stack = text;\n const keyExp = new RegExp(\n escapeRegExp(keyword),\n this.sensitive ? '' : 'i',\n );\n while (stack.length > 0) {\n const index = stack.search(keyExp);\n if (index < 0) {\n split.push({ text: stack, isKeyword: false });\n stack = '';\n } else if (index < 1) {\n split.push({\n text: stack.substring(0, keyword.length),\n isKeyword: true,\n });\n stack = stack.substring(keyword.length, stack.length);\n } else {\n split.push({ text: stack.substring(0, index), isKeyword: false });\n split.push({\n text: stack.substring(index, index + keyword.length),\n isKeyword: true,\n });\n stack = stack.substring(index + keyword.length, stack.length);\n }\n }\n return split;\n }\n return [{ text: this.text || '', isKeyword: false }];\n },\n },\n methods: {\n createItem(text: string): VNode {\n return h(\n 'span',\n {\n staticClass: 'y-text-highlighter__item',\n },\n [text],\n );\n },\n createHighlightKeywordItem(text: string): VNode {\n return h(\n 'span',\n {\n staticClass: 'y-text-highlighter__item',\n class: 'y-text-highlighter__item--highlight',\n style: {\n backgroundColor: this.color,\n },\n },\n [text],\n );\n },\n createSplitTexts(): VNode[] {\n return this.splitText.map((splitItem) => {\n if (splitItem.isKeyword) {\n return this.createHighlightKeywordItem(splitItem.text);\n }\n return this.createItem(splitItem.text);\n });\n },\n },\n render(): VNode {\n const children = this.createSplitTexts();\n return h('span', { staticClass: 'y-text-highlighter' }, children);\n },\n});\n\nexport type YTextHighlighter = InstanceType<typeof YTextHighlighter>;\n"],"mappings":"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"}
@@ -85,7 +85,8 @@ export const YTreeViewNode = defineComponent({
85
85
  const slotProps = computed(() => {
86
86
  return {
87
87
  level: props.level,
88
- imLeaf: imLeaf.value
88
+ imLeaf: imLeaf.value,
89
+ toggleActive
89
90
  };
90
91
  });
91
92
  const searchLoading = computed(() => {
@@ -96,12 +97,15 @@ export const YTreeViewNode = defineComponent({
96
97
  return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));
97
98
  });
98
99
  });
99
- function onClick(e) {
100
+ function toggleActive(e) {
100
101
  const to = !active.value;
101
102
  active.value = to;
102
103
  treeView.updateActive(myKey.value, to, e);
103
104
  treeView.emitActive();
104
105
  }
106
+ function onClick(e) {
107
+ toggleActive(e);
108
+ }
105
109
  function onClickExpand(e) {
106
110
  e.stopPropagation();
107
111
  const to = !expanded.value;