@cocoar/vue-markdown-form 3.1.0-beta.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.
- package/dist/BlockFieldEmbed.vue.d.ts +9 -0
- package/dist/BlockFieldEmbed.vue.d.ts.map +1 -0
- package/dist/CoarMarkdownForm.vue.d.ts +28 -0
- package/dist/CoarMarkdownForm.vue.d.ts.map +1 -0
- package/dist/FieldHost.vue.d.ts +7 -0
- package/dist/FieldHost.vue.d.ts.map +1 -0
- package/dist/InlineTextRenderer.d.ts +33 -0
- package/dist/InlineTextRenderer.d.ts.map +1 -0
- package/dist/ParagraphRenderer.d.ts +33 -0
- package/dist/ParagraphRenderer.d.ts.map +1 -0
- package/dist/context.d.ts +16 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/field-layout.d.ts +9 -0
- package/dist/field-layout.d.ts.map +1 -0
- package/dist/fields/BooleanFieldControl.vue.d.ts +9 -0
- package/dist/fields/BooleanFieldControl.vue.d.ts.map +1 -0
- package/dist/fields/DateFieldControl.vue.d.ts +9 -0
- package/dist/fields/DateFieldControl.vue.d.ts.map +1 -0
- package/dist/fields/DateTimeFieldControl.vue.d.ts +9 -0
- package/dist/fields/DateTimeFieldControl.vue.d.ts.map +1 -0
- package/dist/fields/MarkdownFieldControl.vue.d.ts +9 -0
- package/dist/fields/MarkdownFieldControl.vue.d.ts.map +1 -0
- package/dist/fields/MarkdownFieldReadonly.vue.d.ts +5 -0
- package/dist/fields/MarkdownFieldReadonly.vue.d.ts.map +1 -0
- package/dist/fields/NumberFieldControl.vue.d.ts +9 -0
- package/dist/fields/NumberFieldControl.vue.d.ts.map +1 -0
- package/dist/fields/SelectFieldControl.vue.d.ts +9 -0
- package/dist/fields/SelectFieldControl.vue.d.ts.map +1 -0
- package/dist/fields/TextFieldControl.vue.d.ts +9 -0
- package/dist/fields/TextFieldControl.vue.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1027 -0
- package/dist/registry.d.ts +4 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/template-parser.d.ts +18 -0
- package/dist/template-parser.d.ts.map +1 -0
- package/dist/types.d.ts +88 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +59 -0
- package/styles/markdown-form.css +177 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { MarkdownFormFieldRegistry } from './types';
|
|
2
|
+
export declare const BUILTIN_MARKDOWN_FORM_FIELDS: Readonly<MarkdownFormFieldRegistry>;
|
|
3
|
+
export declare function mergeMarkdownFormFields(custom: MarkdownFormFieldRegistry | undefined): MarkdownFormFieldRegistry;
|
|
4
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAA0C,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAkDjG,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,yBAAyB,CAiG5E,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,yBAAyB,GAAG,SAAS,GAC5C,yBAAyB,CAK3B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MarkdownDocument, MarkdownNode } from '@cocoar/vue-markdown-core';
|
|
2
|
+
import { MarkdownFormField, MarkdownFormFieldRegistry, MarkdownFormMessages, MarkdownFormTemplateIssue } from './types';
|
|
3
|
+
export type MarkdownFormInlineSegment = {
|
|
4
|
+
readonly type: 'text';
|
|
5
|
+
readonly text: string;
|
|
6
|
+
} | {
|
|
7
|
+
readonly type: 'field';
|
|
8
|
+
readonly field: MarkdownFormField;
|
|
9
|
+
};
|
|
10
|
+
export declare function createMarkdownFormField(props: Readonly<Record<string, string>>, source: 'inline' | 'block', occurrenceId: string, defaultType?: string): MarkdownFormField;
|
|
11
|
+
export declare function parseInlineMarkdownFormFields(source: string, nodeId?: string): MarkdownFormInlineSegment[];
|
|
12
|
+
export declare function fieldFromEmbedNode(node: MarkdownNode): MarkdownFormField | null;
|
|
13
|
+
export declare function collectMarkdownFormFields(doc: MarkdownDocument): MarkdownFormField[];
|
|
14
|
+
export declare function analyzeMarkdownFormTemplate(doc: MarkdownDocument, registry: Readonly<MarkdownFormFieldRegistry>, messages: Readonly<MarkdownFormMessages>): {
|
|
15
|
+
fields: readonly MarkdownFormField[];
|
|
16
|
+
issues: readonly MarkdownFormTemplateIssue[];
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=template-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-parser.d.ts","sourceRoot":"","sources":["../src/template-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,iBAAiB,EAEjB,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,CAAC;AA2ClE,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACvC,MAAM,EAAE,QAAQ,GAAG,OAAO,EAC1B,YAAY,EAAE,MAAM,EACpB,WAAW,SAAS,GACnB,iBAAiB,CAgBnB;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,MAAM,SAAW,GAChB,yBAAyB,EAAE,CAmC7B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,iBAAiB,GAAG,IAAI,CAW/E;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,GAAG,iBAAiB,EAAE,CAcpF;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EAC7C,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACvC;IAAE,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAA;CAAE,CA4BxF"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Component } from 'vue';
|
|
2
|
+
import { CoarMarkdownEditorToolEntry } from '@cocoar/vue-markdown-editor';
|
|
3
|
+
export type MarkdownFormMode = 'fill' | 'readonly';
|
|
4
|
+
export type MarkdownFormControlDesign = 'basic' | 'coar';
|
|
5
|
+
export type MarkdownFormFieldSource = 'inline' | 'block';
|
|
6
|
+
export type MarkdownFormFieldLayout = 'inline' | 'row' | 'stacked' | 'block';
|
|
7
|
+
export type MarkdownFormNamedWidth = 'small' | 'medium' | 'large';
|
|
8
|
+
export type MarkdownFormFieldWidth = MarkdownFormNamedWidth | 'fill' | 'full' | `${number}ch` | `${number}rem`;
|
|
9
|
+
export type MarkdownFormFieldWidths = Readonly<Record<MarkdownFormNamedWidth, `${number}ch` | `${number}rem`>>;
|
|
10
|
+
export type MarkdownFormValueType = 'string' | 'number' | 'boolean' | 'string[]' | 'date' | 'datetime' | (string & {});
|
|
11
|
+
export type MarkdownFormValues = Record<string, unknown>;
|
|
12
|
+
export interface MarkdownFormReadonlyDecorations {
|
|
13
|
+
markdownFrame: boolean;
|
|
14
|
+
inlineUnderline: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface MarkdownFormField {
|
|
17
|
+
readonly occurrenceId: string;
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly type: string;
|
|
20
|
+
readonly source: MarkdownFormFieldSource;
|
|
21
|
+
readonly layout: MarkdownFormFieldLayout;
|
|
22
|
+
readonly width: string;
|
|
23
|
+
readonly required: boolean;
|
|
24
|
+
readonly props: Readonly<Record<string, string>>;
|
|
25
|
+
}
|
|
26
|
+
export interface MarkdownFormMessages {
|
|
27
|
+
required(field: MarkdownFormField): string;
|
|
28
|
+
missingId(field: MarkdownFormField): string;
|
|
29
|
+
duplicateId(field: MarkdownFormField): string;
|
|
30
|
+
unknownType(field: MarkdownFormField): string;
|
|
31
|
+
unsupportedLayout(field: MarkdownFormField): string;
|
|
32
|
+
booleanTrue: string;
|
|
33
|
+
booleanFalse: string;
|
|
34
|
+
empty: string;
|
|
35
|
+
}
|
|
36
|
+
export interface MarkdownFormContext {
|
|
37
|
+
readonly design: MarkdownFormControlDesign;
|
|
38
|
+
readonly locale: string;
|
|
39
|
+
readonly widths: MarkdownFormFieldWidths;
|
|
40
|
+
readonly decorations: Readonly<MarkdownFormReadonlyDecorations>;
|
|
41
|
+
readonly messages: Readonly<MarkdownFormMessages>;
|
|
42
|
+
readonly markdownTools: readonly CoarMarkdownEditorToolEntry[];
|
|
43
|
+
}
|
|
44
|
+
export interface MarkdownFormContextInput {
|
|
45
|
+
design?: MarkdownFormControlDesign;
|
|
46
|
+
locale?: string;
|
|
47
|
+
widths?: Partial<MarkdownFormFieldWidths>;
|
|
48
|
+
decorations?: Partial<MarkdownFormReadonlyDecorations>;
|
|
49
|
+
messages?: Partial<MarkdownFormMessages>;
|
|
50
|
+
markdownTools?: readonly CoarMarkdownEditorToolEntry[];
|
|
51
|
+
}
|
|
52
|
+
export interface MarkdownFormFieldControlProps<TValue = unknown> {
|
|
53
|
+
field: MarkdownFormField;
|
|
54
|
+
modelValue: TValue;
|
|
55
|
+
context: Readonly<MarkdownFormContext>;
|
|
56
|
+
error?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface MarkdownFormFieldReadonlyProps<TValue = unknown> {
|
|
59
|
+
field: MarkdownFormField;
|
|
60
|
+
modelValue: TValue;
|
|
61
|
+
context: Readonly<MarkdownFormContext>;
|
|
62
|
+
}
|
|
63
|
+
export interface MarkdownFormFieldDefinition<TValue = unknown> {
|
|
64
|
+
control: Component;
|
|
65
|
+
readonly?: Component;
|
|
66
|
+
valueType: MarkdownFormValueType;
|
|
67
|
+
layouts?: readonly MarkdownFormFieldLayout[];
|
|
68
|
+
defaultValue?: (field: MarkdownFormField) => TValue;
|
|
69
|
+
isEmpty?: (value: TValue, field: MarkdownFormField) => boolean;
|
|
70
|
+
validate?: (value: TValue, field: MarkdownFormField, values: Readonly<MarkdownFormValues>, context: Readonly<MarkdownFormContext>) => string | null;
|
|
71
|
+
formatReadonly?: (value: TValue, field: MarkdownFormField, context: Readonly<MarkdownFormContext>) => string;
|
|
72
|
+
}
|
|
73
|
+
export type MarkdownFormFieldRegistry = Record<string, MarkdownFormFieldDefinition>;
|
|
74
|
+
export type MarkdownFormTemplateIssueCode = 'missing-id' | 'duplicate-id' | 'unknown-type' | 'unsupported-layout';
|
|
75
|
+
export interface MarkdownFormTemplateIssue {
|
|
76
|
+
readonly code: MarkdownFormTemplateIssueCode;
|
|
77
|
+
readonly message: string;
|
|
78
|
+
readonly field: MarkdownFormField;
|
|
79
|
+
}
|
|
80
|
+
export interface MarkdownFormValidationResult {
|
|
81
|
+
readonly valid: boolean;
|
|
82
|
+
readonly errors: Readonly<Record<string, string>>;
|
|
83
|
+
readonly issues: readonly MarkdownFormTemplateIssue[];
|
|
84
|
+
}
|
|
85
|
+
export interface MarkdownFormExpose {
|
|
86
|
+
validate(): MarkdownFormValidationResult;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cocoar/vue-markdown-form",
|
|
3
|
+
"version": "3.1.0-beta.1",
|
|
4
|
+
"description": "Template-driven Markdown forms with fixed prose, registered field controls, separate values and readonly rendering.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/cocoar-dev/cocoar-ui-vue.git",
|
|
9
|
+
"directory": "packages/markdown-form"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://docs.cocoar.dev/cocoar-ui-vue/",
|
|
12
|
+
"bugs": "https://github.com/cocoar-dev/cocoar-ui-vue/issues",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"vue",
|
|
15
|
+
"vue3",
|
|
16
|
+
"markdown",
|
|
17
|
+
"form",
|
|
18
|
+
"template"
|
|
19
|
+
],
|
|
20
|
+
"type": "module",
|
|
21
|
+
"sideEffects": [
|
|
22
|
+
"*.css",
|
|
23
|
+
"styles/*.css"
|
|
24
|
+
],
|
|
25
|
+
"main": "./dist/index.js",
|
|
26
|
+
"module": "./dist/index.js",
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"import": "./dist/index.js",
|
|
31
|
+
"types": "./dist/index.d.ts"
|
|
32
|
+
},
|
|
33
|
+
"./styles": "./styles/markdown-form.css"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"styles"
|
|
38
|
+
],
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "vite build",
|
|
41
|
+
"test": "vitest run",
|
|
42
|
+
"lint": "eslint src/",
|
|
43
|
+
"typecheck": "vue-tsc --noEmit"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@cocoar/vue-markdown": "3.1.0-beta.1",
|
|
47
|
+
"@cocoar/vue-markdown-core": "3.1.0-beta.1",
|
|
48
|
+
"@cocoar/vue-markdown-editor": "3.1.0-beta.1",
|
|
49
|
+
"@js-temporal/polyfill": "^0.5.1"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"@cocoar/vue-ui": "3.1.0-beta.1",
|
|
53
|
+
"vue": "^3.5.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@cocoar/vue-ui": "workspace:*",
|
|
57
|
+
"vue": "^3.5.32"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
.coar-markdown-form > .coar-markdown {
|
|
2
|
+
max-width: none;
|
|
3
|
+
}
|
|
4
|
+
.coar-markdown-form__issues {
|
|
5
|
+
margin-block-end: 1rem;
|
|
6
|
+
padding: 0.75rem 1rem;
|
|
7
|
+
border: 1px solid var(--coar-color-danger-500, #b42318);
|
|
8
|
+
border-radius: var(--coar-radius-m, 6px);
|
|
9
|
+
background: var(--coar-color-danger-50, #fef3f2);
|
|
10
|
+
color: var(--coar-color-danger-800, #7a271a);
|
|
11
|
+
font-size: 0.85rem;
|
|
12
|
+
}
|
|
13
|
+
.coar-markdown-form__issues ul {
|
|
14
|
+
margin: 0.35rem 0 0;
|
|
15
|
+
padding-inline-start: 1.25rem;
|
|
16
|
+
}
|
|
17
|
+
.coar-markdown-form-field {
|
|
18
|
+
min-width: 0;
|
|
19
|
+
}
|
|
20
|
+
.coar-markdown-form-field--inline {
|
|
21
|
+
display: inline-flex;
|
|
22
|
+
align-items: center;
|
|
23
|
+
margin: 0 0.22rem;
|
|
24
|
+
line-height: normal;
|
|
25
|
+
vertical-align: middle;
|
|
26
|
+
}
|
|
27
|
+
.coar-markdown-form-field--inline > :not(.coar-markdown-form-field__error) {
|
|
28
|
+
width: 100%;
|
|
29
|
+
}
|
|
30
|
+
.coar-markdown-form-field--layout-row,
|
|
31
|
+
.coar-markdown-form-field--layout-stacked {
|
|
32
|
+
flex-wrap: wrap;
|
|
33
|
+
}
|
|
34
|
+
.coar-markdown-form-field--width-fill,
|
|
35
|
+
.coar-markdown-form-field--width-full {
|
|
36
|
+
width: 100% !important;
|
|
37
|
+
}
|
|
38
|
+
.coar-markdown-form-paragraph--row {
|
|
39
|
+
display: grid;
|
|
40
|
+
grid-template-columns: max-content minmax(0, 1fr);
|
|
41
|
+
align-items: center;
|
|
42
|
+
gap: 12px;
|
|
43
|
+
margin-block-end: 0;
|
|
44
|
+
line-height: normal;
|
|
45
|
+
}
|
|
46
|
+
.coar-markdown-form-paragraph--row > .coar-markdown-form-text-fragment {
|
|
47
|
+
display: flex;
|
|
48
|
+
min-width: 0;
|
|
49
|
+
}
|
|
50
|
+
.coar-markdown-form-paragraph--row .coar-markdown-form-field--layout-row {
|
|
51
|
+
margin: 0;
|
|
52
|
+
width: 100% !important;
|
|
53
|
+
}
|
|
54
|
+
.coar-markdown-form-paragraph--stacked {
|
|
55
|
+
display: grid;
|
|
56
|
+
grid-template-columns: minmax(0, 1fr);
|
|
57
|
+
gap: 6px;
|
|
58
|
+
line-height: normal;
|
|
59
|
+
}
|
|
60
|
+
.coar-markdown-form-paragraph--stacked > .coar-markdown-form-text-fragment {
|
|
61
|
+
display: flex;
|
|
62
|
+
min-width: 0;
|
|
63
|
+
}
|
|
64
|
+
.coar-markdown-form-paragraph--stacked .coar-markdown-form-field--layout-stacked {
|
|
65
|
+
margin: 0;
|
|
66
|
+
width: 100% !important;
|
|
67
|
+
}
|
|
68
|
+
.coar-markdown-form-field--block {
|
|
69
|
+
display: block;
|
|
70
|
+
min-height: 58px;
|
|
71
|
+
margin: 2px 0 10px;
|
|
72
|
+
overflow: hidden;
|
|
73
|
+
border: 1px dashed #abc0c7;
|
|
74
|
+
border-radius: 3px 10px 3px 10px;
|
|
75
|
+
background: #fbfdfd;
|
|
76
|
+
transition:
|
|
77
|
+
border-color 120ms ease,
|
|
78
|
+
box-shadow 120ms ease;
|
|
79
|
+
}
|
|
80
|
+
.coar-markdown-form-field--block:focus-within {
|
|
81
|
+
border-color: #326b8c;
|
|
82
|
+
box-shadow: 0 0 0 3px rgba(50, 107, 140, 0.12);
|
|
83
|
+
}
|
|
84
|
+
.coar-markdown-form-field--frameless {
|
|
85
|
+
border-color: transparent;
|
|
86
|
+
background: transparent;
|
|
87
|
+
}
|
|
88
|
+
.coar-markdown-form-field--frameless:focus-within {
|
|
89
|
+
border-color: transparent;
|
|
90
|
+
box-shadow: none;
|
|
91
|
+
}
|
|
92
|
+
.coar-markdown-form-field--block > .coar-md-root {
|
|
93
|
+
min-height: 56px;
|
|
94
|
+
border: 0;
|
|
95
|
+
}
|
|
96
|
+
.coar-markdown-form-field--block .coar-md-area {
|
|
97
|
+
padding: 6px 10px;
|
|
98
|
+
}
|
|
99
|
+
.coar-markdown-form-field--block .coar-md-area .milkdown {
|
|
100
|
+
min-height: 44px;
|
|
101
|
+
padding: 0;
|
|
102
|
+
}
|
|
103
|
+
.coar-markdown-form-field--block > .coar-markdown {
|
|
104
|
+
min-height: 56px;
|
|
105
|
+
padding: 6px 10px;
|
|
106
|
+
}
|
|
107
|
+
.coar-markdown-form-field--block .ProseMirror > :last-child,
|
|
108
|
+
.coar-markdown-form-field--block > .coar-markdown > :last-child {
|
|
109
|
+
margin-block-end: 0;
|
|
110
|
+
}
|
|
111
|
+
.coar-markdown-form-field--underlined {
|
|
112
|
+
border-bottom: 1px solid #a5b3b8;
|
|
113
|
+
}
|
|
114
|
+
.coar-markdown-form-field__readonly {
|
|
115
|
+
padding: 1px 2px;
|
|
116
|
+
color: #1c3c4b;
|
|
117
|
+
font-weight: 700;
|
|
118
|
+
}
|
|
119
|
+
.coar-markdown-form-field__empty {
|
|
120
|
+
display: block;
|
|
121
|
+
min-height: 44px;
|
|
122
|
+
padding: 8px 10px;
|
|
123
|
+
color: #9aa5aa;
|
|
124
|
+
}
|
|
125
|
+
.coar-markdown-form-field__invalid {
|
|
126
|
+
padding: 0.3rem 0.45rem;
|
|
127
|
+
color: var(--coar-color-danger-700, #b42318);
|
|
128
|
+
font-size: 0.78rem;
|
|
129
|
+
}
|
|
130
|
+
.coar-markdown-form-field--block.coar-markdown-form-field--error {
|
|
131
|
+
border-color: var(--coar-color-danger-500, #b42318);
|
|
132
|
+
border-style: solid;
|
|
133
|
+
box-shadow: 0 0 0 2px rgba(180, 35, 24, 0.1);
|
|
134
|
+
}
|
|
135
|
+
.coar-markdown-form-field__error {
|
|
136
|
+
display: block;
|
|
137
|
+
flex-basis: 100%;
|
|
138
|
+
margin-block-start: 3px;
|
|
139
|
+
color: var(--coar-color-danger-700, #b42318);
|
|
140
|
+
font-size: 0.7rem;
|
|
141
|
+
line-height: 1.2;
|
|
142
|
+
}
|
|
143
|
+
.coar-markdown-form-field__error--inline {
|
|
144
|
+
position: absolute;
|
|
145
|
+
width: 1px;
|
|
146
|
+
height: 1px;
|
|
147
|
+
margin: -1px;
|
|
148
|
+
overflow: hidden;
|
|
149
|
+
clip: rect(0, 0, 0, 0);
|
|
150
|
+
white-space: nowrap;
|
|
151
|
+
}
|
|
152
|
+
.coar-markdown-form-basic-control[aria-invalid='true'] {
|
|
153
|
+
border-color: var(--coar-color-danger-500, #b42318);
|
|
154
|
+
}
|
|
155
|
+
.coar-markdown-form-basic-control {
|
|
156
|
+
box-sizing: border-box;
|
|
157
|
+
width: 100%;
|
|
158
|
+
min-width: 0;
|
|
159
|
+
min-height: 27px;
|
|
160
|
+
padding: 2px 6px;
|
|
161
|
+
border: 1px solid #aebbc0;
|
|
162
|
+
border-radius: 3px;
|
|
163
|
+
background: #fff;
|
|
164
|
+
color: #25353d;
|
|
165
|
+
font: inherit;
|
|
166
|
+
font-size: 12px;
|
|
167
|
+
}
|
|
168
|
+
.coar-markdown-form-basic-checkbox {
|
|
169
|
+
display: inline-flex;
|
|
170
|
+
align-items: center;
|
|
171
|
+
gap: 0.4rem;
|
|
172
|
+
}
|
|
173
|
+
@media (prefers-reduced-motion: reduce) {
|
|
174
|
+
.coar-markdown-form-field {
|
|
175
|
+
transition-duration: 0.01ms !important;
|
|
176
|
+
}
|
|
177
|
+
}
|