@katlux/toolkit 0.1.0-beta.20 → 0.1.0-beta.22

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 (46) hide show
  1. package/dist/module.cjs +9 -5
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +9 -5
  4. package/dist/runtime/presets/default/assets/scss/css-variables.scss +216 -0
  5. package/dist/runtime/presets/default/assets/scss/docs.scss +52 -0
  6. package/dist/runtime/presets/default/assets/scss/index.scss +4 -0
  7. package/dist/runtime/presets/default/assets/scss/mixins.scss +94 -0
  8. package/dist/runtime/presets/default/assets/scss/reset.scss +16 -0
  9. package/dist/runtime/presets/default/components/KAccordion/KAccordion.vue +5 -2
  10. package/dist/runtime/presets/default/components/KAccordion/KAccordionItem.vue +40 -37
  11. package/dist/runtime/presets/default/components/KBulkActions/KBulkActions.vue +29 -22
  12. package/dist/runtime/presets/default/components/KButton/KButton.vue +147 -428
  13. package/dist/runtime/presets/default/components/KCalendar/KCalendar.vue +57 -53
  14. package/dist/runtime/presets/default/components/KCalendar/KCalendarMonth.vue +189 -161
  15. package/dist/runtime/presets/default/components/KCheckbox/KCheckbox.vue +46 -36
  16. package/dist/runtime/presets/default/components/KCombobox/KCombobox.vue +77 -67
  17. package/dist/runtime/presets/default/components/KCombobox/KComboboxList.vue +71 -59
  18. package/dist/runtime/presets/default/components/KDataIterator/KDataIterator.vue +40 -31
  19. package/dist/runtime/presets/default/components/KDatatable/KDatatable.vue +108 -91
  20. package/dist/runtime/presets/default/components/KDatePicker/KDatePicker.vue +38 -22
  21. package/dist/runtime/presets/default/components/KDateTimePicker/KDateTimePicker.vue +66 -48
  22. package/dist/runtime/presets/default/components/KDropdown/KDropdown.vue +27 -22
  23. package/dist/runtime/presets/default/components/KGantt/KGantt.vue +336 -240
  24. package/dist/runtime/presets/default/components/KGantt/KGanttRuler.vue +40 -35
  25. package/dist/runtime/presets/default/components/KGantt/KGanttTimeline.vue +170 -140
  26. package/dist/runtime/presets/default/components/KGrid/KGrid.vue +62 -60
  27. package/dist/runtime/presets/default/components/KHourPicker/KHourPicker.vue +23 -19
  28. package/dist/runtime/presets/default/components/KHourSelect/KHourSelect.vue +34 -28
  29. package/dist/runtime/presets/default/components/KIcon/KIcon.vue +16 -16
  30. package/dist/runtime/presets/default/components/KLoader/KLoader.vue +53 -47
  31. package/dist/runtime/presets/default/components/KMaskTextbox/KMaskTextbox.vue +108 -84
  32. package/dist/runtime/presets/default/components/KModal/KModal.vue +30 -27
  33. package/dist/runtime/presets/default/components/KPagination/KPagination.vue +42 -40
  34. package/dist/runtime/presets/default/components/KPanel/KPanel.vue +39 -31
  35. package/dist/runtime/presets/default/components/KRadiobox/KRadiobox.vue +30 -29
  36. package/dist/runtime/presets/default/components/KRangeSlider/KRangeSlider.vue +158 -125
  37. package/dist/runtime/presets/default/components/KSlider/KSlider.vue +123 -100
  38. package/dist/runtime/presets/default/components/KTabs/KTabItem.vue +40 -37
  39. package/dist/runtime/presets/default/components/KTabs/KTabs.vue +9 -6
  40. package/dist/runtime/presets/default/components/KTextarea/KTextarea.vue +23 -20
  41. package/dist/runtime/presets/default/components/KTextbox/KTextbox.vue +42 -34
  42. package/dist/runtime/presets/default/components/KTree/KTree.vue +102 -80
  43. package/dist/runtime/presets/default/components/KTreePicker/KTreePicker.vue +54 -34
  44. package/dist/runtime/presets/default/components/KTreeView/KTreeCell.vue +31 -30
  45. package/dist/runtime/presets/default/components/KTreeView/KTreeView.vue +34 -27
  46. package/package.json +2 -2
