@xleddyl/443-components-vue 0.8.2 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -22
- package/dist/components/core/FormField.vue +5 -0
- package/dist/components/core/FormField.vue.d.ts +4 -0
- package/dist/components/core/Input.vue +59 -5
- package/dist/components/core/Input.vue.d.ts +8 -4
- package/dist/components/core/Textarea.vue +28 -3
- package/dist/components/core/Textarea.vue.d.ts +6 -4
- package/dist/components/data/DescriptionList.vue.d.ts +1 -1
- package/dist/components/data/Pagination.vue +8 -2
- package/dist/components/data/Pagination.vue.d.ts +2 -0
- package/dist/components/forms/CheckboxGroup.vue +7 -1
- package/dist/components/forms/CheckboxGroup.vue.d.ts +1 -0
- package/dist/components/forms/ColorInput.vue.d.ts +4 -4
- package/dist/components/forms/Combobox.vue +4 -3
- package/dist/components/forms/Combobox.vue.d.ts +1 -0
- package/dist/components/forms/DateInput.vue.d.ts +8 -4
- package/dist/components/forms/NumberInput.vue.d.ts +4 -4
- package/dist/components/forms/PasswordInput.vue.d.ts +8 -4
- package/dist/components/forms/PinInput.vue.d.ts +4 -4
- package/dist/components/forms/Select.vue +21 -2
- package/dist/components/forms/Select.vue.d.ts +3 -3
- package/dist/components/forms/Slider.vue.d.ts +4 -4
- package/dist/components/forms/TimeInput.vue.d.ts +8 -4
- package/dist/components/layout/Card.vue.d.ts +1 -1
- package/dist/components/layout/Separator.vue +22 -7
- package/dist/components/layout/Separator.vue.d.ts +14 -4
- package/dist/components/layout/types.d.ts +1 -0
- package/dist/components/overlays/ConfirmDialog.vue.d.ts +4 -4
- package/dist/components/overlays/ConfirmHost.vue.d.ts +4 -4
- package/dist/components/overlays/ContextMenu.vue.d.ts +2 -2
- package/dist/components/overlays/DropdownMenu.vue.d.ts +2 -2
- package/dist/components/overlays/types.d.ts +2 -2
- package/dist/components/templates/SettingsModal.vue.d.ts +4 -4
- package/dist/composables/useForm.d.ts +9 -2
- package/dist/composables/useForm.mjs +75 -13
- package/dist/composables/useOverlay.d.ts +1 -1
- package/dist/editor/RichTextEditor.vue +95 -9
- package/dist/editor/RichTextEditor.vue.d.ts +4 -1
- package/dist/editor/rich-text-editor.css +21 -0
- package/dist/editor/types.d.ts +1 -0
- package/dist/grid/DataGrid.vue +48 -18
- package/dist/grid/DataGrid.vue.d.ts +6 -1
- package/dist/grid/cells/DateCell.vue +7 -2
- package/dist/grid/cells/ImageCell.vue +6 -1
- package/dist/grid/data-grid.css +16 -2
- package/dist/grid/index.d.ts +2 -1
- package/dist/grid/index.mjs +6 -1
- package/dist/grid/modules.d.ts +1 -0
- package/dist/grid/modules.mjs +23 -0
- package/dist/grid/theme.mjs +1 -1
- package/dist/grid/types.d.ts +4 -0
- package/dist/internal/forms/counter.d.ts +18 -0
- package/dist/internal/forms/counter.mjs +31 -0
- package/dist/internal/overlays/OverlayView.vue.d.ts +4 -4
- package/dist/locale/de.mjs +11 -1
- package/dist/locale/en.mjs +11 -1
- package/dist/locale/it.mjs +11 -1
- package/dist/locale/types.d.ts +10 -0
- package/dist/styles/core/button.css +12 -6
- package/dist/styles/core/form-field.css +6 -0
- package/dist/styles/core/input.css +29 -0
- package/dist/styles/core/textarea.css +10 -0
- package/dist/styles/forms/calendar.css +8 -8
- package/dist/styles/forms/choice.css +6 -0
- package/dist/styles/layout/separator.css +49 -0
- package/dist/styles/shared.css +2 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
v-if="formatted"
|
|
4
4
|
class="k-data-grid-date k-tabular"
|
|
5
5
|
:datetime="iso"
|
|
6
|
-
:title="
|
|
6
|
+
:title="isRelative ? absolute : void 0"
|
|
7
7
|
>{{ formatted }}</time
|
|
8
8
|
>
|
|
9
9
|
<EmptyCell v-else :context="cellContext" />
|
|
@@ -30,9 +30,14 @@ const absolute = computed(
|
|
|
30
30
|
date.value
|
|
31
31
|
) : ""
|
|
32
32
|
);
|
|
33
|
+
const isRelative = computed(() => {
|
|
34
|
+
if (!date.value || !props.params.relative) return false;
|
|
35
|
+
const within = props.params.relativeWithin;
|
|
36
|
+
return within === void 0 || Math.abs(Date.now() - date.value.getTime()) <= within;
|
|
37
|
+
});
|
|
33
38
|
const formatted = computed(() => {
|
|
34
39
|
const relative = props.params.relative;
|
|
35
|
-
if (!date.value || !relative) return absolute.value;
|
|
40
|
+
if (!date.value || !relative || !isRelative.value) return absolute.value;
|
|
36
41
|
return formatRelativeTime(
|
|
37
42
|
date.value,
|
|
38
43
|
locale.value,
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
<img
|
|
3
3
|
v-if="src"
|
|
4
4
|
class="k-data-grid-image"
|
|
5
|
-
:class="{ 'is-rounded': params.rounded }"
|
|
5
|
+
:class="{ 'is-rounded': params.rounded, 'is-contain': params.fit === 'contain' }"
|
|
6
|
+
:style="sizeStyle"
|
|
6
7
|
:src="src"
|
|
7
8
|
:alt="alt"
|
|
8
9
|
loading="lazy"
|
|
@@ -12,6 +13,7 @@
|
|
|
12
13
|
v-else
|
|
13
14
|
class="k-data-grid-image is-empty"
|
|
14
15
|
:class="{ 'is-rounded': params.rounded }"
|
|
16
|
+
:style="sizeStyle"
|
|
15
17
|
aria-hidden="true"
|
|
16
18
|
>
|
|
17
19
|
<Icon name="photo" />
|
|
@@ -28,5 +30,8 @@ const src = computed(() => {
|
|
|
28
30
|
const raw = props.params.value;
|
|
29
31
|
return typeof raw === "string" && raw ? raw : "";
|
|
30
32
|
});
|
|
33
|
+
const sizeStyle = computed(
|
|
34
|
+
() => props.params.size ? { "--k-grid-image-size": props.params.size } : void 0
|
|
35
|
+
);
|
|
31
36
|
const alt = computed(() => props.params.alt?.(props.params.data) ?? "");
|
|
32
37
|
</script>
|
package/dist/grid/data-grid.css
CHANGED
|
@@ -33,6 +33,16 @@
|
|
|
33
33
|
min-height: 8rem;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
.k-data-grid.is-fill {
|
|
37
|
+
flex: 1 1 0%;
|
|
38
|
+
height: 100%;
|
|
39
|
+
min-height: 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.k-data-grid.is-fill > .k-data-grid-body {
|
|
43
|
+
flex: 1 1 0%;
|
|
44
|
+
}
|
|
45
|
+
|
|
36
46
|
.k-data-grid-ag {
|
|
37
47
|
height: 100%;
|
|
38
48
|
}
|
|
@@ -174,8 +184,8 @@
|
|
|
174
184
|
|
|
175
185
|
.k-data-grid-image {
|
|
176
186
|
display: block;
|
|
177
|
-
width: 1.75rem;
|
|
178
|
-
height: 1.75rem;
|
|
187
|
+
width: var(--k-grid-image-size, 1.75rem);
|
|
188
|
+
height: var(--k-grid-image-size, 1.75rem);
|
|
179
189
|
object-fit: cover;
|
|
180
190
|
background: var(--k-fill);
|
|
181
191
|
border-radius: var(--k-radius-sm);
|
|
@@ -188,6 +198,10 @@
|
|
|
188
198
|
--k-icon-size: 1rem;
|
|
189
199
|
}
|
|
190
200
|
|
|
201
|
+
.k-data-grid-image.is-contain {
|
|
202
|
+
object-fit: contain;
|
|
203
|
+
}
|
|
204
|
+
|
|
191
205
|
.k-data-grid-image.is-rounded {
|
|
192
206
|
border-radius: var(--k-radius-full);
|
|
193
207
|
}
|
package/dist/grid/index.d.ts
CHANGED
|
@@ -2,9 +2,10 @@ export { default as DataGrid } from './DataGrid.vue';
|
|
|
2
2
|
export { default as GridToolbar } from './GridToolbar.vue';
|
|
3
3
|
export { default as BooleanCell } from './cells/BooleanCell.vue';
|
|
4
4
|
export { default as DateCell } from './cells/DateCell.vue';
|
|
5
|
+
export { default as EmptyCell } from './cells/EmptyCell.vue';
|
|
5
6
|
export { default as BadgeCell } from './cells/BadgeCell.vue';
|
|
6
7
|
export { default as ImageCell } from './cells/ImageCell.vue';
|
|
7
8
|
export { default as LinkCell } from './cells/LinkCell.vue';
|
|
8
|
-
export { registerGridFilterModules, registerGridModules } from './modules';
|
|
9
|
+
export { registerGridEditorModules, registerGridFilterModules, registerGridModules, } from './modules';
|
|
9
10
|
export { createGridTheme } from './theme';
|
|
10
11
|
export type * from './types';
|
package/dist/grid/index.mjs
CHANGED
|
@@ -2,8 +2,13 @@ export { default as DataGrid } from "./DataGrid.vue";
|
|
|
2
2
|
export { default as GridToolbar } from "./GridToolbar.vue";
|
|
3
3
|
export { default as BooleanCell } from "./cells/BooleanCell.vue";
|
|
4
4
|
export { default as DateCell } from "./cells/DateCell.vue";
|
|
5
|
+
export { default as EmptyCell } from "./cells/EmptyCell.vue";
|
|
5
6
|
export { default as BadgeCell } from "./cells/BadgeCell.vue";
|
|
6
7
|
export { default as ImageCell } from "./cells/ImageCell.vue";
|
|
7
8
|
export { default as LinkCell } from "./cells/LinkCell.vue";
|
|
8
|
-
export {
|
|
9
|
+
export {
|
|
10
|
+
registerGridEditorModules,
|
|
11
|
+
registerGridFilterModules,
|
|
12
|
+
registerGridModules
|
|
13
|
+
} from "./modules.mjs";
|
|
9
14
|
export { createGridTheme } from "./theme.mjs";
|
package/dist/grid/modules.d.ts
CHANGED
package/dist/grid/modules.mjs
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CellApiModule,
|
|
3
|
+
CheckboxEditorModule,
|
|
4
|
+
CustomEditorModule,
|
|
5
|
+
DateEditorModule,
|
|
6
|
+
LargeTextEditorModule,
|
|
7
|
+
NumberEditorModule,
|
|
8
|
+
SelectEditorModule,
|
|
9
|
+
TextEditorModule,
|
|
10
|
+
UndoRedoEditModule,
|
|
3
11
|
CellStyleModule,
|
|
4
12
|
ClientSideRowModelApiModule,
|
|
5
13
|
ClientSideRowModelModule,
|
|
@@ -51,3 +59,18 @@ export function registerGridFilterModules() {
|
|
|
51
59
|
filtersRegistered = true;
|
|
52
60
|
ModuleRegistry.registerModules([TextFilterModule, NumberFilterModule, DateFilterModule]);
|
|
53
61
|
}
|
|
62
|
+
let editorsRegistered = false;
|
|
63
|
+
export function registerGridEditorModules() {
|
|
64
|
+
if (editorsRegistered) return;
|
|
65
|
+
editorsRegistered = true;
|
|
66
|
+
ModuleRegistry.registerModules([
|
|
67
|
+
TextEditorModule,
|
|
68
|
+
LargeTextEditorModule,
|
|
69
|
+
NumberEditorModule,
|
|
70
|
+
DateEditorModule,
|
|
71
|
+
CheckboxEditorModule,
|
|
72
|
+
SelectEditorModule,
|
|
73
|
+
CustomEditorModule,
|
|
74
|
+
UndoRedoEditModule
|
|
75
|
+
]);
|
|
76
|
+
}
|
package/dist/grid/theme.mjs
CHANGED
|
@@ -17,7 +17,7 @@ export function createGridTheme(density) {
|
|
|
17
17
|
headerBackgroundColor: "var(--k-grid-header-background, var(--k-subtle))",
|
|
18
18
|
headerTextColor: "var(--k-grid-header-text, var(--k-text-muted))",
|
|
19
19
|
headerFontFamily: "var(--k-grid-header-font, var(--k-font-sans))",
|
|
20
|
-
headerFontSize:
|
|
20
|
+
headerFontSize: "var(--k-grid-header-font-size, 12px)",
|
|
21
21
|
headerFontWeight: "var(--k-grid-header-font-weight, var(--k-font-weight-medium, 500))",
|
|
22
22
|
headerRowBorder: { color: "var(--k-line)" },
|
|
23
23
|
headerColumnBorder: false,
|
package/dist/grid/types.d.ts
CHANGED
|
@@ -39,15 +39,19 @@ export interface DateCellParams {
|
|
|
39
39
|
locale?: string;
|
|
40
40
|
options?: Intl.DateTimeFormatOptions;
|
|
41
41
|
relative?: boolean | Intl.RelativeTimeFormatOptions;
|
|
42
|
+
relativeWithin?: number;
|
|
42
43
|
}
|
|
43
44
|
export interface BadgeCellParams {
|
|
44
45
|
tones?: Record<string, Tone>;
|
|
45
46
|
labels?: Record<string, string>;
|
|
46
47
|
defaultTone?: Tone;
|
|
47
48
|
}
|
|
49
|
+
export type ImageCellFit = 'cover' | 'contain';
|
|
48
50
|
export interface ImageCellParams<T = unknown> {
|
|
49
51
|
alt?: (data: T | undefined) => string;
|
|
50
52
|
rounded?: boolean;
|
|
53
|
+
fit?: ImageCellFit;
|
|
54
|
+
size?: string;
|
|
51
55
|
}
|
|
52
56
|
export interface LinkCellParams<T = unknown> {
|
|
53
57
|
href?: (value: unknown, data: T | undefined) => string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface CharacterCounterOptions {
|
|
2
|
+
enabled: () => boolean | undefined;
|
|
3
|
+
value: () => unknown;
|
|
4
|
+
attrs: Record<string, unknown>;
|
|
5
|
+
}
|
|
6
|
+
export interface CharacterCounterState {
|
|
7
|
+
id: string;
|
|
8
|
+
visible: boolean;
|
|
9
|
+
length: number;
|
|
10
|
+
max: number;
|
|
11
|
+
atLimit: boolean;
|
|
12
|
+
text: string;
|
|
13
|
+
label: string;
|
|
14
|
+
limitMessage: string;
|
|
15
|
+
width: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function useCharacterCounter(options: CharacterCounterOptions): () => CharacterCounterState;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useId } from "vue";
|
|
2
|
+
import { useLocale } from "../../composables/useLocale.mjs";
|
|
3
|
+
function readLimit(attrs) {
|
|
4
|
+
const raw = attrs.maxlength ?? attrs.maxLength;
|
|
5
|
+
if (raw === void 0 || raw === null || raw === "" || raw === false) return void 0;
|
|
6
|
+
const limit = Number(raw);
|
|
7
|
+
return Number.isFinite(limit) && limit >= 0 ? Math.trunc(limit) : void 0;
|
|
8
|
+
}
|
|
9
|
+
export function useCharacterCounter(options) {
|
|
10
|
+
const { t } = useLocale();
|
|
11
|
+
const id = useId();
|
|
12
|
+
return () => {
|
|
13
|
+
const max = readLimit(options.attrs);
|
|
14
|
+
const visible = Boolean(options.enabled()) && max !== void 0;
|
|
15
|
+
const value = options.value();
|
|
16
|
+
const length = value === null || value === void 0 ? 0 : String(value).length;
|
|
17
|
+
const limit = max ?? 0;
|
|
18
|
+
const atLimit = visible && length >= limit;
|
|
19
|
+
return {
|
|
20
|
+
id,
|
|
21
|
+
visible,
|
|
22
|
+
length,
|
|
23
|
+
max: limit,
|
|
24
|
+
atLimit,
|
|
25
|
+
text: `${length} / ${limit}`,
|
|
26
|
+
label: visible ? t("form.characterCount", { count: length, max: limit }) : "",
|
|
27
|
+
limitMessage: atLimit ? t("form.characterLimitReached") : "",
|
|
28
|
+
width: String(limit).length * 2 + 3
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -11,6 +11,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
11
11
|
results?: (string | number) | undefined;
|
|
12
12
|
placeholder?: string | undefined;
|
|
13
13
|
description?: string;
|
|
14
|
+
flush?: boolean;
|
|
14
15
|
dir?: string | undefined;
|
|
15
16
|
class?: import("vue").ClassValue;
|
|
16
17
|
role?: string | undefined;
|
|
@@ -207,10 +208,9 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
207
208
|
onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
|
|
208
209
|
onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
209
210
|
onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
210
|
-
|
|
211
|
+
sheet?: boolean;
|
|
211
212
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
212
213
|
side?: import("../../index.ts").DrawerSide;
|
|
213
|
-
sheet?: boolean;
|
|
214
214
|
onOpen?: ((() => any) & (() => any)) | undefined;
|
|
215
215
|
closeLabel?: string;
|
|
216
216
|
rootClass?: unknown;
|
|
@@ -234,6 +234,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
234
234
|
results?: (string | number) | undefined;
|
|
235
235
|
placeholder?: string | undefined;
|
|
236
236
|
description?: string;
|
|
237
|
+
flush?: boolean;
|
|
237
238
|
dir?: string | undefined;
|
|
238
239
|
class?: import("vue").ClassValue;
|
|
239
240
|
role?: string | undefined;
|
|
@@ -430,10 +431,9 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
430
431
|
onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
|
|
431
432
|
onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
432
433
|
onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
|
|
433
|
-
|
|
434
|
+
sheet?: boolean;
|
|
434
435
|
onCancel?: ((payload: Event) => void) | undefined;
|
|
435
436
|
side?: import("../../index.ts").DrawerSide;
|
|
436
|
-
sheet?: boolean;
|
|
437
437
|
onOpen?: ((() => any) & (() => any)) | undefined;
|
|
438
438
|
closeLabel?: string;
|
|
439
439
|
rootClass?: unknown;
|
package/dist/locale/de.mjs
CHANGED
|
@@ -40,7 +40,10 @@ export const de = {
|
|
|
40
40
|
maxItems: "W\xE4hle h\xF6chstens {count} Eintrag | W\xE4hle h\xF6chstens {count} Eintr\xE4ge",
|
|
41
41
|
pattern: "Ung\xFCltiges Format",
|
|
42
42
|
invalid: "Ung\xFCltiger Wert",
|
|
43
|
-
requiredHint: "(erforderlich)"
|
|
43
|
+
requiredHint: "(erforderlich)",
|
|
44
|
+
optional: "Optional",
|
|
45
|
+
characterCount: "{count} von {max} Zeichen",
|
|
46
|
+
characterLimitReached: "Zeichenlimit erreicht"
|
|
44
47
|
},
|
|
45
48
|
editor: {
|
|
46
49
|
bold: "Fett",
|
|
@@ -59,6 +62,13 @@ export const de = {
|
|
|
59
62
|
linkUrl: "Link-URL",
|
|
60
63
|
applyLink: "\xDCbernehmen",
|
|
61
64
|
removeLink: "Link entfernen",
|
|
65
|
+
linkType: "Linktyp",
|
|
66
|
+
linkTypeUrl: "Webadresse",
|
|
67
|
+
linkTypeEmail: "E-Mail",
|
|
68
|
+
linkTypePhone: "Telefon",
|
|
69
|
+
linkEmail: "E-Mail-Adresse",
|
|
70
|
+
linkPhone: "Telefonnummer",
|
|
71
|
+
linkText: "Linktext",
|
|
62
72
|
characters: "{count} Zeichen | {count} Zeichen",
|
|
63
73
|
limit: "{count} von {max} Zeichen",
|
|
64
74
|
limitReached: "Zeichenlimit erreicht"
|
package/dist/locale/en.mjs
CHANGED
|
@@ -40,7 +40,10 @@ export const en = {
|
|
|
40
40
|
maxItems: "Select at most {count} item | Select at most {count} items",
|
|
41
41
|
pattern: "Invalid format",
|
|
42
42
|
invalid: "Invalid value",
|
|
43
|
-
requiredHint: "(required)"
|
|
43
|
+
requiredHint: "(required)",
|
|
44
|
+
optional: "Optional",
|
|
45
|
+
characterCount: "{count} of {max} characters",
|
|
46
|
+
characterLimitReached: "Character limit reached"
|
|
44
47
|
},
|
|
45
48
|
editor: {
|
|
46
49
|
bold: "Bold",
|
|
@@ -59,6 +62,13 @@ export const en = {
|
|
|
59
62
|
linkUrl: "Link URL",
|
|
60
63
|
applyLink: "Apply",
|
|
61
64
|
removeLink: "Remove link",
|
|
65
|
+
linkType: "Link type",
|
|
66
|
+
linkTypeUrl: "Web address",
|
|
67
|
+
linkTypeEmail: "Email",
|
|
68
|
+
linkTypePhone: "Phone",
|
|
69
|
+
linkEmail: "Email address",
|
|
70
|
+
linkPhone: "Phone number",
|
|
71
|
+
linkText: "Link text",
|
|
62
72
|
characters: "{count} character | {count} characters",
|
|
63
73
|
limit: "{count} of {max} characters",
|
|
64
74
|
limitReached: "Character limit reached"
|
package/dist/locale/it.mjs
CHANGED
|
@@ -40,7 +40,10 @@ export const it = {
|
|
|
40
40
|
maxItems: "Seleziona al massimo {count} elemento | Seleziona al massimo {count} elementi",
|
|
41
41
|
pattern: "Formato non valido",
|
|
42
42
|
invalid: "Valore non valido",
|
|
43
|
-
requiredHint: "(obbligatorio)"
|
|
43
|
+
requiredHint: "(obbligatorio)",
|
|
44
|
+
optional: "Facoltativo",
|
|
45
|
+
characterCount: "{count} di {max} caratteri",
|
|
46
|
+
characterLimitReached: "Limite di caratteri raggiunto"
|
|
44
47
|
},
|
|
45
48
|
editor: {
|
|
46
49
|
bold: "Grassetto",
|
|
@@ -59,6 +62,13 @@ export const it = {
|
|
|
59
62
|
linkUrl: "URL del link",
|
|
60
63
|
applyLink: "Applica",
|
|
61
64
|
removeLink: "Rimuovi link",
|
|
65
|
+
linkType: "Tipo di link",
|
|
66
|
+
linkTypeUrl: "Indirizzo web",
|
|
67
|
+
linkTypeEmail: "Email",
|
|
68
|
+
linkTypePhone: "Telefono",
|
|
69
|
+
linkEmail: "Indirizzo email",
|
|
70
|
+
linkPhone: "Numero di telefono",
|
|
71
|
+
linkText: "Testo del link",
|
|
62
72
|
characters: "{count} carattere | {count} caratteri",
|
|
63
73
|
limit: "{count} di {max} caratteri",
|
|
64
74
|
limitReached: "Limite di caratteri raggiunto"
|
package/dist/locale/types.d.ts
CHANGED
|
@@ -39,6 +39,9 @@ export interface KMessages {
|
|
|
39
39
|
pattern: string;
|
|
40
40
|
invalid: string;
|
|
41
41
|
requiredHint: string;
|
|
42
|
+
optional: string;
|
|
43
|
+
characterCount: string;
|
|
44
|
+
characterLimitReached: string;
|
|
42
45
|
};
|
|
43
46
|
editor: {
|
|
44
47
|
bold: string;
|
|
@@ -57,6 +60,13 @@ export interface KMessages {
|
|
|
57
60
|
linkUrl: string;
|
|
58
61
|
applyLink: string;
|
|
59
62
|
removeLink: string;
|
|
63
|
+
linkType: string;
|
|
64
|
+
linkTypeUrl: string;
|
|
65
|
+
linkTypeEmail: string;
|
|
66
|
+
linkTypePhone: string;
|
|
67
|
+
linkEmail: string;
|
|
68
|
+
linkPhone: string;
|
|
69
|
+
linkText: string;
|
|
60
70
|
characters: string;
|
|
61
71
|
limit: string;
|
|
62
72
|
limitReached: string;
|
|
@@ -141,22 +141,22 @@
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
.k-btn-solid:hover:not(:disabled, [aria-disabled='true']) {
|
|
144
|
-
background: color-mix(in oklab, var(--k-btn-tone) 90%, black);
|
|
144
|
+
background: var(--k-btn-hover-background, color-mix(in oklab, var(--k-btn-tone) 90%, black));
|
|
145
145
|
box-shadow:
|
|
146
146
|
inset 0 1px 0 var(--k-btn-highlight, rgb(255 255 255 / 0.22)),
|
|
147
147
|
var(--k-btn-shadow, 0 2px 8px -2px color-mix(in oklab, var(--k-btn-tone) 60%, transparent));
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
.k-btn-solid:active:not(:disabled, [aria-disabled='true']) {
|
|
151
|
-
background: color-mix(in oklab, var(--k-btn-tone) 82%, black);
|
|
151
|
+
background: var(--k-btn-active-background, color-mix(in oklab, var(--k-btn-tone) 82%, black));
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
.k-btn-accent.k-btn-solid:hover:not(:disabled, [aria-disabled='true']) {
|
|
155
|
-
background: var(--k-accent-hover);
|
|
155
|
+
background: var(--k-btn-hover-background, var(--k-accent-hover));
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
.k-btn-accent.k-btn-solid:active:not(:disabled, [aria-disabled='true']) {
|
|
159
|
-
background: var(--k-accent-press);
|
|
159
|
+
background: var(--k-btn-active-background, var(--k-accent-press));
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
.k-btn-neutral.k-btn-solid {
|
|
@@ -167,12 +167,18 @@
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
.k-btn-neutral.k-btn-solid:hover:not(:disabled, [aria-disabled='true']) {
|
|
170
|
-
background:
|
|
170
|
+
background: var(
|
|
171
|
+
--k-btn-hover-background,
|
|
172
|
+
color-mix(in oklab, var(--k-text) 86%, var(--k-surface))
|
|
173
|
+
);
|
|
171
174
|
box-shadow: inset 0 1px 0 var(--k-btn-highlight, rgb(255 255 255 / 0.14));
|
|
172
175
|
}
|
|
173
176
|
|
|
174
177
|
.k-btn-neutral.k-btn-solid:active:not(:disabled, [aria-disabled='true']) {
|
|
175
|
-
background:
|
|
178
|
+
background: var(
|
|
179
|
+
--k-btn-active-background,
|
|
180
|
+
color-mix(in oklab, var(--k-text) 80%, var(--k-surface))
|
|
181
|
+
);
|
|
176
182
|
}
|
|
177
183
|
|
|
178
184
|
.k-btn-soft {
|
|
@@ -134,3 +134,32 @@
|
|
|
134
134
|
.k-input.has-trail .k-field {
|
|
135
135
|
padding-right: 2.125rem;
|
|
136
136
|
}
|
|
137
|
+
|
|
138
|
+
.k-field-counter {
|
|
139
|
+
font-size: 0.75rem;
|
|
140
|
+
line-height: 1;
|
|
141
|
+
color: var(--k-text-muted);
|
|
142
|
+
white-space: nowrap;
|
|
143
|
+
pointer-events: none;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.k-field-counter.is-over {
|
|
147
|
+
color: var(--k-danger-text);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.k-input > .k-field-counter {
|
|
151
|
+
position: absolute;
|
|
152
|
+
right: 0.6875rem;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.k-input.has-trail > .k-field-counter {
|
|
156
|
+
right: 2.125rem;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.k-input.has-counter .k-field {
|
|
160
|
+
padding-right: calc(var(--k-input-counter-chars) * 0.5rem + 1rem);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.k-input.has-counter.has-trail .k-field {
|
|
164
|
+
padding-right: calc(var(--k-input-counter-chars) * 0.5rem + 2.5rem);
|
|
165
|
+
}
|
|
@@ -37,3 +37,13 @@
|
|
|
37
37
|
.k-textarea-box.has-trail .k-textarea {
|
|
38
38
|
padding-right: 2.125rem;
|
|
39
39
|
}
|
|
40
|
+
|
|
41
|
+
.k-textarea-box > .k-field-counter {
|
|
42
|
+
position: absolute;
|
|
43
|
+
right: 1.25rem;
|
|
44
|
+
bottom: 0.5rem;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.k-textarea-box.has-counter .k-textarea {
|
|
48
|
+
padding-bottom: 1.5rem;
|
|
49
|
+
}
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
place-items: center;
|
|
62
62
|
width: 100%;
|
|
63
63
|
height: 100%;
|
|
64
|
-
border-radius: var(--k-radius-md);
|
|
64
|
+
border-radius: var(--k-calendar-day-radius, var(--k-radius-md));
|
|
65
65
|
color: var(--k-text-toned);
|
|
66
66
|
font-variant-numeric: tabular-nums;
|
|
67
67
|
transition:
|
|
@@ -134,14 +134,14 @@
|
|
|
134
134
|
|
|
135
135
|
.k-calendar-day.is-in-range:first-child::before,
|
|
136
136
|
.k-calendar-day.is-in-preview:first-child::before {
|
|
137
|
-
border-top-left-radius: var(--k-radius-md);
|
|
138
|
-
border-bottom-left-radius: var(--k-radius-md);
|
|
137
|
+
border-top-left-radius: var(--k-calendar-day-radius, var(--k-radius-md));
|
|
138
|
+
border-bottom-left-radius: var(--k-calendar-day-radius, var(--k-radius-md));
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
.k-calendar-day.is-in-range:last-child::before,
|
|
142
142
|
.k-calendar-day.is-in-preview:last-child::before {
|
|
143
|
-
border-top-right-radius: var(--k-radius-md);
|
|
144
|
-
border-bottom-right-radius: var(--k-radius-md);
|
|
143
|
+
border-top-right-radius: var(--k-calendar-day-radius, var(--k-radius-md));
|
|
144
|
+
border-bottom-right-radius: var(--k-calendar-day-radius, var(--k-radius-md));
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
.k-calendar-day.is-selected .k-calendar-day-number,
|
|
@@ -169,9 +169,9 @@
|
|
|
169
169
|
.k-calendar-day.is-unavailable .k-calendar-day-number,
|
|
170
170
|
.k-calendar-day.is-unavailable:hover .k-calendar-day-number {
|
|
171
171
|
background: transparent;
|
|
172
|
-
color: var(--k-text-dimmed);
|
|
173
|
-
text-decoration: line-through;
|
|
174
|
-
opacity: 0.6;
|
|
172
|
+
color: var(--k-calendar-unavailable-color, var(--k-text-dimmed));
|
|
173
|
+
text-decoration: var(--k-calendar-unavailable-decoration, line-through);
|
|
174
|
+
opacity: var(--k-calendar-unavailable-opacity, 0.6);
|
|
175
175
|
}
|
|
176
176
|
|
|
177
177
|
.k-calendar.is-disabled {
|
|
@@ -25,6 +25,12 @@
|
|
|
25
25
|
gap: 0.5rem 1.25rem;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
.k-choice-group.has-columns > .k-choice-group-items {
|
|
29
|
+
display: grid;
|
|
30
|
+
grid-template-columns: repeat(var(--k-choice-columns), minmax(0, 1fr));
|
|
31
|
+
gap: 0.625rem 1.25rem;
|
|
32
|
+
}
|
|
33
|
+
|
|
28
34
|
.k-radio-group-card > .k-choice-group-items {
|
|
29
35
|
gap: 0.5rem;
|
|
30
36
|
}
|
|
@@ -56,3 +56,52 @@
|
|
|
56
56
|
font-size: 0.75rem;
|
|
57
57
|
color: var(--k-text-muted);
|
|
58
58
|
}
|
|
59
|
+
|
|
60
|
+
.k-separator.no-lines {
|
|
61
|
+
background: none;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.k-separator.has-label.no-lines {
|
|
65
|
+
justify-content: center;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.k-separator.has-label.no-lines::before,
|
|
69
|
+
.k-separator.has-label.no-lines::after,
|
|
70
|
+
.k-separator-heading.has-label::before,
|
|
71
|
+
.k-separator-heading.has-label::after {
|
|
72
|
+
display: none;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.k-separator-heading.has-label {
|
|
76
|
+
justify-content: flex-start;
|
|
77
|
+
padding-top: 0.75rem;
|
|
78
|
+
border-top: 1px solid var(--k-line);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.k-separator-heading.has-label.no-lines {
|
|
82
|
+
padding-top: 0;
|
|
83
|
+
border-top: 0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.k-separator-heading .k-separator-text {
|
|
87
|
+
display: flex;
|
|
88
|
+
flex: 1;
|
|
89
|
+
align-items: flex-start;
|
|
90
|
+
gap: 0.25rem;
|
|
91
|
+
text-align: start;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.k-separator-heading .k-separator-label {
|
|
95
|
+
margin: 0;
|
|
96
|
+
font-size: var(--k-separator-heading-font-size, 0.9375rem);
|
|
97
|
+
font-weight: var(--k-font-weight-strong, 600);
|
|
98
|
+
line-height: 1.3;
|
|
99
|
+
color: var(--k-text);
|
|
100
|
+
white-space: normal;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.k-separator-heading .k-separator-description {
|
|
104
|
+
margin: 0;
|
|
105
|
+
font-size: 0.8125rem;
|
|
106
|
+
line-height: 1.4;
|
|
107
|
+
}
|
package/dist/styles/shared.css
CHANGED
package/package.json
CHANGED