yuyeon 0.2.2 → 0.2.3-rc.1

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.
@@ -1,204 +1,211 @@
1
- @use '../../styles/variables';
2
-
3
- .y-switch {
4
- --y-switch__color: var(--y-theme-primary);
5
- font-size: 1rem;
6
-
7
- &__slot {
8
- display: flex;
9
- cursor: pointer;
10
- align-items: center;
11
- color: inherit;
12
- min-height: inherit;
13
- position: relative;
14
- }
15
-
16
- &__input {
17
- width: 3em;
18
- height: 1.5em;
19
- position: relative;
20
- display: inline-flex;
21
- user-select: none;
22
- color: inherit;
23
- flex: 0 0 auto;
24
-
25
- input[role='switch'] {
26
- position: absolute;
27
- opacity: 0;
28
- width: 100%;
29
- height: 100%;
30
- cursor: pointer;
31
- user-select: none;
32
- }
33
- }
34
- &:not(&--loading) &__input:active &__thumb {
35
- width: 1em;
36
- }
37
-
38
- &__track {
39
- width: 100%;
40
- height: 100%;
41
- border-radius: 2em;
42
- background-color: #e0e0e0;
43
- position: absolute;
44
- left: 0;
45
- top: 0;
46
- transition: 300ms;
47
- }
48
-
49
- &__thumb {
50
- width: 1.1em;
51
- height: 1.1em;
52
- align-self: center;
53
- left: 0.185em;
54
- border-radius: 50%;
55
- display: flex;
56
- justify-content: center;
57
- align-items: center;
58
- background-color: #fff;
59
- pointer-events: none;
60
- position: relative;
61
- transition: 180ms cubic-bezier(0.78, 0.04, 0.9, 0.18);
62
- will-change: left, transform;
63
- }
64
-
65
- &__spinner {
66
- position: relative;
67
- width: 100%;
68
- height: 100%;
69
- border-radius: 50%;
70
- animation: rotate 2s linear infinite;
71
- contain: paint;
72
-
73
- @keyframes spinner-blur {
74
- 0% {
75
- filter: blur(4px);
76
- }
77
- 50% {
78
- filter: blur(1px);
79
- }
80
- 100% {
81
- filter: blur(4px);
82
- }
83
- }
84
-
85
- &:before {
86
- content: '';
87
- position: absolute;
88
- top: 2px;
89
- left: 2px;
90
- right: 2px;
91
- bottom: 2px;
92
- border-radius: 50%;
93
- border-width: 2px 2px 0 0;
94
- border-style: solid;
95
- border-color: var(--y-switch__color) transparent;
96
- }
97
-
98
- &:after {
99
- content: '';
100
- position: absolute;
101
- left: 0;
102
- top: 0;
103
- right: 0;
104
- bottom: 0;
105
- background: linear-gradient(
106
- 0deg,
107
- transparent 60%,
108
- rgba(var(--y-switch__color), 0.4)
109
- );
110
- filter: blur(4px);
111
- animation: spinner-blur 3s infinite;
112
- }
113
- }
114
-
115
- &--active {
116
- .y-switch__track {
117
- background-color: var(--y-switch__color);
118
- }
119
-
120
- .y-switch__thumb {
121
- left: calc(100% - 1.1em - 0.24em);
122
- }
123
- }
124
-
125
- &--active:not(&--loading):active &__thumb {
126
- left: 1.8em;
127
- }
128
-
129
- &--focused {
130
- .y-switch__thumb:before {
131
- content: '';
132
- position: absolute;
133
- top: 2px;
134
- bottom: 2px;
135
- left: 2px;
136
- right: 2px;
137
- border-radius: 50%;
138
- background-color: rgba(var(--y-switch__color), 0.4);
139
- }
140
- }
141
-
142
- &--stick-out {
143
- .y-switch__thumb {
144
- box-shadow:
145
- 2px 2px 5px -2px rgba(0, 0, 0, 0.54),
146
- 1px 1px 4px rgba(0, 0, 0, 0.12),
147
- 0 0 0 1px rgba(0, 0, 0, 0.08);
148
- }
149
-
150
- .y-switch__track {
151
- width: 80%;
152
- height: 74%;
153
- top: 50%;
154
- left: 50%;
155
- transform: translate(-50%, -50%);
156
- box-shadow: inset 0 0 4px -1px rgba(0, 0, 0, 0.34);
157
- }
158
- }
159
-
160
- &--disabled {
161
- opacity: 0.8;
162
- filter: brightness(0.88);
163
-
164
- .y-switch__thumb {
165
- opacity: 0.4;
166
- }
167
- }
168
- &--disabled &__slot,
169
- &--disabled &__input input {
170
- cursor: default;
171
- }
172
-
173
- &__state {
174
- position: relative;
175
- width: 100%;
176
- height: 100%;
177
- contain: content;
178
- }
179
-
180
- &__state-label {
181
- font-size: 12px;
182
- color: #ffffff;
183
- position: absolute;
184
- height: 100%;
185
- display: flex;
186
- align-items: center;
187
- transition: transform 180ms cubic-bezier(0.16, 0.85, 0.36, 0.96);
188
-
189
- &--on {
190
- left: -40px;
191
- }
192
- &--off {
193
- right: 10px;
194
- }
195
- }
196
-
197
- &--active &__state-label {
198
- transform: translateX(50px);
199
- }
200
-
201
- &--stick-out &__state-label--off {
202
- right: 7px;
203
- }
204
- }
1
+ @use '../../styles/variables';
2
+
3
+ .y-switch {
4
+ --y-switch__color: var(--y-theme-primary);
5
+ --y-switch__color-rgb: var(--y-theme-primary-rgb);
6
+ font-size: 1rem;
7
+
8
+ &__slot {
9
+ display: flex;
10
+ cursor: pointer;
11
+ align-items: center;
12
+ color: inherit;
13
+ min-height: inherit;
14
+ position: relative;
15
+ }
16
+
17
+ &__input {
18
+ width: 3em;
19
+ height: 1.5em;
20
+ position: relative;
21
+ display: inline-flex;
22
+ user-select: none;
23
+ color: inherit;
24
+ flex: 0 0 auto;
25
+
26
+ input[role='switch'] {
27
+ position: absolute;
28
+ opacity: 0;
29
+ width: 100%;
30
+ height: 100%;
31
+ cursor: pointer;
32
+ user-select: none;
33
+ }
34
+ }
35
+
36
+ &:not(&--loading) &__input:active &__thumb {
37
+ transform: scaleX(0.94);
38
+ transform-origin: left;
39
+ }
40
+
41
+ &.y-switch--active:not(&--loading) &__input:active &__thumb {
42
+ transform-origin: right;
43
+ }
44
+
45
+ &__track {
46
+ width: 100%;
47
+ height: 100%;
48
+ border-radius: 2em;
49
+ background-color: var(--y-theme-surface-variant);
50
+ position: absolute;
51
+ left: 0;
52
+ top: 0;
53
+ transition: 300ms;
54
+ }
55
+
56
+ &__thumb {
57
+ width: 1.1em;
58
+ height: 1.1em;
59
+ align-self: center;
60
+ left: 0.185em;
61
+ border-radius: 50%;
62
+ display: flex;
63
+ justify-content: center;
64
+ align-items: center;
65
+ background-color: var(--y-theme-surface);
66
+ pointer-events: none;
67
+ position: relative;
68
+ transition: 180ms cubic-bezier(0.78, 0.04, 0.9, 0.18);
69
+ will-change: left, transform;
70
+ }
71
+
72
+ &__spinner {
73
+ position: relative;
74
+ width: 100%;
75
+ height: 100%;
76
+ border-radius: 50%;
77
+ animation: rotate 2s linear infinite;
78
+ contain: paint;
79
+
80
+ @keyframes spinner-blur {
81
+ 0% {
82
+ filter: blur(4px);
83
+ }
84
+ 50% {
85
+ filter: blur(1px);
86
+ }
87
+ 100% {
88
+ filter: blur(4px);
89
+ }
90
+ }
91
+
92
+ &:before {
93
+ content: '';
94
+ position: absolute;
95
+ top: 2px;
96
+ left: 2px;
97
+ right: 2px;
98
+ bottom: 2px;
99
+ border-radius: 50%;
100
+ border-width: 2px 2px 0 0;
101
+ border-style: solid;
102
+ border-color: var(--y-switch__color) transparent;
103
+ }
104
+
105
+ &:after {
106
+ content: '';
107
+ position: absolute;
108
+ left: 0;
109
+ top: 0;
110
+ right: 0;
111
+ bottom: 0;
112
+ background: linear-gradient(
113
+ 0deg,
114
+ transparent 60%,
115
+ rgba(var(--y-switch__color), 0.4)
116
+ );
117
+ filter: blur(4px);
118
+ animation: spinner-blur 3s infinite;
119
+ }
120
+ }
121
+
122
+ &--active {
123
+ .y-switch__track {
124
+ background-color: var(--y-switch__color);
125
+ }
126
+
127
+ .y-switch__thumb {
128
+ left: calc(100% - 1.1em - 0.24em);
129
+ }
130
+ }
131
+
132
+ &--active:not(&--loading):active &__thumb {
133
+ left: 1.8em;
134
+ }
135
+
136
+ &--focused {
137
+ .y-switch__thumb:before {
138
+ content: '';
139
+ position: absolute;
140
+ top: 2px;
141
+ bottom: 2px;
142
+ left: 2px;
143
+ right: 2px;
144
+ border-radius: 50%;
145
+ background-color: rgba(var(--y-switch__color-rgb), 0.4);
146
+ }
147
+ }
148
+
149
+ &--stick-out {
150
+ .y-switch__thumb {
151
+ box-shadow:
152
+ 2px 2px 5px -2px rgba(var(--y-theme-shadow-rgb, 0, 0, 0), 0.54),
153
+ 1px 1px 4px rgba(var(--y-theme-shadow-rgb, 0, 0, 0), 0.12),
154
+ 0 0 0 1px rgba(var(--y-theme-shadow-rgb, 0, 0, 0), 0.08);
155
+ }
156
+
157
+ .y-switch__track {
158
+ width: 80%;
159
+ height: 74%;
160
+ top: 50%;
161
+ left: 50%;
162
+ transform: translate(-50%, -50%);
163
+ box-shadow: inset 0 0 4px -1px rgba(var(--y-theme-shadow-rgb, 0, 0, 0), 0.34);
164
+ }
165
+ }
166
+
167
+ &--disabled {
168
+ opacity: 0.8;
169
+ filter: brightness(0.88);
170
+
171
+ .y-switch__thumb {
172
+ opacity: 0.4;
173
+ }
174
+ }
175
+ &--disabled &__slot,
176
+ &--disabled &__input input {
177
+ cursor: default;
178
+ }
179
+
180
+ &__state {
181
+ position: relative;
182
+ width: 100%;
183
+ height: 100%;
184
+ contain: content;
185
+ }
186
+
187
+ &__state-label {
188
+ font-size: 12px;
189
+ color: var(--y-theme-on-primary);
190
+ position: absolute;
191
+ height: 100%;
192
+ display: flex;
193
+ align-items: center;
194
+ transition: transform 180ms cubic-bezier(0.16, 0.85, 0.36, 0.96);
195
+
196
+ &--on {
197
+ left: -40px;
198
+ }
199
+ &--off {
200
+ right: 10px;
201
+ }
202
+ }
203
+
204
+ &--active &__state-label {
205
+ transform: translateX(50px);
206
+ }
207
+
208
+ &--stick-out &__state-label--off {
209
+ right: 7px;
210
+ }
211
+ }
@@ -133,7 +133,7 @@ export const YDataTableHead = defineComponent({
133
133
  "class": "y-data-table-header__content"
134
134
  }, [_createVNode("span", {
135
135
  "class": "y-data-table-header__text"
136
- }, [column.text]), _createVNode("span", {
136
+ }, [slots?.[`header-text.${column.key}`]?.(headerSlotProps) ?? column.text]), _createVNode("span", {
137
137
  "class": ['y-data-table-header__sorting-icon', {
138
138
  'y-data-table-header__sorting-icon--disabled': !column.sortable
139
139
  }],
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableHead.mjs","names":["useRender","wrapInArray","defineComponent","propsFactory","toStyleSizeValue","YIconCheckbox","YIconSort","YDataTableCell","useHeader","useSelection","useSorting","pressYDataTableHeadProps","multiSort","Boolean","sortAscIcon","type","String","default","sortDescIcon","dualSortIcon","sticky","YDataTableHead","name","components","props","setup","_ref","slots","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","selectables","columns","headers","getFixedStyles","column","y","fixed","undefined","position","zIndex","left","fixedOffset","top","onClick","e","getSortDirection","found","value","find","by","key","order","YDataTableTh","_ref2","x","_createVNode","_mergeProps","align","lastFixed","sortable","headerClasses","width","minWidth","maxWidth","rowspan","colspan","headerSlotName","headerSlotProps","length","stopPropagation","text","_Fragment","head","map","row"],"sources":["../../../src/components/table/YDataTableHead.tsx"],"sourcesContent":["import { type CSSProperties } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { wrapInArray } from '@/util';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\nimport { toStyleSizeValue } from '@/util/ui';\r\n\r\nimport { YIconCheckbox } from '../icons/YIconCheckbox';\r\nimport { YIconSort } from '../icons/YIconSort';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from './composibles/header';\r\nimport { useSelection } from './composibles/selection';\r\nimport { useSorting } from './composibles/sorting';\r\nimport { InternalDataTableHeader } from './types';\r\n\r\nexport const pressYDataTableHeadProps = propsFactory(\r\n {\r\n multiSort: Boolean,\r\n sortAscIcon: {\r\n type: String,\r\n default: '@sortAsc',\r\n },\r\n sortDescIcon: {\r\n type: String,\r\n default: '@sortDesc',\r\n },\r\n dualSortIcon: Boolean,\r\n sticky: Boolean,\r\n },\r\n 'YDataTableHead',\r\n);\r\n\r\nexport const YDataTableHead = defineComponent({\r\n name: 'YDataTableHead',\r\n components: {\r\n YDataTableCell,\r\n },\r\n props: {\r\n ...pressYDataTableHeadProps(),\r\n },\r\n setup(props, { slots }) {\r\n const { toggleSort, sortBy, isSorted } = useSorting();\r\n const { someSelected, allSelected, selectAll, showSelectAll, selectables } =\r\n useSelection();\r\n const { columns, headers } = useHeader();\r\n\r\n const getFixedStyles = (\r\n column: InternalDataTableHeader,\r\n y: number,\r\n ): CSSProperties | undefined => {\r\n if (!props.sticky && !column.fixed) return undefined;\r\n\r\n return {\r\n position: 'sticky',\r\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,\r\n left: column.fixed ? toStyleSizeValue(column.fixedOffset) : undefined,\r\n top: props.sticky\r\n ? `calc(var(--v-table-header-height) * ${y})`\r\n : undefined,\r\n };\r\n };\r\n\r\n function onClick(e: Event) {\r\n //\r\n }\r\n\r\n function getSortDirection(column: InternalDataTableHeader) {\r\n const found = sortBy.value.find((by) => by.key === column.key);\r\n if (!found) {\r\n return undefined;\r\n }\r\n if (found.order === 'asc') {\r\n return 'asc';\r\n }\r\n if (found.order === 'desc') {\r\n return 'desc';\r\n }\r\n }\r\n\r\n const YDataTableTh = ({\r\n column,\r\n x,\r\n y,\r\n }: {\r\n column: InternalDataTableHeader;\r\n x: number;\r\n y: number;\r\n }) => {\r\n return (\r\n <YDataTableCell\r\n type=\"head\"\r\n align={column.align}\r\n fixed={\r\n column.fixed ? (column.lastFixed ? 'last' : 'lead') : undefined\r\n }\r\n class={[\r\n 'y-data-table-header',\r\n {\r\n 'y-data-table-header--sortable': column.sortable,\r\n 'y-data-table-header--sorted': isSorted(column),\r\n 'y-data-table-header--select': column.key === 'data-table-select',\r\n },\r\n ...wrapInArray(column.headerClasses ?? []),\r\n ]}\r\n style={{\r\n width: toStyleSizeValue(column.width),\r\n minWidth: toStyleSizeValue(column.width),\r\n maxWidth: toStyleSizeValue(column.maxWidth),\r\n ...getFixedStyles(column, y),\r\n }}\r\n {...{ rowspan: column.rowspan, colspan: column.colspan }}\r\n onClick={onClick}\r\n >\r\n {{\r\n default: () => {\r\n const headerSlotName = `header.${column.key}` as const;\r\n const headerSlotProps = {\r\n column,\r\n selectAll,\r\n isSorted,\r\n toggleSort,\r\n sortBy: sortBy.value,\r\n someSelected: someSelected.value,\r\n allSelected: allSelected.value,\r\n selectables: selectables.value,\r\n getSortDirection,\r\n };\r\n\r\n if (slots[headerSlotName]) {\r\n return slots[headerSlotName]?.(headerSlotProps);\r\n }\r\n\r\n if (column.key === 'data-table-select') {\r\n return (\r\n slots['header.data-table-select']?.(headerSlotProps) ??\r\n (showSelectAll && (\r\n <YIconCheckbox\r\n checked={allSelected.value}\r\n indeterminate={!allSelected.value && someSelected.value}\r\n disabled={selectables.value.length < 1}\r\n {...{\r\n onClick: (e: MouseEvent) => {\r\n e.stopPropagation();\r\n selectAll(!allSelected.value);\r\n },\r\n }}\r\n ></YIconCheckbox>\r\n ))\r\n );\r\n }\r\n\r\n return (\r\n <div class=\"y-data-table-header__content\">\r\n <span class=\"y-data-table-header__text\">{column.text}</span>\r\n <span\r\n class={[\r\n 'y-data-table-header__sorting-icon',\r\n {\r\n 'y-data-table-header__sorting-icon--disabled':\r\n !column.sortable,\r\n },\r\n ]}\r\n onClick={\r\n column.sortable\r\n ? (e) => {\r\n e.stopPropagation();\r\n toggleSort(column);\r\n }\r\n : undefined\r\n }\r\n >\r\n <YIconSort\r\n disabled={!column.sortable}\r\n direction={getSortDirection(column)}\r\n ></YIconSort>\r\n </span>\r\n </div>\r\n );\r\n },\r\n }}\r\n </YDataTableCell>\r\n );\r\n };\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n {slots.head\r\n ? slots.head?.(props)\r\n : headers.value.map((row, y) => (\r\n <tr>\r\n {row.map((column, x) => (\r\n <YDataTableTh column={column} x={x} y={y} />\r\n ))}\r\n </tr>\r\n ))}\r\n </>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableHead = InstanceType<typeof YDataTableHead>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDataTableHead.mjs","names":["useRender","wrapInArray","defineComponent","propsFactory","toStyleSizeValue","YIconCheckbox","YIconSort","YDataTableCell","useHeader","useSelection","useSorting","pressYDataTableHeadProps","multiSort","Boolean","sortAscIcon","type","String","default","sortDescIcon","dualSortIcon","sticky","YDataTableHead","name","components","props","setup","_ref","slots","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","selectables","columns","headers","getFixedStyles","column","y","fixed","undefined","position","zIndex","left","fixedOffset","top","onClick","e","getSortDirection","found","value","find","by","key","order","YDataTableTh","_ref2","x","_createVNode","_mergeProps","align","lastFixed","sortable","headerClasses","width","minWidth","maxWidth","rowspan","colspan","headerSlotName","headerSlotProps","length","stopPropagation","text","_Fragment","head","map","row"],"sources":["../../../src/components/table/YDataTableHead.tsx"],"sourcesContent":["import { type CSSProperties } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { wrapInArray } from '@/util';\nimport { defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YIconCheckbox } from '../icons/YIconCheckbox';\nimport { YIconSort } from '../icons/YIconSort';\nimport { YDataTableCell } from './YDataTableCell';\nimport { useHeader } from './composibles/header';\nimport { useSelection } from './composibles/selection';\nimport { useSorting } from './composibles/sorting';\nimport { InternalDataTableHeader } from './types';\n\nexport const pressYDataTableHeadProps = propsFactory(\n {\n multiSort: Boolean,\n sortAscIcon: {\n type: String,\n default: '@sortAsc',\n },\n sortDescIcon: {\n type: String,\n default: '@sortDesc',\n },\n dualSortIcon: Boolean,\n sticky: Boolean,\n },\n 'YDataTableHead',\n);\n\nexport const YDataTableHead = defineComponent({\n name: 'YDataTableHead',\n components: {\n YDataTableCell,\n },\n props: {\n ...pressYDataTableHeadProps(),\n },\n setup(props, { slots }) {\n const { toggleSort, sortBy, isSorted } = useSorting();\n const { someSelected, allSelected, selectAll, showSelectAll, selectables } =\n useSelection();\n const { columns, headers } = useHeader();\n\n const getFixedStyles = (\n column: InternalDataTableHeader,\n y: number,\n ): CSSProperties | undefined => {\n if (!props.sticky && !column.fixed) return undefined;\n\n return {\n position: 'sticky',\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,\n left: column.fixed ? toStyleSizeValue(column.fixedOffset) : undefined,\n top: props.sticky\n ? `calc(var(--v-table-header-height) * ${y})`\n : undefined,\n };\n };\n\n function onClick(e: Event) {\n //\n }\n\n function getSortDirection(column: InternalDataTableHeader) {\n const found = sortBy.value.find((by) => by.key === column.key);\n if (!found) {\n return undefined;\n }\n if (found.order === 'asc') {\n return 'asc';\n }\n if (found.order === 'desc') {\n return 'desc';\n }\n }\n\n const YDataTableTh = ({\n column,\n x,\n y,\n }: {\n column: InternalDataTableHeader;\n x: number;\n y: number;\n }) => {\n return (\n <YDataTableCell\n type=\"head\"\n align={column.align}\n fixed={\n column.fixed ? (column.lastFixed ? 'last' : 'lead') : undefined\n }\n class={[\n 'y-data-table-header',\n {\n 'y-data-table-header--sortable': column.sortable,\n 'y-data-table-header--sorted': isSorted(column),\n 'y-data-table-header--select': column.key === 'data-table-select',\n },\n ...wrapInArray(column.headerClasses ?? []),\n ]}\n style={{\n width: toStyleSizeValue(column.width),\n minWidth: toStyleSizeValue(column.width),\n maxWidth: toStyleSizeValue(column.maxWidth),\n ...getFixedStyles(column, y),\n }}\n {...{ rowspan: column.rowspan, colspan: column.colspan }}\n onClick={onClick}\n >\n {{\n default: () => {\n const headerSlotName = `header.${column.key}` as const;\n const headerSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectables: selectables.value,\n getSortDirection,\n };\n\n if (slots[headerSlotName]) {\n return slots[headerSlotName]?.(headerSlotProps);\n }\n\n if (column.key === 'data-table-select') {\n return (\n slots['header.data-table-select']?.(headerSlotProps) ??\n (showSelectAll && (\n <YIconCheckbox\n checked={allSelected.value}\n indeterminate={!allSelected.value && someSelected.value}\n disabled={selectables.value.length < 1}\n {...{\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n selectAll(!allSelected.value);\n },\n }}\n ></YIconCheckbox>\n ))\n );\n }\n\n return (\n <div class=\"y-data-table-header__content\">\n <span class=\"y-data-table-header__text\">\n {slots?.[`header-text.${column.key}`]?.(headerSlotProps) ??\n column.text}\n </span>\n <span\n class={[\n 'y-data-table-header__sorting-icon',\n {\n 'y-data-table-header__sorting-icon--disabled':\n !column.sortable,\n },\n ]}\n onClick={\n column.sortable\n ? (e) => {\n e.stopPropagation();\n toggleSort(column);\n }\n : undefined\n }\n >\n <YIconSort\n disabled={!column.sortable}\n direction={getSortDirection(column)}\n ></YIconSort>\n </span>\n </div>\n );\n },\n }}\n </YDataTableCell>\n );\n };\n\n useRender(() => {\n return (\n <>\n {slots.head\n ? slots.head?.(props)\n : headers.value.map((row, y) => (\n <tr>\n {row.map((column, x) => (\n <YDataTableTh column={column} x={x} y={y} />\n ))}\n </tr>\n ))}\n </>\n );\n });\n },\n});\n\nexport type YDataTableHead = InstanceType<typeof YDataTableHead>;\n"],"mappings":"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"}
@@ -147,7 +147,7 @@ export const YTreeView = defineComponent({
147
147
  expandedSet.value.add(key);
148
148
  }
149
149
  if (nodes.value[key].selected) {
150
- expandedSet.value.add(key);
150
+ selectedSet.value.add(key);
151
151
  }
152
152
  if (nodes.value[key].active) {
153
153
  activeSet.value.add(key);