mokkun 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +18 -6
  2. package/bin/cli.mjs +6 -6
  3. package/bin/viewer.html +78 -3
  4. package/dist/example.html +225 -0
  5. package/dist/mokkun.css +1 -1
  6. package/dist/mokkun.esm.js +14476 -9626
  7. package/dist/mokkun.esm.js.map +1 -1
  8. package/dist/mokkun.js +761 -363
  9. package/dist/mokkun.js.map +1 -1
  10. package/dist/types/lib.d.ts +109 -0
  11. package/dist/types/loader/file-loader.d.ts +118 -0
  12. package/dist/types/loader/index.d.ts +4 -0
  13. package/dist/types/parser/index.d.ts +5 -0
  14. package/dist/types/parser/key-normalizer.d.ts +24 -0
  15. package/dist/types/parser/v2/compile-expand.d.ts +23 -0
  16. package/dist/types/parser/v2/compile-field.d.ts +28 -0
  17. package/dist/types/parser/v2/compile-section.d.ts +6 -0
  18. package/dist/types/parser/v2/compile-v2.d.ts +14 -0
  19. package/dist/types/parser/v2/compile-warnings.d.ts +17 -0
  20. package/dist/types/parser/v2/file-spec.d.ts +24 -0
  21. package/dist/types/parser/v2/index.d.ts +5 -0
  22. package/dist/types/parser/v2/iso-date.d.ts +10 -0
  23. package/dist/types/parser/v2/parse-v2.d.ts +24 -0
  24. package/dist/types/parser/v2/validate-action.d.ts +11 -0
  25. package/dist/types/parser/v2/validate-app.d.ts +9 -0
  26. package/dist/types/parser/v2/validate-context.d.ts +41 -0
  27. package/dist/types/parser/v2/validate-field.d.ts +17 -0
  28. package/dist/types/parser/v2/validate-keys.d.ts +29 -0
  29. package/dist/types/parser/v2/validate-list.d.ts +5 -0
  30. package/dist/types/parser/v2/validate-v2.d.ts +6 -0
  31. package/dist/types/parser/v2/validate-view.d.ts +6 -0
  32. package/dist/types/parser/yaml-parser.d.ts +68 -0
  33. package/dist/types/renderer/action-handler.d.ts +76 -0
  34. package/dist/types/renderer/components/accordion-panel.d.ts +144 -0
  35. package/dist/types/renderer/components/action-buttons.d.ts +183 -0
  36. package/dist/types/renderer/components/alert-banner.d.ts +43 -0
  37. package/dist/types/renderer/components/app-header.d.ts +277 -0
  38. package/dist/types/renderer/components/app-navi.d.ts +167 -0
  39. package/dist/types/renderer/components/badge.d.ts +134 -0
  40. package/dist/types/renderer/components/browser.d.ts +134 -0
  41. package/dist/types/renderer/components/calendar.d.ts +198 -0
  42. package/dist/types/renderer/components/checkbox.d.ts +132 -0
  43. package/dist/types/renderer/components/chip.d.ts +120 -0
  44. package/dist/types/renderer/components/combobox.d.ts +217 -0
  45. package/dist/types/renderer/components/data-table.d.ts +186 -0
  46. package/dist/types/renderer/components/date-range-picker.d.ts +203 -0
  47. package/dist/types/renderer/components/definition-list.d.ts +165 -0
  48. package/dist/types/renderer/components/delete-confirm-dialog.d.ts +151 -0
  49. package/dist/types/renderer/components/dialog/action-dialog.d.ts +61 -0
  50. package/dist/types/renderer/components/dialog/base-dialog.d.ts +125 -0
  51. package/dist/types/renderer/components/dialog/dialog-types.d.ts +96 -0
  52. package/dist/types/renderer/components/disclosure.d.ts +118 -0
  53. package/dist/types/renderer/components/dropdown.d.ts +220 -0
  54. package/dist/types/renderer/components/duration-input.d.ts +154 -0
  55. package/dist/types/renderer/components/duration-picker.d.ts +108 -0
  56. package/dist/types/renderer/components/field-renderer.d.ts +22 -0
  57. package/dist/types/renderer/components/float-area.d.ts +196 -0
  58. package/dist/types/renderer/components/form-fields.d.ts +94 -0
  59. package/dist/types/renderer/components/form-section.d.ts +118 -0
  60. package/dist/types/renderer/components/google-map-embed.d.ts +88 -0
  61. package/dist/types/renderer/components/heading.d.ts +119 -0
  62. package/dist/types/renderer/components/image-uploader.d.ts +271 -0
  63. package/dist/types/renderer/components/index.d.ts +48 -0
  64. package/dist/types/renderer/components/information-panel.d.ts +139 -0
  65. package/dist/types/renderer/components/input.d.ts +222 -0
  66. package/dist/types/renderer/components/layout.d.ts +71 -0
  67. package/dist/types/renderer/components/line-clamp.d.ts +170 -0
  68. package/dist/types/renderer/components/loader.d.ts +104 -0
  69. package/dist/types/renderer/components/notification-bar.d.ts +251 -0
  70. package/dist/types/renderer/components/pagination.d.ts +167 -0
  71. package/dist/types/renderer/components/photo-manager-renderer.d.ts +9 -0
  72. package/dist/types/renderer/components/radio-button-panel.d.ts +152 -0
  73. package/dist/types/renderer/components/radio.d.ts +117 -0
  74. package/dist/types/renderer/components/repeater.d.ts +116 -0
  75. package/dist/types/renderer/components/response-message.d.ts +180 -0
  76. package/dist/types/renderer/components/search-input.d.ts +198 -0
  77. package/dist/types/renderer/components/section-nav.d.ts +151 -0
  78. package/dist/types/renderer/components/segmented-control.d.ts +143 -0
  79. package/dist/types/renderer/components/select.d.ts +98 -0
  80. package/dist/types/renderer/components/status-label.d.ts +146 -0
  81. package/dist/types/renderer/components/stepper.d.ts +123 -0
  82. package/dist/types/renderer/components/tabs.d.ts +185 -0
  83. package/dist/types/renderer/components/textarea.d.ts +173 -0
  84. package/dist/types/renderer/components/timeline.d.ts +146 -0
  85. package/dist/types/renderer/components/toggle.d.ts +109 -0
  86. package/dist/types/renderer/components/tooltip.d.ts +158 -0
  87. package/dist/types/renderer/components/wizard.d.ts +118 -0
  88. package/dist/types/renderer/layouts/index.d.ts +5 -0
  89. package/dist/types/renderer/layouts/shell.d.ts +7 -0
  90. package/dist/types/renderer/layouts/types.d.ts +34 -0
  91. package/dist/types/renderer/screen-renderer.d.ts +57 -0
  92. package/dist/types/renderer/utils/dom.d.ts +29 -0
  93. package/dist/types/renderer/utils/dummy-data.d.ts +13 -0
  94. package/dist/types/renderer/utils/field-helpers.d.ts +90 -0
  95. package/dist/types/renderer/utils/icons.d.ts +13 -0
  96. package/dist/types/renderer/utils/index.d.ts +6 -0
  97. package/dist/types/renderer-v2/actions.d.ts +30 -0
  98. package/dist/types/renderer-v2/app-shell.d.ts +15 -0
  99. package/dist/types/renderer-v2/condition.d.ts +19 -0
  100. package/dist/types/renderer-v2/context.d.ts +37 -0
  101. package/dist/types/renderer-v2/fields/choice.d.ts +12 -0
  102. package/dist/types/renderer-v2/fields/control-label.d.ts +57 -0
  103. package/dist/types/renderer-v2/fields/date.d.ts +6 -0
  104. package/dist/types/renderer-v2/fields/display.d.ts +22 -0
  105. package/dist/types/renderer-v2/fields/file-support.d.ts +15 -0
  106. package/dist/types/renderer-v2/fields/file.d.ts +9 -0
  107. package/dist/types/renderer-v2/fields/index.d.ts +20 -0
  108. package/dist/types/renderer-v2/fields/select.d.ts +17 -0
  109. package/dist/types/renderer-v2/fields/text.d.ts +26 -0
  110. package/dist/types/renderer-v2/fields/textarea.d.ts +5 -0
  111. package/dist/types/renderer-v2/fields/toggle.d.ts +6 -0
  112. package/dist/types/renderer-v2/icons.d.ts +35 -0
  113. package/dist/types/renderer-v2/index.d.ts +45 -0
  114. package/dist/types/renderer-v2/list-cells.d.ts +6 -0
  115. package/dist/types/renderer-v2/list-data.d.ts +53 -0
  116. package/dist/types/renderer-v2/mount-parts.d.ts +19 -0
  117. package/dist/types/renderer-v2/mount-repeat.d.ts +8 -0
  118. package/dist/types/renderer-v2/mount-section.d.ts +10 -0
  119. package/dist/types/renderer-v2/mount-visibility.d.ts +13 -0
  120. package/dist/types/renderer-v2/mount.d.ts +9 -0
  121. package/dist/types/renderer-v2/role.d.ts +15 -0
  122. package/dist/types/renderer-v2/section-fields.d.ts +11 -0
  123. package/dist/types/renderer-v2/section-list.d.ts +8 -0
  124. package/dist/types/renderer-v2/section-readonly.d.ts +8 -0
  125. package/dist/types/renderer-v2/section.d.ts +15 -0
  126. package/dist/types/renderer-v2/styles.d.ts +13 -0
  127. package/dist/types/renderer-v2/util.d.ts +28 -0
  128. package/dist/types/renderer-v2/view-state.d.ts +25 -0
  129. package/dist/types/renderer-v2/view.d.ts +8 -0
  130. package/dist/types/theme/index.d.ts +6 -0
  131. package/dist/types/theme/theme-manager.d.ts +102 -0
  132. package/dist/types/types/field-renderable.d.ts +40 -0
  133. package/dist/types/types/index.d.ts +7 -0
  134. package/dist/types/types/schema-v2.d.ts +270 -0
  135. package/dist/types/types/schema.d.ts +1712 -0
  136. package/dist/types/types/theme.d.ts +111 -0
  137. package/package.json +3 -1
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Duration Input Component
3
+ * 期間入力コンポーネント(数値入力 + 単位表示)
4
+ *
5
+ * 機能:
6
+ * - 数値入力による期間指定
7
+ * - 単位ラベル表示
8
+ * - バリデーション
9
+ * - アクセシビリティ対応
10
+ */
11
+ import type { DurationInputField } from '../../types/schema';
12
+ /**
13
+ * 表示単位
14
+ */
15
+ export type DisplayUnit = 'hours' | 'minutes' | 'seconds';
16
+ /**
17
+ * Duration Inputの状態
18
+ */
19
+ export interface DurationInputState {
20
+ /** 現在の値(表示単位での数値) */
21
+ value: number;
22
+ /** 無効化状態 */
23
+ disabled: boolean;
24
+ /** 読み取り専用状態 */
25
+ readonly: boolean;
26
+ /** エラー状態 */
27
+ error: boolean;
28
+ /** エラーメッセージ */
29
+ errorMessage?: string;
30
+ }
31
+ /**
32
+ * Duration Inputのコールバック
33
+ */
34
+ export interface DurationInputCallbacks {
35
+ /** 値変更時 */
36
+ onChange?: (value: number, state: DurationInputState) => void;
37
+ /** フォーカス時 */
38
+ onFocus?: (state: DurationInputState) => void;
39
+ /** ブラー時 */
40
+ onBlur?: (state: DurationInputState) => void;
41
+ }
42
+ /**
43
+ * Duration Inputの設定
44
+ */
45
+ export interface DurationInputConfig {
46
+ /** 初期値 */
47
+ defaultValue?: number;
48
+ /** 表示単位 */
49
+ displayUnit?: DisplayUnit;
50
+ /** 最小値 */
51
+ min?: number;
52
+ /** 最大値 */
53
+ max?: number;
54
+ /** 無効化 */
55
+ disabled?: boolean;
56
+ /** 読み取り専用 */
57
+ readonly?: boolean;
58
+ /** 必須 */
59
+ required?: boolean;
60
+ /** name属性 */
61
+ name?: string;
62
+ /** ID */
63
+ id?: string;
64
+ /** プレースホルダー */
65
+ placeholder?: string;
66
+ }
67
+ /**
68
+ * 期間入力コンポーネント
69
+ */
70
+ export declare class DurationInput {
71
+ private config;
72
+ private state;
73
+ private callbacks;
74
+ private container;
75
+ private instanceId;
76
+ private inputElement;
77
+ constructor(container: HTMLElement, config?: DurationInputConfig, callbacks?: DurationInputCallbacks);
78
+ /**
79
+ * Duration Inputをレンダリング
80
+ */
81
+ render(): void;
82
+ /**
83
+ * 値を設定
84
+ */
85
+ setValue(value: number): void;
86
+ /**
87
+ * 値を取得
88
+ */
89
+ getValue(): number;
90
+ /**
91
+ * エラー状態を設定
92
+ */
93
+ setError(error: boolean, errorMessage?: string): void;
94
+ /**
95
+ * 無効化状態を設定
96
+ */
97
+ setDisabled(disabled: boolean): void;
98
+ /**
99
+ * 読み取り専用状態を設定
100
+ */
101
+ setReadonly(readonly: boolean): void;
102
+ /**
103
+ * フォーカス
104
+ */
105
+ focus(): void;
106
+ /**
107
+ * ブラー
108
+ */
109
+ blur(): void;
110
+ /**
111
+ * 現在の状態を取得
112
+ */
113
+ getState(): DurationInputState;
114
+ /**
115
+ * 初期状態を作成
116
+ */
117
+ private createInitialState;
118
+ /**
119
+ * 入力グループをレンダリング
120
+ */
121
+ private renderInputGroup;
122
+ /**
123
+ * 入力フィールドをレンダリング
124
+ */
125
+ private renderInput;
126
+ /**
127
+ * エラーメッセージをレンダリング
128
+ */
129
+ private renderError;
130
+ /**
131
+ * 入力イベント
132
+ */
133
+ private handleInput;
134
+ /**
135
+ * フォーカスイベント
136
+ */
137
+ private handleFocus;
138
+ /**
139
+ * ブラーイベント
140
+ */
141
+ private handleBlur;
142
+ /**
143
+ * Duration Inputフィールドを HTMLとしてレンダリング(静的メソッド)
144
+ * SSR/初期レンダリング用
145
+ *
146
+ * @param field - Duration Inputフィールド定義
147
+ * @returns 生成されたHTML文字列
148
+ */
149
+ static renderField(field: DurationInputField): string;
150
+ }
151
+ /**
152
+ * Duration Inputを作成するファクトリ関数
153
+ */
154
+ export declare function createDurationInput(container: HTMLElement, config?: DurationInputConfig, callbacks?: DurationInputCallbacks): DurationInput;
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Duration Picker Component
3
+ * 期間選択コンポーネント(時間:分 等の選択UI)
4
+ *
5
+ * 機能:
6
+ * - 複数の時間単位(日/時間/分/秒)からの選択
7
+ * - 柔軟な単位設定
8
+ * - アクセシビリティ対応
9
+ */
10
+ import type { DurationPickerField } from '../../types/schema';
11
+ /**
12
+ * 時間単位
13
+ */
14
+ export type DurationUnit = 'days' | 'hours' | 'minutes' | 'seconds';
15
+ /**
16
+ * Duration Pickerの状態
17
+ */
18
+ export interface DurationPickerState {
19
+ /** 各単位の値 */
20
+ values: Record<DurationUnit, number>;
21
+ /** 無効化状態 */
22
+ disabled: boolean;
23
+ }
24
+ /**
25
+ * Duration Pickerのコールバック
26
+ */
27
+ export interface DurationPickerCallbacks {
28
+ /** 値変更時 */
29
+ onChange?: (values: Record<DurationUnit, number>, state: DurationPickerState) => void;
30
+ }
31
+ /**
32
+ * Duration Pickerの設定
33
+ */
34
+ export interface DurationPickerConfig {
35
+ /** 使用する単位 */
36
+ units: DurationUnit[];
37
+ /** 初期値 */
38
+ defaultValues?: Partial<Record<DurationUnit, number>>;
39
+ /** 無効化 */
40
+ disabled?: boolean;
41
+ /** name属性プレフィックス */
42
+ name?: string;
43
+ /** ID */
44
+ id?: string;
45
+ }
46
+ /**
47
+ * 期間選択コンポーネント
48
+ */
49
+ export declare class DurationPicker {
50
+ private config;
51
+ private state;
52
+ private callbacks;
53
+ private container;
54
+ private instanceId;
55
+ constructor(container: HTMLElement, config: DurationPickerConfig, callbacks?: DurationPickerCallbacks);
56
+ /**
57
+ * Duration Pickerをレンダリング
58
+ */
59
+ render(): void;
60
+ /**
61
+ * 値を設定
62
+ */
63
+ setValue(unit: DurationUnit, value: number): void;
64
+ /**
65
+ * 全ての値を設定
66
+ */
67
+ setValues(values: Partial<Record<DurationUnit, number>>): void;
68
+ /**
69
+ * 値を取得
70
+ */
71
+ getValue(unit: DurationUnit): number;
72
+ /**
73
+ * 全ての値を取得
74
+ */
75
+ getValues(): Record<DurationUnit, number>;
76
+ /**
77
+ * 無効化状態を設定
78
+ */
79
+ setDisabled(disabled: boolean): void;
80
+ /**
81
+ * 現在の状態を取得
82
+ */
83
+ getState(): DurationPickerState;
84
+ /**
85
+ * 初期状態を作成
86
+ */
87
+ private createInitialState;
88
+ /**
89
+ * 単位セレクターをレンダリング
90
+ */
91
+ private renderUnitSelector;
92
+ /**
93
+ * 単位ごとの最大値を取得
94
+ */
95
+ private getMaxForUnit;
96
+ /**
97
+ * Duration Pickerフィールドを HTMLとしてレンダリング(静的メソッド)
98
+ * SSR/初期レンダリング用
99
+ *
100
+ * @param field - Duration Pickerフィールド定義
101
+ * @returns 生成されたHTML文字列
102
+ */
103
+ static renderField(field: DurationPickerField): string;
104
+ }
105
+ /**
106
+ * Duration Pickerを作成するファクトリ関数
107
+ */
108
+ export declare function createDurationPicker(container: HTMLElement, config: DurationPickerConfig, callbacks?: DurationPickerCallbacks): DurationPicker;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Field Renderer
3
+ * フィールドレンダリングユーティリティ
4
+ */
5
+ import type { InputField } from '../../types';
6
+ /**
7
+ * フィールドをレンダリングするオプション
8
+ */
9
+ export interface RenderFieldOptions {
10
+ /** 値 */
11
+ value?: unknown;
12
+ /** 変更時コールバック */
13
+ onChange?: (fieldId: string, value: unknown) => void;
14
+ /** ネストレベル(リピーター用) */
15
+ nestLevel?: number;
16
+ /** アイテムID(リピーター内のフィールド用) */
17
+ itemId?: string;
18
+ }
19
+ /**
20
+ * フィールドをレンダリング
21
+ */
22
+ export declare function renderField(field: InputField, container: HTMLElement, options?: RenderFieldOptions): void;
@@ -0,0 +1,196 @@
1
+ /**
2
+ * FloatArea Component
3
+ * フローティング領域コンポーネント
4
+ *
5
+ *
6
+ * https://smarthr.design/products/components/float-area/
7
+ *
8
+ * 機能:
9
+ * - primaryButton / secondaryButton / tertiaryButton の3ボタン構成
10
+ * - responseMessage(処理結果メッセージ)のサポート
11
+ * - 画面下部への固定表示
12
+ * - デスクトップ/モバイル対応レイアウト
13
+ * - z-index管理
14
+ *
15
+ * 用途:
16
+ * - フォーム送信ボタンの固定表示
17
+ * - モーダルUIのアクション領域
18
+ * - 設定画面のアクションビュー
19
+ */
20
+ import type { InputField } from '../../types/schema';
21
+ /**
22
+ * ボタン設定
23
+ */
24
+ export interface FloatAreaButton {
25
+ /** ボタンのラベル */
26
+ label: string;
27
+ /** ボタンのタイプ */
28
+ variant?: 'primary' | 'secondary' | 'danger' | 'text';
29
+ /** 無効状態 */
30
+ disabled?: boolean;
31
+ /** クリック時のコールバック */
32
+ onClick?: () => void;
33
+ }
34
+ /**
35
+ * レスポンスメッセージの種類
36
+ */
37
+ export type ResponseMessageType = 'success' | 'error' | 'warning' | 'info';
38
+ /**
39
+ * レスポンスメッセージ設定
40
+ */
41
+ export interface ResponseMessage {
42
+ /** メッセージ */
43
+ text: string;
44
+ /** メッセージの種類 */
45
+ type: ResponseMessageType;
46
+ }
47
+ /**
48
+ * フローティング領域の状態
49
+ */
50
+ export interface FloatAreaState {
51
+ /** 表示中かどうか */
52
+ visible: boolean;
53
+ /** z-index */
54
+ zIndex: number;
55
+ /** レスポンスメッセージ */
56
+ responseMessage: ResponseMessage | null;
57
+ }
58
+ /**
59
+ * フローティング領域のコールバック
60
+ */
61
+ export interface FloatAreaCallbacks {
62
+ /** プライマリボタンクリック時 */
63
+ onPrimaryClick?: () => void;
64
+ /** セカンダリボタンクリック時 */
65
+ onSecondaryClick?: () => void;
66
+ /** ターシャリボタンクリック時 */
67
+ onTertiaryClick?: () => void;
68
+ /** 表示時 */
69
+ onShow?: () => void;
70
+ /** 非表示時 */
71
+ onHide?: () => void;
72
+ }
73
+ /**
74
+ * フローティング領域の設定
75
+ */
76
+ export interface FloatAreaConfig {
77
+ /** プライマリボタン(必須) */
78
+ primaryButton: FloatAreaButton;
79
+ /** セカンダリボタン */
80
+ secondaryButton?: FloatAreaButton;
81
+ /** ターシャリボタン(左端に配置) */
82
+ tertiaryButton?: FloatAreaButton;
83
+ /** レスポンスメッセージ */
84
+ responseMessage?: ResponseMessage;
85
+ /** z-index(デフォルト: 500) */
86
+ zIndex?: number;
87
+ /** 下部からの距離(デフォルト: 24px) */
88
+ bottom?: string;
89
+ /** 最大幅(デフォルト: 800px) */
90
+ maxWidth?: string;
91
+ /** アクセシビリティ用ラベル */
92
+ ariaLabel?: string;
93
+ }
94
+ /**
95
+ * フローティング領域コンポーネント
96
+ */
97
+ export declare class FloatArea {
98
+ private config;
99
+ private state;
100
+ private callbacks;
101
+ private containerElement;
102
+ private floatAreaElement;
103
+ private instanceId;
104
+ constructor(containerElement: HTMLElement, config: FloatAreaConfig, callbacks?: FloatAreaCallbacks);
105
+ /**
106
+ * コンポーネントをレンダリング
107
+ */
108
+ render(): void;
109
+ /**
110
+ * フローティング領域を表示
111
+ */
112
+ show(): void;
113
+ /**
114
+ * フローティング領域を非表示
115
+ */
116
+ hide(): void;
117
+ /**
118
+ * 表示/非表示を切り替え
119
+ */
120
+ toggle(): void;
121
+ /**
122
+ * レスポンスメッセージを設定
123
+ */
124
+ setResponseMessage(message: ResponseMessage | null): void;
125
+ /**
126
+ * 成功メッセージを表示
127
+ */
128
+ showSuccess(text: string): void;
129
+ /**
130
+ * エラーメッセージを表示
131
+ */
132
+ showError(text: string): void;
133
+ /**
134
+ * メッセージをクリア
135
+ */
136
+ clearMessage(): void;
137
+ /**
138
+ * プライマリボタンを更新
139
+ */
140
+ updatePrimaryButton(button: Partial<FloatAreaButton>): void;
141
+ /**
142
+ * プライマリボタンの無効状態を設定
143
+ */
144
+ setPrimaryDisabled(disabled: boolean): void;
145
+ /**
146
+ * z-indexを設定
147
+ */
148
+ setZIndex(zIndex: number): void;
149
+ /**
150
+ * コンポーネントを破棄
151
+ */
152
+ destroy(): void;
153
+ /**
154
+ * 現在の状態を取得
155
+ */
156
+ getState(): FloatAreaState;
157
+ /**
158
+ * 表示中かどうかを取得
159
+ */
160
+ isVisible(): boolean;
161
+ /**
162
+ * フローティング領域要素を作成
163
+ */
164
+ private createFloatAreaElement;
165
+ /**
166
+ * ボタン要素を作成
167
+ */
168
+ private createButton;
169
+ /**
170
+ * レスポンスメッセージ要素を作成
171
+ */
172
+ private createResponseMessage;
173
+ /**
174
+ * メッセージタイプに応じたアイコンを取得
175
+ */
176
+ private getMessageIcon;
177
+ /**
178
+ * クラス名を構築
179
+ */
180
+ private buildClassName;
181
+ /**
182
+ * 表示状態を更新
183
+ */
184
+ private updateVisibility;
185
+ /**
186
+ * 要素を削除
187
+ */
188
+ private removeElement;
189
+ static renderField(field: InputField): string;
190
+ }
191
+ /**
192
+ * FloatAreaを作成するファクトリ関数
193
+ */
194
+ export declare function createFloatArea(containerElement: HTMLElement, config: FloatAreaConfig, callbacks?: FloatAreaCallbacks): FloatArea;
195
+ export type FloatAreaPosition = 'top' | 'bottom';
196
+ export type FloatAreaAlignment = 'left' | 'center' | 'right' | 'space-between';
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Form Field Renderers (Facade)
3
+ * 各フォームフィールドタイプのHTML生成
4
+ *
5
+ * このモジュールはファサードとして機能し、実際のレンダリングロジックは
6
+ * 各コンポーネントの静的renderFieldメソッドに委譲されます。
7
+ */
8
+ import type { InputField, TextField, NumberField, TextareaField, SelectField, MultiSelectField, ComboboxField, RadioGroupField, CheckboxGroupField, DatePickerField, TimePickerField, DurationPickerField, DurationInputField, FileUploadField, RepeaterField, GoogleMapEmbedField, ImageUploaderField, HeadingField } from '../../types/schema';
9
+ /**
10
+ * text → <input type="text">
11
+ * @deprecated Use Input.renderField instead
12
+ */
13
+ export declare function renderTextField(field: TextField): string;
14
+ /**
15
+ * number → <input type="number">
16
+ * @deprecated Use Input.renderField instead
17
+ */
18
+ export declare function renderNumberField(field: NumberField): string;
19
+ /**
20
+ * textarea → <textarea>
21
+ * @deprecated Use Textarea.renderField instead
22
+ */
23
+ export declare function renderTextareaField(field: TextareaField): string;
24
+ /**
25
+ * select → <select>
26
+ * @deprecated Use Select.renderField instead
27
+ */
28
+ export declare function renderSelectField(field: SelectField): string;
29
+ /**
30
+ * multi_select → <select multiple>
31
+ * @deprecated Use Select.renderField instead
32
+ */
33
+ export declare function renderMultiSelectField(field: MultiSelectField): string;
34
+ /**
35
+ * combobox → Combobox component container
36
+ * @deprecated Use Combobox.renderField instead
37
+ */
38
+ export declare function renderComboboxField(field: ComboboxField): string;
39
+ /**
40
+ * radio_group → <input type="radio"> × N
41
+ * @deprecated Use RadioButton.renderField instead
42
+ */
43
+ export declare function renderRadioGroupField(field: RadioGroupField): string;
44
+ /**
45
+ * checkbox_group → <input type="checkbox"> × N
46
+ * @deprecated Use Checkbox.renderField instead
47
+ */
48
+ export declare function renderCheckboxGroupField(field: CheckboxGroupField): string;
49
+ /**
50
+ * date_picker → <input type="date">
51
+ * @deprecated Use Input.renderField instead
52
+ */
53
+ export declare function renderDatePickerField(field: DatePickerField): string;
54
+ /**
55
+ * time_picker → <input type="time">
56
+ * @deprecated Use Input.renderField instead
57
+ */
58
+ export declare function renderTimePickerField(field: TimePickerField): string;
59
+ /**
60
+ * duration_picker → カスタム(時間:分 選択UI)
61
+ * @deprecated Use DurationPicker.renderField instead
62
+ */
63
+ export declare function renderDurationPickerField(field: DurationPickerField): string;
64
+ /**
65
+ * duration_input → <input type="number"> + 単位
66
+ * @deprecated Use DurationInput.renderField instead
67
+ */
68
+ export declare function renderDurationInputField(field: DurationInputField): string;
69
+ /**
70
+ * heading → 見出しフィールド
71
+ * @deprecated Use Heading.renderField instead
72
+ */
73
+ export declare function renderHeadingField(field: HeadingField): string;
74
+ /**
75
+ * file_upload → <input type="file">
76
+ */
77
+ export declare function renderFileUploadField(field: FileUploadField): string;
78
+ /**
79
+ * google_map_embed → Google Maps 埋め込みコンポーネント
80
+ */
81
+ export declare function renderGoogleMapEmbedFieldHtml(field: GoogleMapEmbedField): string;
82
+ /**
83
+ * image_uploader → 画像アップローダーコンポーネント
84
+ */
85
+ export declare function renderImageUploaderField(field: ImageUploaderField): string;
86
+ export declare function renderRepeaterFieldStatic(field: RepeaterField): string;
87
+ /**
88
+ * フィールドタイプに応じてレンダリング
89
+ */
90
+ export declare function renderField(field: InputField): string;
91
+ /**
92
+ * 複数のフィールドをレンダリング
93
+ */
94
+ export declare function renderFields(fields: InputField[]): string;
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Form Section Component
3
+ * フォームセクションコンポーネント
4
+ * 統合フォーム内のセクションを構造化して表示する
5
+ */
6
+ import type { FormSection as FormSectionSchema, InputFieldRaw } from '../../types/schema';
7
+ /**
8
+ * フォームセクションの設定
9
+ */
10
+ export interface FormSectionConfig {
11
+ /** セクション名 */
12
+ sectionName: string;
13
+ /** アイコン(HTML文字列またはアイコンクラス) */
14
+ icon?: string;
15
+ /** 公開設定トグルを表示 */
16
+ publishToggle?: boolean;
17
+ /** 初期の公開設定状態 */
18
+ publishToggleInitial?: boolean;
19
+ /** 折りたたみ可能 */
20
+ collapsible?: boolean;
21
+ /** 初期の折りたたみ状態 */
22
+ collapsed?: boolean;
23
+ /** 入力フィールド */
24
+ fields?: InputFieldRaw[];
25
+ /** カスタムコンテンツ(HTML文字列) */
26
+ content?: string;
27
+ /** セクションの説明 */
28
+ description?: string;
29
+ }
30
+ /**
31
+ * フォームセクションの状態
32
+ */
33
+ export interface FormSectionState {
34
+ /** 公開設定状態 */
35
+ isPublished: boolean;
36
+ /** 折りたたみ状態 */
37
+ isCollapsed: boolean;
38
+ /** セクション名 */
39
+ sectionName: string;
40
+ }
41
+ /**
42
+ * フォームセクションのコールバック
43
+ */
44
+ export interface FormSectionCallbacks {
45
+ /** 公開設定変更時 */
46
+ onPublishToggle?: (isPublished: boolean, state: FormSectionState) => void;
47
+ /** 折りたたみ状態変更時 */
48
+ onCollapseToggle?: (isCollapsed: boolean, state: FormSectionState) => void;
49
+ /** フィールドレンダラー */
50
+ renderFields?: (fields: InputFieldRaw[], container: HTMLElement) => void;
51
+ }
52
+ /**
53
+ * フォームセクションコンポーネント
54
+ */
55
+ export declare class FormSection {
56
+ private config;
57
+ private state;
58
+ private callbacks;
59
+ private container;
60
+ private instanceId;
61
+ constructor(config: FormSectionConfig, container: HTMLElement, callbacks?: FormSectionCallbacks);
62
+ /**
63
+ * セクションをレンダリング
64
+ */
65
+ render(): void;
66
+ /**
67
+ * 公開設定を切り替え
68
+ */
69
+ setPublished(isPublished: boolean): void;
70
+ /**
71
+ * 公開設定を取得
72
+ */
73
+ isPublished(): boolean;
74
+ /**
75
+ * 折りたたみ状態を切り替え
76
+ */
77
+ setCollapsed(isCollapsed: boolean): void;
78
+ /**
79
+ * 折りたたみ状態を取得
80
+ */
81
+ isCollapsed(): boolean;
82
+ /**
83
+ * 折りたたみをトグル
84
+ */
85
+ toggleCollapsed(): void;
86
+ /**
87
+ * 現在の状態を取得
88
+ */
89
+ getState(): FormSectionState;
90
+ /**
91
+ * セクション名を取得
92
+ */
93
+ getSectionName(): string;
94
+ /**
95
+ * 初期状態を作成
96
+ */
97
+ private createInitialState;
98
+ /**
99
+ * ヘッダーをレンダリング
100
+ */
101
+ private renderHeader;
102
+ /**
103
+ * コンテンツをレンダリング
104
+ */
105
+ private renderContent;
106
+ }
107
+ /**
108
+ * FormSectionSchemaからFormSectionConfigに変換
109
+ */
110
+ export declare function createConfigFromSchema(schema: FormSectionSchema): FormSectionConfig;
111
+ /**
112
+ * 複数のセクションをレンダリング
113
+ */
114
+ export declare function renderFormSections(sections: FormSectionConfig[], container: HTMLElement, callbacks?: FormSectionCallbacks): FormSection[];
115
+ /**
116
+ * セクション間の区切り線を追加
117
+ */
118
+ export declare function renderFormSectionsWithDividers(sections: FormSectionConfig[], container: HTMLElement, callbacks?: FormSectionCallbacks): FormSection[];