@operato/dataset 8.0.0-beta.6 → 8.0.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/CHANGELOG.md +37 -165
- package/dist/src/ox-data-entry-form.d.ts +2 -3
- package/dist/src/ox-data-entry-form.js +141 -66
- package/dist/src/ox-data-entry-form.js.map +1 -1
- package/dist/src/ox-data-entry-subgroup-form.d.ts +1 -23
- package/dist/src/ox-data-entry-subgroup-form.js +44 -20
- package/dist/src/ox-data-entry-subgroup-form.js.map +1 -1
- package/dist/src/ox-data-ooc-correction-part.js +17 -7
- package/dist/src/ox-data-ooc-correction-part.js.map +1 -1
- package/dist/src/ox-data-ooc-history.js +11 -4
- package/dist/src/ox-data-ooc-history.js.map +1 -1
- package/dist/src/ox-data-sample-view.d.ts +2 -3
- package/dist/src/ox-data-sample-view.js +44 -66
- package/dist/src/ox-data-sample-view.js.map +1 -1
- package/dist/stories/ox-data-entry-form.stories.js +42 -54
- package/dist/stories/ox-data-entry-form.stories.js.map +1 -1
- package/dist/stories/ox-data-ooc-brief-view.stories.js +18 -19
- package/dist/stories/ox-data-ooc-brief-view.stories.js.map +1 -1
- package/dist/stories/ox-data-ooc-view.stories.js +20 -21
- package/dist/stories/ox-data-ooc-view.stories.js.map +1 -1
- package/dist/stories/ox-data-sample-view.stories.js +18 -19
- package/dist/stories/ox-data-sample-view.stories.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -20
- package/dist/src/ox-data-input-factory.d.ts +0 -53
- package/dist/src/ox-data-input-factory.js +0 -162
- package/dist/src/ox-data-input-factory.js.map +0 -1
- package/dist/stories/ox-data-entry-form-subgroups.stories.d.ts +0 -19
- package/dist/stories/ox-data-entry-form-subgroups.stories.js +0 -248
- package/dist/stories/ox-data-entry-form-subgroups.stories.js.map +0 -1
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@operato/dataset",
|
|
3
3
|
"description": "WebApplication dataset supporting components following open-wc recommendations",
|
|
4
4
|
"author": "heartyoh",
|
|
5
|
-
"version": "8.0.
|
|
5
|
+
"version": "8.0.1",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
7
7
|
"module": "dist/src/index.js",
|
|
8
8
|
"exports": {
|
|
@@ -108,30 +108,30 @@
|
|
|
108
108
|
},
|
|
109
109
|
"dependencies": {
|
|
110
110
|
"@material/web": "^2.0.0",
|
|
111
|
-
"@operato/data-grist": "^8.0.0
|
|
112
|
-
"@operato/graphql": "^8.0.0
|
|
113
|
-
"@operato/grist-editor": "^8.0.0
|
|
114
|
-
"@operato/i18n": "^8.0.0
|
|
115
|
-
"@operato/input": "^8.0.0
|
|
116
|
-
"@operato/popup": "^8.0.0
|
|
117
|
-
"@operato/property-editor": "^8.0.0
|
|
118
|
-
"@operato/shell": "^8.0.0
|
|
119
|
-
"@operato/styles": "^8.0.0
|
|
120
|
-
"@operato/utils": "^8.0.0
|
|
111
|
+
"@operato/data-grist": "^8.0.0",
|
|
112
|
+
"@operato/graphql": "^8.0.0",
|
|
113
|
+
"@operato/grist-editor": "^8.0.0",
|
|
114
|
+
"@operato/i18n": "^8.0.0",
|
|
115
|
+
"@operato/input": "^8.0.0",
|
|
116
|
+
"@operato/popup": "^8.0.0",
|
|
117
|
+
"@operato/property-editor": "^8.0.0",
|
|
118
|
+
"@operato/shell": "^8.0.0",
|
|
119
|
+
"@operato/styles": "^8.0.0",
|
|
120
|
+
"@operato/utils": "^8.0.0",
|
|
121
121
|
"lit": "^3.1.2"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
|
-
"@custom-elements-manifest/analyzer": "^0.
|
|
124
|
+
"@custom-elements-manifest/analyzer": "^0.9.2",
|
|
125
125
|
"@hatiolab/prettier-config": "^1.0.0",
|
|
126
126
|
"@open-wc/eslint-config": "^12.0.3",
|
|
127
|
-
"@open-wc/testing": "^
|
|
128
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
129
|
-
"@typescript-eslint/parser": "^
|
|
130
|
-
"@web/dev-server": "^0.
|
|
127
|
+
"@open-wc/testing": "^3.1.6",
|
|
128
|
+
"@typescript-eslint/eslint-plugin": "^7.0.1",
|
|
129
|
+
"@typescript-eslint/parser": "^7.0.1",
|
|
130
|
+
"@web/dev-server": "^0.3.0",
|
|
131
131
|
"@web/dev-server-storybook": "^2.0.1",
|
|
132
|
-
"@web/test-runner": "^0.
|
|
133
|
-
"concurrently": "^
|
|
134
|
-
"eslint": "^
|
|
132
|
+
"@web/test-runner": "^0.18.0",
|
|
133
|
+
"concurrently": "^8.0.1",
|
|
134
|
+
"eslint": "^8.39.0",
|
|
135
135
|
"eslint-config-prettier": "^9.1.0",
|
|
136
136
|
"husky": "^9.0.11",
|
|
137
137
|
"lint-staged": "^15.2.2",
|
|
@@ -152,5 +152,5 @@
|
|
|
152
152
|
"prettier --write"
|
|
153
153
|
]
|
|
154
154
|
},
|
|
155
|
-
"gitHead": "
|
|
155
|
+
"gitHead": "d7d8e783c8c7215997c404fde0c5f65508abd161"
|
|
156
156
|
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import '@operato/input/ox-input-file.js';
|
|
2
|
-
import '@operato/input/ox-input-signature.js';
|
|
3
|
-
import { TemplateResult } from 'lit';
|
|
4
|
-
/**
|
|
5
|
-
* OxDataInputFactory
|
|
6
|
-
* A factory class that dynamically generates input elements based on different data types.
|
|
7
|
-
*/
|
|
8
|
-
export declare class OxDataInputFactory {
|
|
9
|
-
/**
|
|
10
|
-
* Creates an input element based on the specified type.
|
|
11
|
-
* @param type - The type of input (e.g., text, number, date, select, etc.)
|
|
12
|
-
* @param tag - The name attribute for the input field
|
|
13
|
-
* @param value - The current value of the input field
|
|
14
|
-
* @param options - Additional options (used for select, radio, etc.)
|
|
15
|
-
* @param idx - Index for multiple input fields
|
|
16
|
-
* @returns TemplateResult - A Lit template result for rendering
|
|
17
|
-
*/
|
|
18
|
-
static createInputElement(type: string, tag: string, value: any, options?: any, idx?: number): TemplateResult;
|
|
19
|
-
/**
|
|
20
|
-
* Creates a select dropdown element.
|
|
21
|
-
* @param tag - The name attribute for the select element
|
|
22
|
-
* @param value - The currently selected value
|
|
23
|
-
* @param options - The available options for the dropdown
|
|
24
|
-
* @returns TemplateResult - A Lit template result for rendering
|
|
25
|
-
*/
|
|
26
|
-
private static createSelect;
|
|
27
|
-
/**
|
|
28
|
-
* Creates a radio button group.
|
|
29
|
-
* @param tag - The name attribute for the radio group
|
|
30
|
-
* @param value - The currently selected value
|
|
31
|
-
* @param options - The available radio options
|
|
32
|
-
* @param idx - Index for multiple radio groups
|
|
33
|
-
* @returns TemplateResult - A Lit template result for rendering
|
|
34
|
-
*/
|
|
35
|
-
private static createRadio;
|
|
36
|
-
/**
|
|
37
|
-
* Creates a filter resource object element.
|
|
38
|
-
* @param tag - The name attribute for the input field
|
|
39
|
-
* @param value - The current value of the input field
|
|
40
|
-
* @param options - Additional options
|
|
41
|
-
* @returns TemplateResult - A Lit template result for
|
|
42
|
-
*/
|
|
43
|
-
private static createEmployee;
|
|
44
|
-
/**
|
|
45
|
-
* Maps form input types to Grist-compatible column types.
|
|
46
|
-
* Ensures `OxDataEntrySubgroupForm` properly maps UI components to Grist.
|
|
47
|
-
*/
|
|
48
|
-
static mapGristType(type: string): string;
|
|
49
|
-
/**
|
|
50
|
-
* Retrieves additional record options for Grist columns.
|
|
51
|
-
*/
|
|
52
|
-
static getGristRecordOptions(type: string, options?: any): any;
|
|
53
|
-
}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import '@operato/input/ox-input-file.js';
|
|
2
|
-
import '@operato/input/ox-input-signature.js';
|
|
3
|
-
// import '@operato/app/ox-filter-resource-object.js'
|
|
4
|
-
import { html } from 'lit';
|
|
5
|
-
/**
|
|
6
|
-
* OxDataInputFactory
|
|
7
|
-
* A factory class that dynamically generates input elements based on different data types.
|
|
8
|
-
*/
|
|
9
|
-
export class OxDataInputFactory {
|
|
10
|
-
/**
|
|
11
|
-
* Creates an input element based on the specified type.
|
|
12
|
-
* @param type - The type of input (e.g., text, number, date, select, etc.)
|
|
13
|
-
* @param tag - The name attribute for the input field
|
|
14
|
-
* @param value - The current value of the input field
|
|
15
|
-
* @param options - Additional options (used for select, radio, etc.)
|
|
16
|
-
* @param idx - Index for multiple input fields
|
|
17
|
-
* @returns TemplateResult - A Lit template result for rendering
|
|
18
|
-
*/
|
|
19
|
-
static createInputElement(type, tag, value, options = {}, idx = 0) {
|
|
20
|
-
switch (type) {
|
|
21
|
-
case 'select':
|
|
22
|
-
return this.createSelect(tag, value, options);
|
|
23
|
-
case 'radio':
|
|
24
|
-
return this.createRadio(tag, value, options, idx);
|
|
25
|
-
case 'boolean':
|
|
26
|
-
return html `<input type="checkbox" name=${tag} .checked=${value} />`;
|
|
27
|
-
case 'number':
|
|
28
|
-
return html `<input type="number" name=${tag} .value=${value} />`;
|
|
29
|
-
case 'date':
|
|
30
|
-
return html `<input type="date" name=${tag} .value=${value} />`;
|
|
31
|
-
case 'datetime':
|
|
32
|
-
return html `<input type="datetime-local" name=${tag} .value=${value} />`;
|
|
33
|
-
case 'file':
|
|
34
|
-
return html `<ox-input-file name=${tag} multiple .value=${value}></ox-input-file>`;
|
|
35
|
-
case 'signature':
|
|
36
|
-
return html `<ox-input-signature name=${tag} .value=${value}></ox-input-signature>`;
|
|
37
|
-
case 'employee':
|
|
38
|
-
return this.createEmployee(tag, value, options);
|
|
39
|
-
case 'string':
|
|
40
|
-
default:
|
|
41
|
-
return html `<input type="text" name=${tag} .value=${value} />`;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Creates a select dropdown element.
|
|
46
|
-
* @param tag - The name attribute for the select element
|
|
47
|
-
* @param value - The currently selected value
|
|
48
|
-
* @param options - The available options for the dropdown
|
|
49
|
-
* @returns TemplateResult - A Lit template result for rendering
|
|
50
|
-
*/
|
|
51
|
-
static createSelect(tag, value, options) {
|
|
52
|
-
var _a;
|
|
53
|
-
return html `
|
|
54
|
-
<select name=${tag}>
|
|
55
|
-
<option value=""></option>
|
|
56
|
-
${(_a = options.options) === null || _a === void 0 ? void 0 : _a.map((option) => html `
|
|
57
|
-
<option value=${option.value} ?selected=${option.value === value}>${option.text}</option>
|
|
58
|
-
`)}
|
|
59
|
-
</select>
|
|
60
|
-
`;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Creates a radio button group.
|
|
64
|
-
* @param tag - The name attribute for the radio group
|
|
65
|
-
* @param value - The currently selected value
|
|
66
|
-
* @param options - The available radio options
|
|
67
|
-
* @param idx - Index for multiple radio groups
|
|
68
|
-
* @returns TemplateResult - A Lit template result for rendering
|
|
69
|
-
*/
|
|
70
|
-
static createRadio(tag, value, options, idx) {
|
|
71
|
-
var _a;
|
|
72
|
-
return html `
|
|
73
|
-
<div
|
|
74
|
-
@change=${(e) => {
|
|
75
|
-
const div = e.currentTarget;
|
|
76
|
-
const hiddenInput = div.querySelector(`input[name="${tag}"]`);
|
|
77
|
-
hiddenInput.value = e.target.value;
|
|
78
|
-
}}
|
|
79
|
-
>
|
|
80
|
-
<input type="hidden" name=${tag} />
|
|
81
|
-
${(_a = options.options) === null || _a === void 0 ? void 0 : _a.map((option) => html `
|
|
82
|
-
<label>
|
|
83
|
-
<input type="radio" name=${`${tag}-${idx}`} value=${option.value} ?checked=${option.value === value} />
|
|
84
|
-
${option.text}
|
|
85
|
-
</label>
|
|
86
|
-
`)}
|
|
87
|
-
</div>
|
|
88
|
-
`;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Creates a filter resource object element.
|
|
92
|
-
* @param tag - The name attribute for the input field
|
|
93
|
-
* @param value - The current value of the input field
|
|
94
|
-
* @param options - Additional options
|
|
95
|
-
* @returns TemplateResult - A Lit template result for
|
|
96
|
-
*/
|
|
97
|
-
static createEmployee(tag, value, options) {
|
|
98
|
-
return html ``;
|
|
99
|
-
// return html`<ox-filter-resource-object
|
|
100
|
-
// .name=${tag}
|
|
101
|
-
// .value=${value}
|
|
102
|
-
// .confirmCallback=${confirmCallback.bind(this)}
|
|
103
|
-
// .queryName=${'employees'}
|
|
104
|
-
// .columns=${columns}
|
|
105
|
-
// .pagination=${pagination}
|
|
106
|
-
// .list=${list}
|
|
107
|
-
// .basicArgs=${basicArgs}
|
|
108
|
-
// .valueField=${valueField}
|
|
109
|
-
// ></ox-filter-resource-object>`
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Maps form input types to Grist-compatible column types.
|
|
113
|
-
* Ensures `OxDataEntrySubgroupForm` properly maps UI components to Grist.
|
|
114
|
-
*/
|
|
115
|
-
static mapGristType(type) {
|
|
116
|
-
switch (type) {
|
|
117
|
-
case 'radio':
|
|
118
|
-
case 'select':
|
|
119
|
-
return 'select'; // Convert radio to select for Grist
|
|
120
|
-
case 'boolean':
|
|
121
|
-
return 'boolean';
|
|
122
|
-
case 'number':
|
|
123
|
-
return 'number';
|
|
124
|
-
case 'date':
|
|
125
|
-
return 'date';
|
|
126
|
-
case 'datetime':
|
|
127
|
-
return 'datetime';
|
|
128
|
-
case 'file':
|
|
129
|
-
return 'file';
|
|
130
|
-
case 'signature':
|
|
131
|
-
return 'signature';
|
|
132
|
-
case 'string':
|
|
133
|
-
return 'text';
|
|
134
|
-
default:
|
|
135
|
-
return type;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Retrieves additional record options for Grist columns.
|
|
140
|
-
*/
|
|
141
|
-
static getGristRecordOptions(type, options = {}) {
|
|
142
|
-
switch (type) {
|
|
143
|
-
case 'select':
|
|
144
|
-
case 'radio':
|
|
145
|
-
return {
|
|
146
|
-
options: [
|
|
147
|
-
'',
|
|
148
|
-
...(options.options || []).map((opt) => typeof opt === 'string' ? opt : { display: opt.text, value: opt.value })
|
|
149
|
-
]
|
|
150
|
-
};
|
|
151
|
-
case 'boolean':
|
|
152
|
-
return { align: 'center' };
|
|
153
|
-
case 'number':
|
|
154
|
-
return { align: 'right' };
|
|
155
|
-
case 'file':
|
|
156
|
-
return { multiple: true };
|
|
157
|
-
default:
|
|
158
|
-
return {};
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=ox-data-input-factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ox-data-input-factory.js","sourceRoot":"","sources":["../../src/ox-data-input-factory.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/input/ox-input-file.js'\nimport '@operato/input/ox-input-signature.js'\n// import '@operato/app/ox-filter-resource-object.js'\n\nimport { html, TemplateResult } from 'lit'\n\n/**\n * OxDataInputFactory\n * A factory class that dynamically generates input elements based on different data types.\n */\nexport class OxDataInputFactory {\n /**\n * Creates an input element based on the specified type.\n * @param type - The type of input (e.g., text, number, date, select, etc.)\n * @param tag - The name attribute for the input field\n * @param value - The current value of the input field\n * @param options - Additional options (used for select, radio, etc.)\n * @param idx - Index for multiple input fields\n * @returns TemplateResult - A Lit template result for rendering\n */\n static createInputElement(type: string, tag: string, value: any, options: any = {}, idx: number = 0): TemplateResult {\n switch (type) {\n case 'select':\n return this.createSelect(tag, value, options)\n case 'radio':\n return this.createRadio(tag, value, options, idx)\n case 'boolean':\n return html`<input type=\"checkbox\" name=${tag} .checked=${value} />`\n case 'number':\n return html`<input type=\"number\" name=${tag} .value=${value} />`\n case 'date':\n return html`<input type=\"date\" name=${tag} .value=${value} />`\n case 'datetime':\n return html`<input type=\"datetime-local\" name=${tag} .value=${value} />`\n case 'file':\n return html`<ox-input-file name=${tag} multiple .value=${value}></ox-input-file>`\n case 'signature':\n return html`<ox-input-signature name=${tag} .value=${value}></ox-input-signature>`\n case 'employee':\n return this.createEmployee(tag, value, options)\n case 'string':\n default:\n return html`<input type=\"text\" name=${tag} .value=${value} />`\n }\n }\n\n /**\n * Creates a select dropdown element.\n * @param tag - The name attribute for the select element\n * @param value - The currently selected value\n * @param options - The available options for the dropdown\n * @returns TemplateResult - A Lit template result for rendering\n */\n private static createSelect(tag: string, value: any, options: any): TemplateResult {\n return html`\n <select name=${tag}>\n <option value=\"\"></option>\n ${options.options?.map(\n (option: any) => html`\n <option value=${option.value} ?selected=${option.value === value}>${option.text}</option>\n `\n )}\n </select>\n `\n }\n\n /**\n * Creates a radio button group.\n * @param tag - The name attribute for the radio group\n * @param value - The currently selected value\n * @param options - The available radio options\n * @param idx - Index for multiple radio groups\n * @returns TemplateResult - A Lit template result for rendering\n */\n private static createRadio(tag: string, value: any, options: any, idx: number): TemplateResult {\n return html`\n <div\n @change=${(e: Event) => {\n const div = e.currentTarget as HTMLElement\n const hiddenInput = div.querySelector(`input[name=\"${tag}\"]`) as HTMLInputElement\n hiddenInput.value = (e.target as HTMLInputElement).value\n }}\n >\n <input type=\"hidden\" name=${tag} />\n ${options.options?.map(\n (option: any) => html`\n <label>\n <input type=\"radio\" name=${`${tag}-${idx}`} value=${option.value} ?checked=${option.value === value} />\n ${option.text}\n </label>\n `\n )}\n </div>\n `\n }\n\n /**\n * Creates a filter resource object element.\n * @param tag - The name attribute for the input field\n * @param value - The current value of the input field\n * @param options - Additional options\n * @returns TemplateResult - A Lit template result for\n */\n private static createEmployee(tag: string, value: any, options: any): TemplateResult {\n return html``\n // return html`<ox-filter-resource-object\n // .name=${tag}\n // .value=${value}\n // .confirmCallback=${confirmCallback.bind(this)}\n // .queryName=${'employees'}\n // .columns=${columns}\n // .pagination=${pagination}\n // .list=${list}\n // .basicArgs=${basicArgs}\n // .valueField=${valueField}\n // ></ox-filter-resource-object>`\n }\n\n /**\n * Maps form input types to Grist-compatible column types.\n * Ensures `OxDataEntrySubgroupForm` properly maps UI components to Grist.\n */\n static mapGristType(type: string): string {\n switch (type) {\n case 'radio':\n case 'select':\n return 'select' // Convert radio to select for Grist\n case 'boolean':\n return 'boolean'\n case 'number':\n return 'number'\n case 'date':\n return 'date'\n case 'datetime':\n return 'datetime'\n case 'file':\n return 'file'\n case 'signature':\n return 'signature'\n case 'string':\n return 'text'\n default:\n return type\n }\n }\n\n /**\n * Retrieves additional record options for Grist columns.\n */\n static getGristRecordOptions(type: string, options: any = {}): any {\n switch (type) {\n case 'select':\n case 'radio':\n return {\n options: [\n '',\n ...(options.options || []).map((opt: any) =>\n typeof opt === 'string' ? opt : { display: opt.text, value: opt.value }\n )\n ]\n }\n case 'boolean':\n return { align: 'center' }\n case 'number':\n return { align: 'right' }\n case 'file':\n return { multiple: true }\n default:\n return {}\n }\n }\n}\n"]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import '@operato/i18n';
|
|
2
|
-
import '../src/ox-data-entry-form.js';
|
|
3
|
-
import '../src/usecase/ccp';
|
|
4
|
-
import '@material/web/icon/icon.js';
|
|
5
|
-
import { TemplateResult } from 'lit';
|
|
6
|
-
declare const _default: {
|
|
7
|
-
title: string;
|
|
8
|
-
component: string;
|
|
9
|
-
argTypes: {};
|
|
10
|
-
};
|
|
11
|
-
export default _default;
|
|
12
|
-
interface Story<T> {
|
|
13
|
-
(args: T): TemplateResult;
|
|
14
|
-
args?: Partial<T>;
|
|
15
|
-
argTypes?: Record<string, unknown>;
|
|
16
|
-
}
|
|
17
|
-
interface ArgTypes {
|
|
18
|
-
}
|
|
19
|
-
export declare const Regular: Story<ArgTypes>;
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
import '@operato/i18n';
|
|
2
|
-
import '../src/ox-data-entry-form.js';
|
|
3
|
-
import '../src/usecase/ccp'; /* register usecase CCP */
|
|
4
|
-
import '@material/web/icon/icon.js';
|
|
5
|
-
import { html } from 'lit';
|
|
6
|
-
export default {
|
|
7
|
-
title: 'ox-data-entry-form-subgroups',
|
|
8
|
-
component: 'ox-data-entry-form',
|
|
9
|
-
argTypes: {}
|
|
10
|
-
};
|
|
11
|
-
const dataSet = {
|
|
12
|
-
name: 'sample',
|
|
13
|
-
description: 'sample description',
|
|
14
|
-
useCase: 'CCP',
|
|
15
|
-
dataItems: [
|
|
16
|
-
{
|
|
17
|
-
name: '라디오 독립',
|
|
18
|
-
description: '라디오',
|
|
19
|
-
sequence: 5,
|
|
20
|
-
tag: 'check2',
|
|
21
|
-
type: 'radio',
|
|
22
|
-
options: {
|
|
23
|
-
options: [
|
|
24
|
-
{
|
|
25
|
-
text: '예',
|
|
26
|
-
value: 'Y'
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
text: '아니오',
|
|
30
|
-
value: 'N'
|
|
31
|
-
}
|
|
32
|
-
]
|
|
33
|
-
},
|
|
34
|
-
quota: 1,
|
|
35
|
-
active: true
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: '첨부파일',
|
|
39
|
-
description: '참조 첨부 파일.',
|
|
40
|
-
sequence: 4,
|
|
41
|
-
tag: 'attachment',
|
|
42
|
-
type: 'file',
|
|
43
|
-
quota: 1,
|
|
44
|
-
active: true
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
name: '창고 온도',
|
|
48
|
-
description: '창고 온도는 섭씨 0도 이하로 유지되어야 합니다.',
|
|
49
|
-
sequence: 1,
|
|
50
|
-
tag: 'temp',
|
|
51
|
-
group: '측정데이타',
|
|
52
|
-
type: 'number',
|
|
53
|
-
quota: 1,
|
|
54
|
-
active: true,
|
|
55
|
-
unit: '℃',
|
|
56
|
-
spec: {
|
|
57
|
-
CCP: {
|
|
58
|
-
criticalLimits: {
|
|
59
|
-
minimum: 100,
|
|
60
|
-
maximum: 200
|
|
61
|
-
},
|
|
62
|
-
targetLimits: {
|
|
63
|
-
minimum: 120,
|
|
64
|
-
maximum: 180
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
name: '코멘트',
|
|
71
|
-
description: '특이사항을 기록함.',
|
|
72
|
-
sequence: 4,
|
|
73
|
-
tag: 'comment',
|
|
74
|
-
type: 'string',
|
|
75
|
-
quota: 1,
|
|
76
|
-
active: true
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
name: '창고 습도',
|
|
80
|
-
description: '창고 습도는 30% 이하로 유지되어야 합니다.',
|
|
81
|
-
sequence: 2,
|
|
82
|
-
tag: 'humid',
|
|
83
|
-
group: '측정데이타2',
|
|
84
|
-
type: 'number',
|
|
85
|
-
quota: 5,
|
|
86
|
-
active: true,
|
|
87
|
-
unit: '%',
|
|
88
|
-
spec: {
|
|
89
|
-
CCP: {
|
|
90
|
-
criticalLimits: {
|
|
91
|
-
minimum: 10,
|
|
92
|
-
maximum: 50
|
|
93
|
-
},
|
|
94
|
-
targetLimits: {
|
|
95
|
-
minimum: 20,
|
|
96
|
-
maximum: 40
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
name: '설명',
|
|
103
|
-
description: '설명',
|
|
104
|
-
sequence: 12,
|
|
105
|
-
tag: 'description',
|
|
106
|
-
type: 'string',
|
|
107
|
-
active: true,
|
|
108
|
-
group: '측정데이타2'
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
name: '육안 검사',
|
|
112
|
-
description: '육안 검사는 포장전 30분 내로 실행되어야 합니다.',
|
|
113
|
-
sequence: 3,
|
|
114
|
-
tag: 'inspection',
|
|
115
|
-
group: '측정데이타',
|
|
116
|
-
type: 'boolean',
|
|
117
|
-
quota: 3,
|
|
118
|
-
active: true,
|
|
119
|
-
spec: {
|
|
120
|
-
CCP: {
|
|
121
|
-
criticalLimits: {
|
|
122
|
-
acceptables: true
|
|
123
|
-
},
|
|
124
|
-
targetLimits: {
|
|
125
|
-
acceptables: true
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
name: '품평',
|
|
132
|
-
description: '품평은 최우수/우수/보통/미달을 포함하여 간단히 평가.',
|
|
133
|
-
sequence: 4,
|
|
134
|
-
tag: 'evaluation',
|
|
135
|
-
group: '측정데이타2',
|
|
136
|
-
type: 'select',
|
|
137
|
-
options: {
|
|
138
|
-
options: [
|
|
139
|
-
{ text: '최우수', value: '최우수' },
|
|
140
|
-
{ text: '우수', value: '우수' },
|
|
141
|
-
{ text: '보통', value: '보통' },
|
|
142
|
-
{ text: '미달', value: '미달' },
|
|
143
|
-
{ text: '등외', value: '등외' }
|
|
144
|
-
]
|
|
145
|
-
},
|
|
146
|
-
quota: 3,
|
|
147
|
-
active: true,
|
|
148
|
-
spec: {
|
|
149
|
-
CCP: {
|
|
150
|
-
criticalLimits: {
|
|
151
|
-
acceptables: ['최우수', '우수', '보통']
|
|
152
|
-
},
|
|
153
|
-
targetLimits: {
|
|
154
|
-
acceptables: ['최우수', '우수']
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
name: '라디오 측정',
|
|
161
|
-
description: '라디오 그룹',
|
|
162
|
-
group: '측정데이타',
|
|
163
|
-
sequence: 5,
|
|
164
|
-
tag: 'check1',
|
|
165
|
-
type: 'radio',
|
|
166
|
-
options: {
|
|
167
|
-
options: [
|
|
168
|
-
{
|
|
169
|
-
text: '예',
|
|
170
|
-
value: 'Y'
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
text: '아니오',
|
|
174
|
-
value: 'N'
|
|
175
|
-
}
|
|
176
|
-
]
|
|
177
|
-
},
|
|
178
|
-
quota: 3,
|
|
179
|
-
active: true
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
name: '서명',
|
|
183
|
-
description: '품평가 서명.',
|
|
184
|
-
sequence: 4,
|
|
185
|
-
tag: 'sign',
|
|
186
|
-
group: '측정데이타',
|
|
187
|
-
type: 'signature',
|
|
188
|
-
quota: 3,
|
|
189
|
-
active: true
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
name: '서명',
|
|
193
|
-
description: '서명',
|
|
194
|
-
sequence: 5,
|
|
195
|
-
tag: 'signature',
|
|
196
|
-
type: 'signature',
|
|
197
|
-
quota: 1,
|
|
198
|
-
active: true
|
|
199
|
-
}
|
|
200
|
-
]
|
|
201
|
-
};
|
|
202
|
-
var value = {
|
|
203
|
-
temp: 1000,
|
|
204
|
-
humid: [20, 23, 21, 26, 27],
|
|
205
|
-
inspection: [true, false, true],
|
|
206
|
-
evaluation: ['최우수', '보통', '우수'],
|
|
207
|
-
comment: '이것이 코멘트입니다.',
|
|
208
|
-
description: [''],
|
|
209
|
-
signature: 'data:image/png;base64,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'
|
|
210
|
-
};
|
|
211
|
-
const Template = ({}) => html `
|
|
212
|
-
<link
|
|
213
|
-
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
|
|
214
|
-
rel="stylesheet"
|
|
215
|
-
/>
|
|
216
|
-
<link
|
|
217
|
-
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
|
|
218
|
-
rel="stylesheet"
|
|
219
|
-
/>
|
|
220
|
-
<link
|
|
221
|
-
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
|
|
222
|
-
rel="stylesheet"
|
|
223
|
-
/>
|
|
224
|
-
|
|
225
|
-
<style>
|
|
226
|
-
body {
|
|
227
|
-
}
|
|
228
|
-
</style>
|
|
229
|
-
|
|
230
|
-
<link href="/themes/app-theme.css" rel="stylesheet" />
|
|
231
|
-
<link href="/themes/light.css" rel="stylesheet" />
|
|
232
|
-
<link href="/themes/dark.css" rel="stylesheet" />
|
|
233
|
-
<link href="/themes/spacing.css" rel="stylesheet" />
|
|
234
|
-
<link href="/themes/grist-theme.css" rel="stylesheet" />
|
|
235
|
-
<link href="/themes/form-theme.css" rel="stylesheet" />
|
|
236
|
-
|
|
237
|
-
<ox-data-entry-form
|
|
238
|
-
.dataSet=${dataSet}
|
|
239
|
-
.value=${value}
|
|
240
|
-
@change=${(e) => {
|
|
241
|
-
value = e.detail;
|
|
242
|
-
console.log('change', value);
|
|
243
|
-
}}
|
|
244
|
-
></ox-data-entry-form>
|
|
245
|
-
`;
|
|
246
|
-
export const Regular = Template.bind({});
|
|
247
|
-
Regular.args = {};
|
|
248
|
-
//# sourceMappingURL=ox-data-entry-form-subgroups.stories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ox-data-entry-form-subgroups.stories.js","sourceRoot":"","sources":["../../stories/ox-data-entry-form-subgroups.stories.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AACtB,OAAO,8BAA8B,CAAA;AACrC,OAAO,oBAAoB,CAAA,CAAC,0BAA0B;AACtD,OAAO,4BAA4B,CAAA;AAEnC,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAA;AAE1C,eAAe;IACb,KAAK,EAAE,8BAA8B;IACrC,SAAS,EAAE,oBAAoB;IAC/B,QAAQ,EAAE,EAAE;CACb,CAAA;AAUD,MAAM,OAAO,GAAG;IACd,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,KAAK;IACd,SAAS,EAAE;QACT;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,GAAG;qBACX;oBACD;wBACE,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE,GAAG;qBACX;iBACF;aACF;YACD,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI;SACb;QACD;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI;SACb;QACD;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,GAAG;YACT,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,cAAc,EAAE;wBACd,OAAO,EAAE,GAAG;wBACZ,OAAO,EAAE,GAAG;qBACb;oBACD,YAAY,EAAE;wBACZ,OAAO,EAAE,GAAG;wBACZ,OAAO,EAAE,GAAG;qBACb;iBACF;aACF;SACF;QACD;YACE,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI;SACb;QACD;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,2BAA2B;YACxC,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,GAAG;YACT,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,cAAc,EAAE;wBACd,OAAO,EAAE,EAAE;wBACX,OAAO,EAAE,EAAE;qBACZ;oBACD,YAAY,EAAE;wBACZ,OAAO,EAAE,EAAE;wBACX,OAAO,EAAE,EAAE;qBACZ;iBACF;aACF;SACF;QACD;YACE,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,EAAE;YACZ,GAAG,EAAE,aAAa;YAClB,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,cAAc,EAAE;wBACd,WAAW,EAAE,IAAI;qBAClB;oBACD,YAAY,EAAE;wBACZ,WAAW,EAAE,IAAI;qBAClB;iBACF;aACF;SACF;QACD;YACE,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;oBAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;oBAC3B,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;oBAC3B,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;oBAC3B,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;iBAC5B;aACF;YACD,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,cAAc,EAAE;wBACd,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;qBACjC;oBACD,YAAY,EAAE;wBACZ,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;qBAC3B;iBACF;aACF;SACF;QACD;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,QAAQ;YACrB,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,GAAG;qBACX;oBACD;wBACE,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE,GAAG;qBACX;iBACF;aACF;YACD,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI;SACb;QACD;YACE,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI;SACb;QACD;YACE,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI;SACb;KACF;CACF,CAAA;AAED,IAAI,KAAK,GAAG;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC3B,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;IAC/B,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IAC/B,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,CAAC,EAAE,CAAC;IACjB,SAAS,EACP,4iNAA4iN;CAC/iN,CAAA;AAED,MAAM,QAAQ,GAAoB,CAAC,EAAY,EAAE,EAAE,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;eA2BzC,OAAO;aACT,KAAK;cACJ,CAAC,CAAc,EAAE,EAAE;IAC3B,KAAK,GAAG,CAAC,CAAC,MAAM,CAAA;IAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC9B,CAAC;;CAEJ,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACxC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAA","sourcesContent":["import '@operato/i18n'\nimport '../src/ox-data-entry-form.js'\nimport '../src/usecase/ccp' /* register usecase CCP */\nimport '@material/web/icon/icon.js'\n\nimport { html, TemplateResult } from 'lit'\n\nexport default {\n title: 'ox-data-entry-form-subgroups',\n component: 'ox-data-entry-form',\n argTypes: {}\n}\n\ninterface Story<T> {\n (args: T): TemplateResult\n args?: Partial<T>\n argTypes?: Record<string, unknown>\n}\n\ninterface ArgTypes {}\n\nconst dataSet = {\n name: 'sample',\n description: 'sample description',\n useCase: 'CCP',\n dataItems: [\n {\n name: '라디오 독립',\n description: '라디오',\n sequence: 5,\n tag: 'check2',\n type: 'radio',\n options: {\n options: [\n {\n text: '예',\n value: 'Y'\n },\n {\n text: '아니오',\n value: 'N'\n }\n ]\n },\n quota: 1,\n active: true\n },\n {\n name: '첨부파일',\n description: '참조 첨부 파일.',\n sequence: 4,\n tag: 'attachment',\n type: 'file',\n quota: 1,\n active: true\n },\n {\n name: '창고 온도',\n description: '창고 온도는 섭씨 0도 이하로 유지되어야 합니다.',\n sequence: 1,\n tag: 'temp',\n group: '측정데이타',\n type: 'number',\n quota: 1,\n active: true,\n unit: '℃',\n spec: {\n CCP: {\n criticalLimits: {\n minimum: 100,\n maximum: 200\n },\n targetLimits: {\n minimum: 120,\n maximum: 180\n }\n }\n }\n },\n {\n name: '코멘트',\n description: '특이사항을 기록함.',\n sequence: 4,\n tag: 'comment',\n type: 'string',\n quota: 1,\n active: true\n },\n {\n name: '창고 습도',\n description: '창고 습도는 30% 이하로 유지되어야 합니다.',\n sequence: 2,\n tag: 'humid',\n group: '측정데이타2',\n type: 'number',\n quota: 5,\n active: true,\n unit: '%',\n spec: {\n CCP: {\n criticalLimits: {\n minimum: 10,\n maximum: 50\n },\n targetLimits: {\n minimum: 20,\n maximum: 40\n }\n }\n }\n },\n {\n name: '설명',\n description: '설명',\n sequence: 12,\n tag: 'description',\n type: 'string',\n active: true,\n group: '측정데이타2'\n },\n {\n name: '육안 검사',\n description: '육안 검사는 포장전 30분 내로 실행되어야 합니다.',\n sequence: 3,\n tag: 'inspection',\n group: '측정데이타',\n type: 'boolean',\n quota: 3,\n active: true,\n spec: {\n CCP: {\n criticalLimits: {\n acceptables: true\n },\n targetLimits: {\n acceptables: true\n }\n }\n }\n },\n {\n name: '품평',\n description: '품평은 최우수/우수/보통/미달을 포함하여 간단히 평가.',\n sequence: 4,\n tag: 'evaluation',\n group: '측정데이타2',\n type: 'select',\n options: {\n options: [\n { text: '최우수', value: '최우수' },\n { text: '우수', value: '우수' },\n { text: '보통', value: '보통' },\n { text: '미달', value: '미달' },\n { text: '등외', value: '등외' }\n ]\n },\n quota: 3,\n active: true,\n spec: {\n CCP: {\n criticalLimits: {\n acceptables: ['최우수', '우수', '보통']\n },\n targetLimits: {\n acceptables: ['최우수', '우수']\n }\n }\n }\n },\n {\n name: '라디오 측정',\n description: '라디오 그룹',\n group: '측정데이타',\n sequence: 5,\n tag: 'check1',\n type: 'radio',\n options: {\n options: [\n {\n text: '예',\n value: 'Y'\n },\n {\n text: '아니오',\n value: 'N'\n }\n ]\n },\n quota: 3,\n active: true\n },\n {\n name: '서명',\n description: '품평가 서명.',\n sequence: 4,\n tag: 'sign',\n group: '측정데이타',\n type: 'signature',\n quota: 3,\n active: true\n },\n {\n name: '서명',\n description: '서명',\n sequence: 5,\n tag: 'signature',\n type: 'signature',\n quota: 1,\n active: true\n }\n ]\n}\n\nvar value = {\n temp: 1000,\n humid: [20, 23, 21, 26, 27],\n inspection: [true, false, true],\n evaluation: ['최우수', '보통', '우수'],\n comment: '이것이 코멘트입니다.',\n description: [''],\n signature:\n 'data:image/png;base64,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'\n}\n\nconst Template: Story<ArgTypes> = ({}: ArgTypes) => html`\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n\n <style>\n body {\n }\n </style>\n\n <link href=\"/themes/app-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/light.css\" rel=\"stylesheet\" />\n <link href=\"/themes/dark.css\" rel=\"stylesheet\" />\n <link href=\"/themes/spacing.css\" rel=\"stylesheet\" />\n <link href=\"/themes/grist-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/form-theme.css\" rel=\"stylesheet\" />\n\n <ox-data-entry-form\n .dataSet=${dataSet}\n .value=${value}\n @change=${(e: CustomEvent) => {\n value = e.detail\n console.log('change', value)\n }}\n ></ox-data-entry-form>\n`\n\nexport const Regular = Template.bind({})\nRegular.args = {}\n"]}
|