mokkun 0.1.5 → 0.1.6

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 (85) hide show
  1. package/README.md +18 -6
  2. package/bin/cli.mjs +6 -6
  3. package/bin/viewer.html +2 -2
  4. package/dist/mokkun.css +1 -1
  5. package/dist/mokkun.esm.js +4898 -2913
  6. package/dist/mokkun.esm.js.map +1 -1
  7. package/dist/mokkun.js +359 -322
  8. package/dist/mokkun.js.map +1 -1
  9. package/dist/types/lib.d.ts +80 -0
  10. package/dist/types/loader/file-loader.d.ts +114 -0
  11. package/dist/types/loader/index.d.ts +4 -0
  12. package/dist/types/parser/index.d.ts +4 -0
  13. package/dist/types/parser/key-normalizer.d.ts +24 -0
  14. package/dist/types/parser/yaml-parser.d.ts +58 -0
  15. package/dist/types/renderer/action-handler.d.ts +76 -0
  16. package/dist/types/renderer/components/accordion-panel.d.ts +144 -0
  17. package/dist/types/renderer/components/action-buttons.d.ts +183 -0
  18. package/dist/types/renderer/components/alert-banner.d.ts +43 -0
  19. package/dist/types/renderer/components/app-header.d.ts +277 -0
  20. package/dist/types/renderer/components/app-navi.d.ts +167 -0
  21. package/dist/types/renderer/components/badge.d.ts +134 -0
  22. package/dist/types/renderer/components/browser.d.ts +134 -0
  23. package/dist/types/renderer/components/calendar.d.ts +198 -0
  24. package/dist/types/renderer/components/checkbox.d.ts +132 -0
  25. package/dist/types/renderer/components/chip.d.ts +120 -0
  26. package/dist/types/renderer/components/combobox.d.ts +217 -0
  27. package/dist/types/renderer/components/data-table.d.ts +186 -0
  28. package/dist/types/renderer/components/date-range-picker.d.ts +203 -0
  29. package/dist/types/renderer/components/definition-list.d.ts +165 -0
  30. package/dist/types/renderer/components/delete-confirm-dialog.d.ts +151 -0
  31. package/dist/types/renderer/components/dialog/action-dialog.d.ts +61 -0
  32. package/dist/types/renderer/components/dialog/base-dialog.d.ts +125 -0
  33. package/dist/types/renderer/components/dialog/dialog-types.d.ts +96 -0
  34. package/dist/types/renderer/components/disclosure.d.ts +118 -0
  35. package/dist/types/renderer/components/dropdown.d.ts +220 -0
  36. package/dist/types/renderer/components/duration-input.d.ts +154 -0
  37. package/dist/types/renderer/components/duration-picker.d.ts +108 -0
  38. package/dist/types/renderer/components/field-renderer.d.ts +22 -0
  39. package/dist/types/renderer/components/float-area.d.ts +196 -0
  40. package/dist/types/renderer/components/form-fields.d.ts +94 -0
  41. package/dist/types/renderer/components/form-section.d.ts +118 -0
  42. package/dist/types/renderer/components/google-map-embed.d.ts +88 -0
  43. package/dist/types/renderer/components/heading.d.ts +119 -0
  44. package/dist/types/renderer/components/image-uploader.d.ts +271 -0
  45. package/dist/types/renderer/components/index.d.ts +48 -0
  46. package/dist/types/renderer/components/information-panel.d.ts +139 -0
  47. package/dist/types/renderer/components/input.d.ts +222 -0
  48. package/dist/types/renderer/components/layout.d.ts +71 -0
  49. package/dist/types/renderer/components/line-clamp.d.ts +170 -0
  50. package/dist/types/renderer/components/loader.d.ts +104 -0
  51. package/dist/types/renderer/components/notification-bar.d.ts +251 -0
  52. package/dist/types/renderer/components/pagination.d.ts +167 -0
  53. package/dist/types/renderer/components/photo-manager-renderer.d.ts +9 -0
  54. package/dist/types/renderer/components/radio-button-panel.d.ts +152 -0
  55. package/dist/types/renderer/components/radio.d.ts +117 -0
  56. package/dist/types/renderer/components/repeater.d.ts +116 -0
  57. package/dist/types/renderer/components/response-message.d.ts +180 -0
  58. package/dist/types/renderer/components/search-input.d.ts +198 -0
  59. package/dist/types/renderer/components/section-nav.d.ts +151 -0
  60. package/dist/types/renderer/components/segmented-control.d.ts +143 -0
  61. package/dist/types/renderer/components/select.d.ts +98 -0
  62. package/dist/types/renderer/components/status-label.d.ts +146 -0
  63. package/dist/types/renderer/components/stepper.d.ts +123 -0
  64. package/dist/types/renderer/components/tabs.d.ts +185 -0
  65. package/dist/types/renderer/components/textarea.d.ts +173 -0
  66. package/dist/types/renderer/components/timeline.d.ts +146 -0
  67. package/dist/types/renderer/components/toggle.d.ts +109 -0
  68. package/dist/types/renderer/components/tooltip.d.ts +158 -0
  69. package/dist/types/renderer/components/wizard.d.ts +118 -0
  70. package/dist/types/renderer/layouts/index.d.ts +5 -0
  71. package/dist/types/renderer/layouts/shell.d.ts +7 -0
  72. package/dist/types/renderer/layouts/types.d.ts +34 -0
  73. package/dist/types/renderer/screen-renderer.d.ts +53 -0
  74. package/dist/types/renderer/utils/dom.d.ts +29 -0
  75. package/dist/types/renderer/utils/dummy-data.d.ts +13 -0
  76. package/dist/types/renderer/utils/field-helpers.d.ts +90 -0
  77. package/dist/types/renderer/utils/icons.d.ts +13 -0
  78. package/dist/types/renderer/utils/index.d.ts +6 -0
  79. package/dist/types/theme/index.d.ts +6 -0
  80. package/dist/types/theme/theme-manager.d.ts +102 -0
  81. package/dist/types/types/field-renderable.d.ts +40 -0
  82. package/dist/types/types/index.d.ts +6 -0
  83. package/dist/types/types/schema.d.ts +1701 -0
  84. package/dist/types/types/theme.d.ts +111 -0
  85. package/package.json +3 -1
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Pagination Component
3
+ * ページネーションコンポーネント
4
+ *
5
+ * 機能:
6
+ * - ページ番号表示
7
+ * - 前後ボタン
8
+ * - 最初/最後へのジャンプ
9
+ * - ページサイズ選択
10
+ * - 表示件数表示
11
+ * - コンパクト表示モード
12
+ */
13
+ import type { InputField } from '../../types/schema';
14
+ /**
15
+ * ページネーションの状態
16
+ */
17
+ export interface PaginationState {
18
+ /** 現在のページ(1始まり) */
19
+ currentPage: number;
20
+ /** 1ページあたりのアイテム数 */
21
+ pageSize: number;
22
+ /** 総アイテム数 */
23
+ totalItems: number;
24
+ /** 総ページ数 */
25
+ totalPages: number;
26
+ }
27
+ /**
28
+ * ページネーションのコールバック
29
+ */
30
+ export interface PaginationCallbacks {
31
+ /** ページ変更時 */
32
+ onPageChange?: (page: number, state: PaginationState) => void;
33
+ /** ページサイズ変更時 */
34
+ onPageSizeChange?: (pageSize: number, state: PaginationState) => void;
35
+ }
36
+ /**
37
+ * ページネーションの設定
38
+ */
39
+ export interface PaginationConfig {
40
+ /** 総アイテム数 */
41
+ totalItems: number;
42
+ /** 初期ページ(1始まり、デフォルト: 1) */
43
+ initialPage?: number;
44
+ /** 初期ページサイズ(デフォルト: 10) */
45
+ initialPageSize?: number;
46
+ /** ページサイズの選択肢(デフォルト: [10, 25, 50, 100]) */
47
+ pageSizeOptions?: number[];
48
+ /** ページサイズ選択を表示するか(デフォルト: true) */
49
+ showPageSizeSelector?: boolean;
50
+ /** 表示件数を表示するか(デフォルト: true) */
51
+ showItemCount?: boolean;
52
+ /** 最初/最後へのジャンプボタンを表示するか(デフォルト: true) */
53
+ showJumpButtons?: boolean;
54
+ /** ページ番号ボタンの最大表示数(デフォルト: 7) */
55
+ maxPageButtons?: number;
56
+ /** コンパクトモード(デフォルト: false) */
57
+ compact?: boolean;
58
+ /** 位置(デフォルト: 'center') */
59
+ align?: 'left' | 'center' | 'right';
60
+ }
61
+ /**
62
+ * ページネーションコンポーネント
63
+ */
64
+ export declare class Pagination {
65
+ private config;
66
+ private state;
67
+ private callbacks;
68
+ private container;
69
+ private instanceId;
70
+ constructor(container: HTMLElement, config: PaginationConfig, callbacks?: PaginationCallbacks);
71
+ /**
72
+ * ページネーションをレンダリング
73
+ */
74
+ render(): void;
75
+ /**
76
+ * 指定したページへ移動
77
+ */
78
+ goToPage(page: number): void;
79
+ /**
80
+ * 次のページへ移動
81
+ */
82
+ nextPage(): void;
83
+ /**
84
+ * 前のページへ移動
85
+ */
86
+ previousPage(): void;
87
+ /**
88
+ * 最初のページへ移動
89
+ */
90
+ firstPage(): void;
91
+ /**
92
+ * 最後のページへ移動
93
+ */
94
+ lastPage(): void;
95
+ /**
96
+ * ページサイズを設定
97
+ */
98
+ setPageSize(pageSize: number): void;
99
+ /**
100
+ * 総アイテム数を更新
101
+ */
102
+ setTotalItems(totalItems: number): void;
103
+ /**
104
+ * 現在の状態を取得
105
+ */
106
+ getState(): PaginationState;
107
+ /**
108
+ * 現在のページを取得
109
+ */
110
+ getCurrentPage(): number;
111
+ /**
112
+ * ページサイズを取得
113
+ */
114
+ getPageSize(): number;
115
+ /**
116
+ * 表示中のアイテム範囲を取得
117
+ */
118
+ getItemRange(): {
119
+ start: number;
120
+ end: number;
121
+ };
122
+ /**
123
+ * 初期状態を作成
124
+ */
125
+ private createInitialState;
126
+ /**
127
+ * ページ番号を有効範囲内にクランプ
128
+ */
129
+ private clampPage;
130
+ /**
131
+ * ページサイズセレクターをレンダリング
132
+ */
133
+ private renderPageSizeSelector;
134
+ /**
135
+ * ナビゲーションをレンダリング
136
+ */
137
+ private renderNavigation;
138
+ /**
139
+ * ページ番号ボタンをレンダリング
140
+ */
141
+ private renderPageButtons;
142
+ /**
143
+ * 表示するページ番号を計算
144
+ */
145
+ private calculateVisiblePages;
146
+ /**
147
+ * ボタンを作成
148
+ */
149
+ private createButton;
150
+ /**
151
+ * ページ番号ボタンを作成
152
+ */
153
+ private createPageButton;
154
+ /**
155
+ * 表示件数をレンダリング
156
+ */
157
+ private renderItemCount;
158
+ /**
159
+ * PaginationフィールドをHTMLとしてレンダリング(静的メソッド)
160
+ * SSR/初期レンダリング用
161
+ */
162
+ static renderField(field: InputField): string;
163
+ }
164
+ /**
165
+ * Paginationを作成するファクトリ関数
166
+ */
167
+ export declare function createPagination(container: HTMLElement, config: PaginationConfig, callbacks?: PaginationCallbacks): Pagination;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Photo Manager Renderer
3
+ * 写真管理画面のHTML生成(静的レンダリング用)
4
+ */
5
+ import type { PhotoManagerField } from '../../types/schema';
6
+ /**
7
+ * 写真管理フィールドをHTML文字列としてレンダリング
8
+ */
9
+ export declare function renderPhotoManagerField(field: PhotoManagerField): string;
@@ -0,0 +1,152 @@
1
+ /**
2
+ * RadioButtonPanel Component
3
+ * ラジオボタンパネルコンポーネント
4
+ *
5
+ * Card-style radio button group component:
6
+ * - Visual panel/card appearance for each option
7
+ * - Icon and image support
8
+ * - Description text
9
+ * - Disabled state (group and per-option)
10
+ * - Selected state highlighting
11
+ * - Vertical/horizontal/grid layouts
12
+ * - Full ARIA 1.2 compliance with keyboard navigation
13
+ */
14
+ /**
15
+ * ラジオボタンパネルのオプション
16
+ */
17
+ export interface RadioButtonPanelOption {
18
+ /** 値 */
19
+ value: string;
20
+ /** ラベル */
21
+ label: string;
22
+ /** 説明テキスト */
23
+ description?: string;
24
+ /** アイコン(SVG文字列) */
25
+ icon?: string;
26
+ /** 画像URL */
27
+ image?: string;
28
+ /** 無効化 */
29
+ disabled?: boolean;
30
+ }
31
+ /**
32
+ * ラジオボタンパネルの状態
33
+ */
34
+ export interface RadioButtonPanelState {
35
+ /** 選択された値 */
36
+ selectedValue: string | null;
37
+ /** 無効化状態 */
38
+ disabled: boolean;
39
+ /** フォーカスされているオプションのインデックス */
40
+ focusedIndex: number;
41
+ }
42
+ /**
43
+ * ラジオボタンパネルのコールバック
44
+ */
45
+ export interface RadioButtonPanelCallbacks {
46
+ /** 値変更時(値と状態を受け取る) */
47
+ onChange?: (value: string, state: RadioButtonPanelState) => void;
48
+ /** 値変更時(値のみを受け取る) */
49
+ onValueChange?: (value: string) => void;
50
+ }
51
+ /**
52
+ * ラジオボタンパネルの設定
53
+ */
54
+ export interface RadioButtonPanelConfig {
55
+ /** name属性(フォーム用、必須) */
56
+ name: string;
57
+ /** オプション配列 */
58
+ options: RadioButtonPanelOption[];
59
+ /** 初期選択値 */
60
+ defaultValue?: string;
61
+ /** レイアウト方向 */
62
+ direction?: 'horizontal' | 'vertical';
63
+ /** グリッドカラム数(horizontal時のみ) */
64
+ columns?: 1 | 2 | 3 | 4;
65
+ /** サイズ */
66
+ size?: 'small' | 'medium' | 'large';
67
+ /** 無効化(グループ全体) */
68
+ disabled?: boolean;
69
+ /** 必須 */
70
+ required?: boolean;
71
+ /** 幅 */
72
+ width?: string | number;
73
+ }
74
+ /**
75
+ * ラジオボタンパネルコンポーネント
76
+ */
77
+ export declare class RadioButtonPanel {
78
+ private config;
79
+ private state;
80
+ private callbacks;
81
+ private container;
82
+ private optionElements;
83
+ constructor(container: HTMLElement, config: RadioButtonPanelConfig, callbacks?: RadioButtonPanelCallbacks);
84
+ /**
85
+ * ラジオボタンパネルをレンダリング
86
+ */
87
+ render(): void;
88
+ /**
89
+ * 値を設定
90
+ */
91
+ setValue(value: string | null): void;
92
+ /**
93
+ * 無効化状態を設定
94
+ */
95
+ setDisabled(disabled: boolean): void;
96
+ /**
97
+ * 現在の状態を取得
98
+ */
99
+ getState(): RadioButtonPanelState;
100
+ /**
101
+ * 現在の値を取得
102
+ */
103
+ getValue(): string | null;
104
+ /**
105
+ * 無効化されているかどうかを取得
106
+ */
107
+ isDisabled(): boolean;
108
+ /**
109
+ * 初期状態を作成
110
+ */
111
+ private createInitialState;
112
+ /**
113
+ * オプションをレンダリング
114
+ */
115
+ private renderOption;
116
+ /**
117
+ * メディア(アイコン/画像)をレンダリング
118
+ */
119
+ private renderMedia;
120
+ /**
121
+ * コンテンツ(ラベル + 説明)をレンダリング
122
+ */
123
+ private renderContent;
124
+ /**
125
+ * インジケーター(ラジオ円)をレンダリング
126
+ */
127
+ private renderIndicator;
128
+ /**
129
+ * オプションクリックを処理
130
+ */
131
+ private handleOptionClick;
132
+ /**
133
+ * キーボードナビゲーションを処理
134
+ */
135
+ private handleKeyboardNavigation;
136
+ /**
137
+ * 次のオプションにフォーカス
138
+ */
139
+ private focusNextOption;
140
+ /**
141
+ * 前のオプションにフォーカス
142
+ */
143
+ private focusPreviousOption;
144
+ /**
145
+ * 指定されたインデックスのオプションにフォーカス
146
+ */
147
+ private focusOption;
148
+ }
149
+ /**
150
+ * RadioButtonPanelを作成するファクトリ関数
151
+ */
152
+ export declare function createRadioButtonPanel(container: HTMLElement, config: RadioButtonPanelConfig, callbacks?: RadioButtonPanelCallbacks): RadioButtonPanel;
@@ -0,0 +1,117 @@
1
+ /**
2
+ * RadioButton Component
3
+ * ラジオボタンコンポーネント
4
+ *
5
+ *
6
+ * - `checked` / `defaultChecked` for state
7
+ * - `data-state="checked|unchecked"` for styling
8
+ * - `error` state with error messages
9
+ * - `role="radio"` with `aria-checked` for accessibility
10
+ */
11
+ import type { RadioGroupField } from '../../types/schema';
12
+ /**
13
+ * ラジオボタンの状態
14
+ */
15
+ export interface RadioButtonState {
16
+ /** 選択状態 */
17
+ checked: boolean;
18
+ /** 無効化状態 */
19
+ disabled: boolean;
20
+ }
21
+ /**
22
+ * ラジオボタンのコールバック
23
+ */
24
+ export interface RadioButtonCallbacks {
25
+ /** 状態変更時 */
26
+ onChange?: (checked: boolean, state: RadioButtonState) => void;
27
+ /** 選択状態変更時 */
28
+ onCheckedChange?: (checked: boolean) => void;
29
+ }
30
+ /**
31
+ * ラジオボタンの設定
32
+ */
33
+ export interface RadioButtonConfig {
34
+ /** 初期選択状態 */
35
+ defaultChecked?: boolean;
36
+ /** 無効化 */
37
+ disabled?: boolean;
38
+ /** 選択時ラベル */
39
+ checkedLabel?: string;
40
+ /** 非選択時ラベル */
41
+ uncheckedLabel?: string;
42
+ /** サイズ */
43
+ size?: 'small' | 'medium' | 'large';
44
+ /** name属性(グループ化用) */
45
+ name?: string;
46
+ /** value属性 */
47
+ value?: string;
48
+ /** ラベル位置 */
49
+ labelPosition?: 'left' | 'right';
50
+ }
51
+ /**
52
+ * ラジオボタンコンポーネント
53
+ */
54
+ export declare class RadioButton {
55
+ private config;
56
+ private state;
57
+ private callbacks;
58
+ private container;
59
+ private instanceId;
60
+ constructor(container: HTMLElement, config?: RadioButtonConfig, callbacks?: RadioButtonCallbacks);
61
+ /**
62
+ * ラジオボタンをレンダリング
63
+ */
64
+ render(): void;
65
+ /**
66
+ * 選択状態を設定
67
+ */
68
+ setChecked(checked: boolean): void;
69
+ /**
70
+ * 無効化状態を設定
71
+ */
72
+ setDisabled(disabled: boolean): void;
73
+ /**
74
+ * 現在の状態を取得
75
+ */
76
+ getState(): RadioButtonState;
77
+ /**
78
+ * 選択状態を取得
79
+ */
80
+ isChecked(): boolean;
81
+ /**
82
+ * 無効化されているかどうかを取得
83
+ */
84
+ isDisabled(): boolean;
85
+ /**
86
+ * value属性を取得
87
+ */
88
+ getValue(): string | undefined;
89
+ /**
90
+ * name属性を取得
91
+ */
92
+ getName(): string | undefined;
93
+ /**
94
+ * 初期状態を作成
95
+ */
96
+ private createInitialState;
97
+ /**
98
+ * ラジオボタンをレンダリング
99
+ */
100
+ private renderRadio;
101
+ /**
102
+ * ラベルをレンダリング
103
+ */
104
+ private renderLabel;
105
+ /**
106
+ * ラジオグループフィールドをHTMLとしてレンダリング(静的メソッド)
107
+ * SSR/初期レンダリング用
108
+ *
109
+ * @param field - ラジオグループフィールド定義
110
+ * @returns 生成されたHTML文字列
111
+ */
112
+ static renderField(field: RadioGroupField): string;
113
+ }
114
+ /**
115
+ * RadioButtonを作成するファクトリ関数
116
+ */
117
+ export declare function createRadioButton(container: HTMLElement, config?: RadioButtonConfig, callbacks?: RadioButtonCallbacks): RadioButton;
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Repeater Component
3
+ * 動的フィールドグループ(リピーター)
4
+ */
5
+ import type { RepeaterField, InputField } from '../../types';
6
+ /**
7
+ * リピーターアイテムの状態
8
+ */
9
+ export interface RepeaterItem {
10
+ /** アイテムID */
11
+ id: string;
12
+ /** アイテムのデータ */
13
+ data: Record<string, unknown>;
14
+ /** 展開状態 */
15
+ expanded: boolean;
16
+ }
17
+ /**
18
+ * リピーターの状態
19
+ */
20
+ export interface RepeaterState {
21
+ /** アイテム一覧 */
22
+ items: RepeaterItem[];
23
+ /** ネストレベル */
24
+ nestLevel: number;
25
+ }
26
+ /**
27
+ * リピーターのコールバック
28
+ */
29
+ export interface RepeaterCallbacks {
30
+ /** アイテム追加時 */
31
+ onAdd?: (item: RepeaterItem, state: RepeaterState) => void;
32
+ /** アイテム削除時 */
33
+ onRemove?: (itemId: string, state: RepeaterState) => void;
34
+ /** 並べ替え時 */
35
+ onReorder?: (items: RepeaterItem[]) => void;
36
+ /** データ変更時 */
37
+ onChange?: (state: RepeaterState) => void;
38
+ /** フィールドレンダラー */
39
+ renderFields?: (fields: InputField[], container: HTMLElement, itemId: string, nestLevel: number) => void;
40
+ }
41
+ /**
42
+ * リピーターコンポーネント
43
+ */
44
+ export declare class Repeater {
45
+ private config;
46
+ private state;
47
+ private callbacks;
48
+ private container;
49
+ /** 最大ネストレベル(2階層まで) */
50
+ private static readonly MAX_NEST_LEVEL;
51
+ constructor(config: RepeaterField, container: HTMLElement, callbacks?: RepeaterCallbacks, nestLevel?: number);
52
+ /**
53
+ * リピーターをレンダリング
54
+ */
55
+ render(): void;
56
+ /**
57
+ * アイテムを追加
58
+ */
59
+ addItem(withDummyData?: boolean): RepeaterItem | null;
60
+ /**
61
+ * アイテムを削除
62
+ */
63
+ removeItem(itemId: string): boolean;
64
+ /**
65
+ * アイテムデータを更新
66
+ */
67
+ updateItemData(itemId: string, data: Record<string, unknown>): void;
68
+ /**
69
+ * アイテムの展開/折りたたみ
70
+ */
71
+ toggleItemExpanded(itemId: string): void;
72
+ /**
73
+ * アイテムを上へ移動
74
+ */
75
+ moveItemUp(itemId: string): boolean;
76
+ /**
77
+ * アイテムを下へ移動
78
+ */
79
+ moveItemDown(itemId: string): boolean;
80
+ /**
81
+ * 現在の状態を取得
82
+ */
83
+ getState(): RepeaterState;
84
+ /**
85
+ * 値を取得(フォーム送信用)
86
+ */
87
+ getValue(): Record<string, unknown>[];
88
+ /**
89
+ * ダミーデータで初期化
90
+ */
91
+ initWithDummyData(count?: number): void;
92
+ /**
93
+ * 初期状態を作成
94
+ */
95
+ private createInitialState;
96
+ /**
97
+ * ヘッダーをレンダリング
98
+ */
99
+ private renderHeader;
100
+ /**
101
+ * アイテムをレンダリング
102
+ */
103
+ private renderItem;
104
+ /**
105
+ * フィールドプレースホルダーをレンダリング(renderFieldsコールバックがない場合)
106
+ */
107
+ private renderFieldPlaceholder;
108
+ /**
109
+ * 簡易入力要素を作成
110
+ */
111
+ private createSimpleInput;
112
+ /**
113
+ * フッター(追加ボタン)をレンダリング
114
+ */
115
+ private renderFooter;
116
+ }