package/dist/module.cjs CHANGED
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const kit = require('@nuxt/kit');
4
+ const node_fs = require('node:fs');
4
5
 
5
6
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
6
7
  const module$1 = kit.defineNuxtModule({
@@ -13,7 +14,10 @@ const module$1 = kit.defineNuxtModule({
13
14
  const runtimePath = resolve("./runtime");
14
15
  nuxt.options.build.transpile.push(runtimePath);
15
16
  nuxt.options.build.transpile.push("@katlux/toolkit");
16
- nuxt.options.css.push(resolve("./runtime/presets/default/assets/scss/index.scss"));
17
+ const scssPath = resolve("./runtime/presets/default/assets/scss/index.scss");
18
+ const cssPath = resolve("./runtime/presets/default/assets/scss/index.css");
19
+ const finalCssPath = node_fs.existsSync(scssPath) ? scssPath : cssPath;
20
+ nuxt.options.css.push(finalCssPath);
17
21
  nuxt.hook("vite:extendConfig", (config) => {
18
22
  const server = config.server || (config.server = {});
19
23
  const fs = server.fs || (server.fs = {});
@@ -21,10 +25,10 @@ const module$1 = kit.defineNuxtModule({
21
25
  if (!allow.includes(runtimePath)) {
22
26
  allow.push(runtimePath);
23
27
  }
24
- config.ssr = config.ssr || {};
25
- config.ssr.noExternal = config.ssr.noExternal || [];
26
- if (Array.isArray(config.ssr.noExternal) && !config.ssr.noExternal.includes("@katlux/toolkit")) {
27
- config.ssr.noExternal.push("@katlux/toolkit");
28
+ const ssr = config.ssr || (config.ssr = {});
29
+ const noExternal = ssr.noExternal || (ssr.noExternal = []);
30
+ if (Array.isArray(noExternal) && !noExternal.includes("@katlux/toolkit")) {
31
+ noExternal.push("@katlux/toolkit");
28
32
  }
29
33
  });
30
34
  kit.addComponentsDir({
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@katlux/toolkit",
3
3
  "configKey": "katluxToolkit",
4
- "version": "0.1.0-beta.20",
4
+ "version": "0.1.0-beta.22",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "3.6.1"
package/dist/module.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  import { defineNuxtModule, createResolver, addComponentsDir, addImportsDir, addPlugin } from '@nuxt/kit';
2
+ import { existsSync } from 'node:fs';
2
3
 
3
4
  const module$1 = defineNuxtModule({
4
5
  meta: {
@@ -10,7 +11,10 @@ const module$1 = defineNuxtModule({
10
11
  const runtimePath = resolve("./runtime");
11
12
  nuxt.options.build.transpile.push(runtimePath);
12
13
  nuxt.options.build.transpile.push("@katlux/toolkit");
13
- nuxt.options.css.push(resolve("./runtime/presets/default/assets/scss/index.scss"));
14
+ const scssPath = resolve("./runtime/presets/default/assets/scss/index.scss");
15
+ const cssPath = resolve("./runtime/presets/default/assets/scss/index.css");
16
+ const finalCssPath = existsSync(scssPath) ? scssPath : cssPath;
17
+ nuxt.options.css.push(finalCssPath);
14
18
  nuxt.hook("vite:extendConfig", (config) => {
15
19
  const server = config.server || (config.server = {});
16
20
  const fs = server.fs || (server.fs = {});
@@ -18,10 +22,10 @@ const module$1 = defineNuxtModule({
18
22
  if (!allow.includes(runtimePath)) {
19
23
  allow.push(runtimePath);
20
24
  }
21
- config.ssr = config.ssr || {};
22
- config.ssr.noExternal = config.ssr.noExternal || [];
23
- if (Array.isArray(config.ssr.noExternal) && !config.ssr.noExternal.includes("@katlux/toolkit")) {
24
- config.ssr.noExternal.push("@katlux/toolkit");
25
+ const ssr = config.ssr || (config.ssr = {});
26
+ const noExternal = ssr.noExternal || (ssr.noExternal = []);
27
+ if (Array.isArray(noExternal) && !noExternal.includes("@katlux/toolkit")) {
28
+ noExternal.push("@katlux/toolkit");
25
29
  }
26
30
  });
27
31
  addComponentsDir({
@@ -0,0 +1,216 @@
1
+ // Default Template - CSS Custom Properties
2
+ // These are the base styles that apply when no specific template is selected
3
+ // or when data-template="default" is set
4
+
5
+ :root,
6
+ [data-template="default"] {
7
+ // Primary Colors
8
+ --primary-100: #e0f2f7;
9
+ --primary-300: #a7d9ed;
10
+ --primary-500: #2196f3;
11
+ --primary-700: #1976d2;
12
+ --primary-900: #0d47a1;
13
+
14
+ // Accent Colors
15
+ --accent-100: #e8f5e9;
16
+ --accent-300: #c8e6c9;
17
+ --accent-500: #4caf50;
18
+ --accent-700: #388e3c;
19
+ --accent-900: #1b5e20;
20
+
21
+ // Neutral Colors
22
+ --neutral-50: #fafafa;
23
+ --neutral-100: #f5f5f5;
24
+ --neutral-200: #eeeeee;
25
+ --neutral-300: #e0e0e0;
26
+ --neutral-400: #bdbdbd;
27
+ --neutral-500: #9e9e9e;
28
+ --neutral-600: #757575;
29
+ --neutral-700: #616161;
30
+ --neutral-800: #424242;
31
+ --neutral-900: #212121;
32
+
33
+ // Semantic Colors
34
+ --success-color: var(--accent-500);
35
+ --success-color-light: var(--accent-100);
36
+ --warning-color: #ffc107;
37
+ --warning-color-light: #fff3e0;
38
+ --error-color: #f44336;
39
+ --error-color-light: #fbe9e7;
40
+ --info-color: var(--primary-500);
41
+ --info-color-light: var(--primary-100);
42
+
43
+ // Font Colors
44
+ --font-color-primary: var(--neutral-800);
45
+ --font-color-secondary: var(--neutral-600);
46
+ --font-color-heading: var(--neutral-900);
47
+ --font-color-light: var(--neutral-50);
48
+
49
+ // Background Colors
50
+ --background-color: var(--neutral-50);
51
+ --background-color-light: var(--neutral-50);
52
+ --background-color-medium: var(--neutral-400);
53
+ --background-color-dark: var(--neutral-800);
54
+
55
+ // Border Colors
56
+ --border-color-light: var(--neutral-200);
57
+ --border-color-medium: var(--neutral-400);
58
+ --border-color-dark: var(--neutral-600);
59
+
60
+ // Spacing
61
+ --gap-sm: 10px;
62
+ --gap-md: 20px;
63
+ --gap-lg: 30px;
64
+ --gap-xl: 40px;
65
+
66
+ // Border Radius
67
+ --border-radius-sm: 4px;
68
+ --border-radius-md: 8px;
69
+ --border-radius-lg: 16px;
70
+ --border-radius-xl: 32px;
71
+ --border-radius-full: 9999px;
72
+
73
+ // Shadows
74
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
75
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
76
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
77
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
78
+
79
+ // Typography
80
+ --font-size-xs: 10px;
81
+ --font-size-sm: 12px;
82
+ --font-size-md: 14px;
83
+ --font-size-lg: 16px;
84
+ --font-size-xl: 18px;
85
+ --font-weight-normal: 400;
86
+ --font-weight-medium: 500;
87
+ --font-weight-semibold: 600;
88
+ --font-weight-bold: 700;
89
+ --font-family: Roboto, sans-serif;
90
+
91
+ // Transitions
92
+ --transition-fast: 0.15s ease;
93
+ --transition-normal: 0.3s ease;
94
+ --transition-slow: 0.5s ease;
95
+ --transition-bounce: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
96
+
97
+ // Button-specific
98
+ --button-border-radius: var(--border-radius-sm);
99
+ --button-font-size-sm: var(--font-size-sm);
100
+ --button-font-size-md: var(--font-size-md);
101
+ --button-font-size-lg: var(--font-size-lg);
102
+
103
+ // Button Colors - Default
104
+ --button-bg-default: var(--neutral-900);
105
+ --button-text-default: var(--font-color-light);
106
+ --button-hover-bg-default: var(--neutral-700);
107
+
108
+ // Button Colors - Primary
109
+ --button-bg-primary: var(--primary-500);
110
+ --button-text-primary: var(--font-color-light);
111
+ --button-hover-bg-primary: var(--primary-700);
112
+
113
+ // Button Colors - Success
114
+ --button-bg-success: var(--success-color);
115
+ --button-text-success: var(--font-color-light);
116
+ --button-hover-bg-success: var(--accent-700);
117
+
118
+ // Button Colors - Warning
119
+ --button-bg-warning: var(--warning-color);
120
+ --button-text-warning: var(--neutral-900);
121
+ --button-hover-bg-warning: #e6ac00;
122
+
123
+ // Button Colors - Danger/Error
124
+ --button-bg-danger: var(--error-color);
125
+ --button-text-danger: var(--font-color-light);
126
+ --button-hover-bg-danger: #d32f2f;
127
+
128
+ // Button Colors - Info
129
+ --button-bg-info: var(--info-color);
130
+ --button-text-info: var(--font-color-light);
131
+ --button-hover-bg-info: var(--primary-300);
132
+
133
+ // Button Colors - Light
134
+ --button-bg-light: var(--neutral-50);
135
+ --button-text-light: var(--neutral-900);
136
+ --button-hover-bg-light: var(--neutral-200);
137
+
138
+ // Button Colors - Dark
139
+ --button-bg-dark: var(--neutral-900);
140
+ --button-text-dark: var(--font-color-light);
141
+ --button-hover-bg-dark: var(--neutral-700);
142
+
143
+ // Input
144
+ --input-border-radius: var(--border-radius-sm);
145
+ --input-border-color: var(--border-color-medium);
146
+ --input-focus-border-color: var(--primary-500);
147
+ --input-focus-shadow: 0 0 0 3px rgba(33, 150, 243, 0.2);
148
+
149
+ // Table
150
+ --table-header-bg: var(--neutral-100);
151
+ --table-header-color: var(--neutral-700);
152
+ --table-border-color: var(--neutral-300);
153
+ --table-row-hover: var(--neutral-100);
154
+ --table-row-selected: #e3f2fd;
155
+
156
+ // Checkbox
157
+ --checkbox-bg: var(--neutral-50);
158
+ --checkbox-checked-bg: var(--primary-500);
159
+ --checkbox-border-color: var(--border-color-medium);
160
+
161
+ // Missing Box Variables
162
+ --box-border-radius: var(--border-radius-md);
163
+ --box-border: 1px solid var(--border-color-medium);
164
+ --box-shadow: var(--shadow-md);
165
+ --box-padding: var(--gap-md);
166
+
167
+ // Missing Layout Variables
168
+ --grid-gap: var(--gap-md);
169
+ --component-gap: var(--gap-sm);
170
+ --layover: var(--neutral-600);
171
+ --modal-overlay-bg: rgba(0, 0, 0, 0.5);
172
+
173
+ // Layout Variables
174
+ --layout-header-height: 60px;
175
+ --layout-header-bg: var(--background-color);
176
+ --layout-sidebar-width: 200px;
177
+ --layout-sidebar-bg: var(--background-color);
178
+ --layout-content-bg: var(--background-color-light);
179
+
180
+ // Missing Icon Variables
181
+ --icon-color-light: var(--neutral-200);
182
+ --icon-color-medium: var(--neutral-400);
183
+ --icon-color-dark: var(--neutral-600);
184
+
185
+ // Missing Input Variables
186
+ --input-border: 1px solid var(--border-color-medium);
187
+ --input-button-bg: var(--neutral-300);
188
+ --input-button-hover-bg: var(--neutral-400);
189
+ --input-button-font-color: var(--font-color-primary);
190
+ --input-focus-border-color: var(--primary-500);
191
+
192
+ // Button Hover Specifics
193
+ --button-hover-bg-danger: #d32f2f;
194
+ --button-hover-bg-info: var(--primary-300);
195
+ --button-hover-bg-light: var(--neutral-200);
196
+ --button-hover-bg-primary: var(--primary-700);
197
+ --button-hover-bg-success: var(--accent-700);
198
+ --button-hover-bg-warning: #e6ac00;
199
+ --button-hover-bg-dark: var(--neutral-700);
200
+
201
+ --button-text-danger: var(--font-color-light);
202
+ --button-text-primary: var(--font-color-light);
203
+ --button-text-success: var(--font-color-light);
204
+ --button-text-warning: var(--neutral-900);
205
+ --button-text-info: var(--font-color-light);
206
+ --button-text-light: var(--neutral-900);
207
+ --button-text-dark: var(--font-color-light);
208
+
209
+ --button-hover-text-danger: var(--button-text-danger);
210
+ --button-hover-text-primary: var(--button-text-primary);
211
+ --button-hover-text-success: var(--button-text-success);
212
+ --button-hover-text-warning: var(--button-text-warning);
213
+ --button-hover-text-info: var(--button-text-info);
214
+ --button-hover-text-light: var(--button-text-light);
215
+ --button-hover-text-dark: var(--button-text-dark);
216
+ }
@@ -0,0 +1,52 @@
1
+ // Documentation Styles using Existing Template Variables
2
+ .content {
3
+ h2 {
4
+ margin-top: 2rem;
5
+ border-bottom: 1px solid var(--border-color-light);
6
+ padding-bottom: 0.5rem;
7
+ color: var(--font-color-heading);
8
+ }
9
+
10
+ pre {
11
+ background: var(--neutral-100);
12
+ color: var(--font-color-primary);
13
+ padding: 1rem;
14
+ border-radius: var(--border-radius-md);
15
+ overflow-x: auto;
16
+ margin: 0;
17
+ font-family: var(--font-family-mono, monospace);
18
+
19
+ code {
20
+ background: transparent;
21
+ padding: 0;
22
+ color: inherit;
23
+ }
24
+ }
25
+
26
+ .note {
27
+ background: var(--info-color-light);
28
+ border-left: 4px solid var(--info-color);
29
+ padding: 1rem;
30
+ margin-top: 2rem;
31
+ border-radius: 0 var(--border-radius-sm) var(--border-radius-sm) 0;
32
+ color: var(--font-color-primary);
33
+
34
+ p {
35
+ margin: 0;
36
+ }
37
+ }
38
+
39
+ .important {
40
+ background: var(--warning-color-light);
41
+ border-left: 4px solid var(--warning-color);
42
+ padding: 1rem;
43
+ margin: 1rem 0;
44
+ border-radius: 0 var(--border-radius-sm) var(--border-radius-sm) 0;
45
+ color: var(--font-color-primary);
46
+
47
+ p {
48
+ margin: 0;
49
+ }
50
+ }
51
+
52
+ }
@@ -0,0 +1,4 @@
1
+ @use "reset";
2
+ @use "css-variables";
3
+ @use "docs";
4
+ @forward "mixins";
@@ -0,0 +1,94 @@
1
+ //mixins
2
+
3
+ //shadow
4
+ //border
5
+ //flex
6
+
7
+ // Shadow Mixin
8
+ @mixin shadow($elevation: 1, $shadow-color: rgba(0, 0, 0, 0.12)) {
9
+ @if $elevation ==1 {
10
+ box-shadow: 0 1px 3px $shadow-color, 0 1px 2px rgba(0, 0, 0, 0.24);
11
+ }
12
+
13
+ @else if $elevation ==2 {
14
+ box-shadow: 0 3px 6px $shadow-color, 0 3px 6px rgba(0, 0, 0, 0.23);
15
+ }
16
+
17
+ @else if $elevation ==3 {
18
+ box-shadow: 0 10px 20px $shadow-color, 0 6px 6px rgba(0, 0, 0, 0.23);
19
+ }
20
+
21
+ @else {
22
+ box-shadow: 0 1px 3px $shadow-color, 0 1px 2px rgba(0, 0, 0, 0.24);
23
+ }
24
+ }
25
+
26
+ // Border Mixin
27
+ @mixin border($width: 1px, $style: solid, $color: var(--border-color-medium), $radius: 0) {
28
+ border: $width $style $color;
29
+ border-radius: $radius;
30
+ }
31
+
32
+ // Flex Mixin
33
+ @mixin flex($direction: row, $justify: flex-start, $align: stretch, $wrap: nowrap) {
34
+ display: flex;
35
+ flex-direction: $direction;
36
+ justify-content: $justify;
37
+ align-items: $align;
38
+ flex-wrap: $wrap;
39
+ }
40
+
41
+ @mixin loading-animation($size: 50px, $color: dark) {
42
+ display: inline-block;
43
+ width: $size;
44
+ height: $size;
45
+ border-radius: 50%;
46
+ position: relative;
47
+ animation: rotate 1s linear infinite;
48
+
49
+ &::before {
50
+ content: "";
51
+ box-sizing: border-box;
52
+ position: absolute;
53
+ inset: 0px;
54
+ border-radius: 50%;
55
+
56
+ @if $color ==dark {
57
+ border: 1px solid var(--neutral-800);
58
+ }
59
+
60
+ @if $color ==light {
61
+ border: 1px solid var(--neutral-50);
62
+ }
63
+
64
+ animation: prixClipFix 2s linear infinite;
65
+ }
66
+
67
+ @keyframes rotate {
68
+ 100% {
69
+ transform: rotate(360deg)
70
+ }
71
+ }
72
+
73
+ @keyframes prixClipFix {
74
+ 0% {
75
+ clip-path: polygon(50% 50%, 0 0, 0 0, 0 0, 0 0, 0 0)
76
+ }
77
+
78
+ 25% {
79
+ clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 0, 100% 0, 100% 0)
80
+ }
81
+
82
+ 50% {
83
+ clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 100%, 100% 100%, 100% 100%)
84
+ }
85
+
86
+ 75% {
87
+ clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 100%, 0 100%, 0 100%)
88
+ }
89
+
90
+ 100% {
91
+ clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 100%, 0 100%, 0 0)
92
+ }
93
+ }
94
+ }
@@ -0,0 +1,16 @@
1
+ h1,
2
+ h2,
3
+ h3,
4
+ h4,
5
+ h5,
6
+ h6 {
7
+ margin: 0;
8
+ padding: 0;
9
+ }
10
+
11
+ ul,
12
+ li {
13
+ margin: 0;
14
+ padding: 0;
15
+ list-style: none;
16
+ }
@@ -4,6 +4,9 @@
4
4
  slot
5
5
  </template>
6
6
 
7
- <script setup>
8
-
7
+ <script lang="ts" setup>
8
+ // Default template for KAccordion
9
9
  </script>
10
+
11
+ <style lang="scss" scoped>
12
+ </style>
@@ -7,44 +7,47 @@
7
7
  slot
8
8
  </template>
9
9
 
10
- <script setup>
11
- const props = defineProps({
12
- title: { type: String, required: true },
13
- isOpen: { type: Boolean, required: true },
14
- toggleAccordion: { type: Function, required: true }
15
- });
10
+ <script lang="ts" setup>
11
+ const props = defineProps<{
12
+ title: string
13
+ isOpen: boolean
14
+ toggleAccordion: () => void
15
+ }>()
16
16
  </script>
17
17
 
18
- <style scoped>
19
- .accordion-item__header {
20
- padding: var(--component-gap);
21
- background-color: var(--background-color-medium);
22
- cursor: pointer;
23
- border-radius: var(--box-border-radius);
24
- }
25
- .isOpen .accordion-item__header {
26
- border-bottom-left-radius: 0;
27
- border-bottom-right-radius: 0;
28
- }
29
- .accordion-item__title {
30
- flex-grow: 1;
31
- }
32
- .accordion-item__chevron {
33
- transform: rotate(90deg);
34
- transition: transform 0.3s ease-in-out;
35
- }
36
- .accordion-item__chevron.open {
37
- transform: rotate(270deg);
38
- }
39
- .accordion-item__content {
40
- display: none;
41
- padding-top: var(--box-padding);
42
- padding-bottom: var(--box-padding);
43
- }
44
- .accordion-item__content.open {
45
- border-bottom: var(--box-border);
46
- }
47
- .isOpen .accordion-item__content {
48
- display: block;
18
+ <style lang="scss" scoped>
19
+ .accordion-item {
20
+ &__header {
21
+ padding: var(--component-gap);
22
+ background-color: var(--background-color-medium);
23
+ cursor: pointer;
24
+ border-radius: var(--box-border-radius);
25
+
26
+ .isOpen & {
27
+ border-bottom-left-radius: 0;
28
+ border-bottom-right-radius: 0;
29
+ }
30
+ }
31
+ &__title {
32
+ flex-grow: 1;
33
+ }
34
+ &__chevron {
35
+ transform: rotate(90deg);
36
+ transition: transform 0.3s ease-in-out;
37
+ &.open {
38
+ transform: rotate(270deg);
39
+ }
40
+ }
41
+ &__content {
42
+ display: none;
43
+ padding-top: var(--box-padding);
44
+ padding-bottom: var(--box-padding);
45
+ &.open {
46
+ border-bottom: var(--box-border);
47
+ }
48
+ .isOpen & {
49
+ display: block;
50
+ }
51
+ }
49
52
  }
50
53
  </style>
@@ -8,31 +8,38 @@
8
8
  .info Selected {{props.selectedRows.length}} items
9
9
  </template>
10
10
 
11
- <script setup>
12
- import { computed } from "vue";
13
- import { CFlatClientDataProvider } from "@katlux/providers";
14
- const props = defineProps({
15
- bulkActions: { type: Array, required: true },
16
- selectedRows: { type: Array, required: true },
17
- selectAll: { type: Boolean, required: true },
18
- selected: { type: null, required: true },
19
- dp: { type: Object, required: true },
20
- doAction: { type: Function, required: true }
21
- });
22
- const emit = defineEmits(["update:selected"]);
11
+ <script setup lang="ts">
12
+ import { computed } from 'vue'
13
+ import { CFlatClientDataProvider } from '@katlux/providers'
14
+ import type { IKDatatableAction } from '@katlux/providers'
15
+
16
+ const props = defineProps<{
17
+ bulkActions: IKDatatableAction[]
18
+ selectedRows: any[]
19
+ selectAll: boolean
20
+ selected: any
21
+ dp: CFlatClientDataProvider
22
+ doAction: (action: any) => void
23
+ }>()
24
+
25
+ const emit = defineEmits<{
26
+ (e: 'update:selected', value: any): void
27
+ }>()
28
+
23
29
  const internalSelected = computed({
24
- get: () => props.selected,
25
- set: (val) => emit("update:selected", val)
26
- });
30
+ get: () => props.selected,
31
+ set: (val) => emit('update:selected', val)
32
+ })
33
+
27
34
  </script>
28
35
 
29
- <style scoped>
36
+ <style lang="scss" scoped>
30
37
  .k-bulk-actions {
31
- display: flex;
32
- gap: 10px;
33
- }
34
- .k-bulk-actions .info {
35
- display: flex;
36
- align-items: center;
38
+ display: flex;
39
+ gap: 10px;
40
+ .info {
41
+ display: flex;
42
+ align-items: center;
43
+ }
37
44
  }
38
45
  </style>