vue3-form-producer
Version:
業務アプリケーションに必要とされるフォームの作成から、フォームを使った入力画面、データ表示画面までをJSONデータで連携し、Vue.js / Bootstrap-Vue-Next でのフロントエンド開発におけるフォーム開発の生産性を飛躍的に向上するコンポーネントです。
409 lines (403 loc) • 14.1 kB
JavaScript
import { v4 as uuidv4 } from 'uuid';
import SwLanguage from './sw-language.js'
const { get_language } = SwLanguage()
export default function (){
// ブラウザからデフォルトの言語を取得する
let locale = navigator.language;
if( locale != "ja" && locale != "en" ) locale = "en";
const get_schema_type = (item_type) => {
//console.log("get_schema_type:item_type="+item_type)
let schema_info = schema[item_type];
schema_info.item_uuid = uuidv4();
//console.log("get_schema_type:schema_info="+JSON.stringify(schema_info))
return schema_info;
};
const schema = {
"-- 短いテキスト --": "-- 短いテキスト --",
"type_short_text": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_short_text",
"item_name": get_language(locale,"type_short_text"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_max_length": 32,
"item_allowed_type": "All"
},
"-- 長いテキスト --": "-- 長いテキスト --",
"type_long_text": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_long_text",
"item_name": get_language(locale,"type_long_text"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_max_length": 256,
"item_number_of_rows": 3
},
"-- 数値 --": "-- 数値 --",
"type_numeric": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_numeric",
"item_name": get_language(locale,"type_numeric"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_min_number": 1,
"item_max_number": 100,
"item_init_number": 1,
"item_unit": ""
},
"-- 単一選択 --": "-- 単一選択 --",
"type_single_select": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_single_select",
"item_name": get_language(locale,"type_single_select"),
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": true,
"item_required_badge": false,
"item_line_selected": false,
"item_choice_columns": [
{"text":get_language(locale,"selection1"),"value":get_language(locale,"selection1")},
{"text":get_language(locale,"selection2"),"value":get_language(locale,"selection2")}
],
"item_choiced_value": get_language(locale,"selection1"),
},
"-- 複数選択 --": "-- 複数選択 --",
"type_multi_select": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_multi_select",
"item_name": get_language(locale,"type_multi_select"),
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": true,
"item_required_badge": false,
"item_line_selected": false,
"item_choice_columns": [
{"text":get_language(locale,"selection1"),"value":get_language(locale,"selection1")},
{"text":get_language(locale,"selection2"),"value":get_language(locale,"selection2")}
],
},
"-- スイッチ --": "-- スイッチ --",
"type_switch": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_switch",
"item_name": get_language(locale,"type_switch"),
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_on_value": "ON",
"item_off_value": "OFF"
},
"-- 日付 --": "-- 日付 --",
"type_date": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_date",
"item_name": get_language(locale,"type_date"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_output_format": "ShortDate"
},
"-- 時刻 --": "-- 時刻 --",
"type_time": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_time",
"item_name": get_language(locale,"type_time"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_output_format": "ShortTime"
},
"-- 日時 --": "-- 日時 --",
"type_datetime": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_datetime",
"item_name": get_language(locale,"type_datetime"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_output_format": "ShortDateTime1"
},
"-- 写真 --":"-- 写真 --",
"type_picture": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_picture",
"item_name": get_language(locale,"type_picture"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_droparea_view_selected": true,
"item_max_width": 80,
"item_max_height": 80
},
"-- パスワード --": "-- パスワード --",
"type_password": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_password",
"item_name": get_language(locale,"type_password"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_min_characters": 8,
"item_character_type_selected": ["Lowercase", "Uppercase", "Numeric"],
"item_password_hash_selected": true,
"item_password_view_selected": true
},
"-- 氏名 --": "-- 氏名 --",
"type_full_name": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_full_name",
"item_name_1": get_language(locale,"family_name"),
"item_name_2": get_language(locale,"first_name"),
"item_placeholder_1": "",
"item_placeholder_2": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_max_length": 100
},
"-- 電話番号 --": "-- 電話番号 --",
"type_phone_number": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_phone_number",
"item_name": get_language(locale,"type_phone_number"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_hyphen_selected": false,
"item_international_selected": false
},
"-- メールアドレス --": "-- メールアドレス --",
"type_mail_address": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_mail_address",
"item_name": get_language(locale,"type_mail_address"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_mail_address_selected": false
},
"-- プルダウン --": "-- プルダウン --",
"type_pulldown": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_pulldown",
"item_name": get_language(locale,"type_pulldown"),
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": true,
"item_required_badge": false,
"item_choice_columns": [
{"text":get_language(locale,"selection1"),"value":get_language(locale,"selection1")},
{"text":get_language(locale,"selection2"),"value":get_language(locale,"selection2")}
],
"item_choiced_value": get_language(locale,"selection1"),
},
"-- マークダウン --": "-- マークダウン --",
"type_markdown": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_markdown",
"item_name": get_language(locale,"type_markdown"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_max_length": 256,
"item_number_of_rows": 6
},
"-- URL --": "-- URL --",
"type_url": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_url",
"item_name": get_language(locale,"type_url"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_url_link_selected": false
},
"-- ラベル --": "-- ラベル --",
"type_label": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_label",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_label": get_language(locale,"type_label"),
"item_markdown_selected": false,
"item_show_selected": false
},
"-- 表 --": "-- 表 --",
"type_table": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_table",
"item_name": get_language(locale,"type_table"),
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_rows_columns": [
{"text":get_language(locale,"row_name_1"),"value":get_language(locale,"row_name_1")},
{"text":get_language(locale,"row_name_2"),"value":get_language(locale,"row_name_2")}
],
"item_columns_columns": [
{"text":get_language(locale,"column_name_1"),"value":get_language(locale,"column_name_1")},
{"text":get_language(locale,"column_name_2"),"value":get_language(locale,"column_name_2")}
],
"item_max_length": 32,
"item_allowed_type": "All"
},
"-- ファイル --":"-- ファイル --",
"type_file": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_file",
"item_name": get_language(locale,"type_file"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_droparea_view_selected": true,
"item_output_method_selected": true,
"item_max_files": 5,
"item_max_size": 10
},
"-- 手書きサイン --":"-- 手書きサイン --",
"type_sign": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_sign",
"item_name": get_language(locale,"type_sign"),
"item_placeholder": "",
"item_description": "",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_required_selected": false,
"item_required_badge": false,
"item_height": 300,
},
"-- 外部リンク --":"-- 外部リンク --",
"type_link": {
"item_body_visible": true,
"item_uuid": "",
"item_sequence": 0,
"item_type": "type_link",
"item_key": "",
"item_condition_key": "",
"item_condition_value": "",
"item_label": get_language(locale,"type_link"),
"item_prefix": "詳しくは",
"item_postfix": "をご覧ください。",
"item_link_word": "こちら",
"item_link_url": "https://www.shadows-works.com/"
},
}
return {
get_schema_type
}
}