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,186 @@
1
+ /**
2
+ * Data Table Component
3
+ * データテーブル(一覧表示)コンポーネント
4
+ */
5
+ import type { DataTableField, DataTableRow, DataTableSortConfig } from '../../types/schema';
6
+ /**
7
+ * データテーブルの状態
8
+ */
9
+ export interface DataTableState {
10
+ /** 現在のデータ */
11
+ data: DataTableRow[];
12
+ /** 元のデータ(フィルタリング・ソート前) */
13
+ originalData: DataTableRow[];
14
+ /** 現在のソート設定 */
15
+ sort: DataTableSortConfig | null;
16
+ /** 現在のフィルター値 */
17
+ filterValues: Record<string, unknown>;
18
+ /** 選択された行ID */
19
+ selectedRowIds: Set<string | number>;
20
+ /** 現在のページ(0始まり) */
21
+ currentPage: number;
22
+ /** 1ページあたりの行数 */
23
+ pageSize: number;
24
+ /** 総件数 */
25
+ totalCount: number;
26
+ /** ローディング状態 */
27
+ isLoading: boolean;
28
+ /** 折りたたまれたグループ名のセット */
29
+ collapsedGroups: Set<string>;
30
+ /** カラム幅の状態(リサイズ用) */
31
+ columnWidths: Record<string, number>;
32
+ }
33
+ /**
34
+ * データテーブルのコールバック
35
+ */
36
+ export interface DataTableCallbacks {
37
+ /** ソート変更時 */
38
+ onSortChange?: (sort: DataTableSortConfig, state: DataTableState) => void;
39
+ /** フィルター変更時 */
40
+ onFilterChange?: (filters: Record<string, unknown>, state: DataTableState) => void;
41
+ /** 行選択時 */
42
+ onSelectionChange?: (selectedIds: Set<string | number>, state: DataTableState) => void;
43
+ /** 行アクション実行時 */
44
+ onRowAction?: (actionId: string, row: DataTableRow, state: DataTableState) => void;
45
+ /** ページ変更時 */
46
+ onPageChange?: (page: number, state: DataTableState) => void;
47
+ /** ページサイズ変更時 */
48
+ onPageSizeChange?: (pageSize: number, state: DataTableState) => void;
49
+ /** グループ展開/折りたたみ時 */
50
+ onGroupToggle?: (groupName: string, isExpanded: boolean, state: DataTableState) => void;
51
+ /** 列リサイズ時 */
52
+ onColumnResize?: (columnId: string, width: number, state: DataTableState) => void;
53
+ }
54
+ /**
55
+ * データテーブルコンポーネント
56
+ */
57
+ export declare class DataTable {
58
+ private config;
59
+ private container;
60
+ private callbacks;
61
+ private state;
62
+ private tableId;
63
+ private boundHandleClick;
64
+ private boundHandleChange;
65
+ private boundHandleKeypress;
66
+ private boundHandleMouseDown;
67
+ private boundHandleMouseMove;
68
+ private boundHandleMouseUp;
69
+ private resizingColumnId;
70
+ private resizeStartX;
71
+ private resizeStartWidth;
72
+ constructor(config: DataTableField, container: HTMLElement, callbacks?: DataTableCallbacks);
73
+ /**
74
+ * 現在の状態を取得
75
+ */
76
+ getState(): DataTableState;
77
+ /**
78
+ * データを設定
79
+ */
80
+ setData(data: DataTableRow[], totalCount?: number): void;
81
+ /**
82
+ * データ変換(フィルター、ソート、ページネーション)を適用
83
+ */
84
+ private applyDataTransformations;
85
+ /**
86
+ * ソートを設定
87
+ */
88
+ setSort(column: string, direction: 'asc' | 'desc'): void;
89
+ /**
90
+ * フィルター値を設定
91
+ */
92
+ setFilterValues(values: Record<string, unknown>): void;
93
+ /**
94
+ * フィルターをリセット
95
+ */
96
+ resetFilters(): void;
97
+ /**
98
+ * 行を選択
99
+ */
100
+ selectRow(rowId: string | number): void;
101
+ /**
102
+ * 全行を選択/解除
103
+ */
104
+ selectAll(selected: boolean): void;
105
+ /**
106
+ * 選択された行を取得
107
+ */
108
+ getSelectedRows(): DataTableRow[];
109
+ /**
110
+ * ページを変更
111
+ */
112
+ setPage(page: number): void;
113
+ /**
114
+ * ページサイズを変更
115
+ */
116
+ setPageSize(pageSize: number): void;
117
+ /**
118
+ * ローディング状態を設定
119
+ */
120
+ setLoading(isLoading: boolean): void;
121
+ /**
122
+ * コンポーネントをレンダリング
123
+ */
124
+ render(): void;
125
+ /**
126
+ * イベントリスナーを削除(メモリリーク防止)
127
+ */
128
+ private detachEventListeners;
129
+ /**
130
+ * イベントリスナーをアタッチ(イベント委譲パターン)
131
+ */
132
+ private attachEventListeners;
133
+ /**
134
+ * クリックイベントハンドラー(イベント委譲)
135
+ */
136
+ private handleClick;
137
+ /**
138
+ * 変更イベントハンドラー(イベント委譲)
139
+ */
140
+ private handleChange;
141
+ /**
142
+ * キープレスイベントハンドラー(イベント委譲)
143
+ */
144
+ private handleKeypress;
145
+ /**
146
+ * グループを展開/折りたたみ
147
+ */
148
+ toggleGroup(groupName: string): void;
149
+ /**
150
+ * 全グループを展開
151
+ */
152
+ expandAllGroups(): void;
153
+ /**
154
+ * 全グループを折りたたむ
155
+ */
156
+ collapseAllGroups(): void;
157
+ /**
158
+ * カラム幅を設定
159
+ */
160
+ setColumnWidth(columnId: string, width: number): void;
161
+ /**
162
+ * マウスダウンイベントハンドラー(リサイズ開始)
163
+ */
164
+ private handleMouseDown;
165
+ /**
166
+ * マウスムーブイベントハンドラー(リサイズ中)
167
+ */
168
+ private handleMouseMove;
169
+ /**
170
+ * マウスアップイベントハンドラー(リサイズ終了)
171
+ */
172
+ private handleMouseUp;
173
+ /**
174
+ * コンポーネントを破棄(クリーンアップ)
175
+ */
176
+ destroy(): void;
177
+ /**
178
+ * 入力からフィルター値を適用
179
+ */
180
+ private applyFiltersFromInputs;
181
+ }
182
+ /**
183
+ * データテーブルフィールドを静的HTMLとしてレンダリング
184
+ * form-fields.ts から呼び出される
185
+ */
186
+ export declare function renderDataTableField(field: DataTableField): string;
@@ -0,0 +1,203 @@
1
+ /**
2
+ * DateRangePicker Component
3
+ * 日付範囲を選択するためのコンポーネント
4
+ *
5
+ * Features:
6
+ * - 開始日・終了日の選択
7
+ * - プリセット (Last 7 days, Last 30 days等)
8
+ * - カレンダーUI(デュアルカレンダー表示)
9
+ * - キーボードナビゲーション
10
+ */
11
+ /**
12
+ * 日付範囲
13
+ */
14
+ export interface DateRange {
15
+ /** 開始日 */
16
+ from: Date | null;
17
+ /** 終了日 */
18
+ to: Date | null;
19
+ }
20
+ /**
21
+ * プリセット項目
22
+ */
23
+ export interface DateRangePreset {
24
+ /** プリセットID */
25
+ id: string;
26
+ /** 表示ラベル */
27
+ label: string;
28
+ /** 範囲を計算する関数 */
29
+ getRange: () => DateRange;
30
+ }
31
+ /**
32
+ * DateRangePickerの状態
33
+ */
34
+ export interface DateRangePickerState {
35
+ /** 現在選択されている日付範囲 */
36
+ value: DateRange;
37
+ /** ドロップダウンの開閉状態 */
38
+ isOpen: boolean;
39
+ /** 左カレンダーの表示月 */
40
+ leftDisplayedMonth: Date;
41
+ /** 右カレンダーの表示月 */
42
+ rightDisplayedMonth: Date;
43
+ /** 範囲選択中の仮開始日 */
44
+ selectionStart: Date | null;
45
+ /** ホバー中の日付 */
46
+ hoveredDate: Date | null;
47
+ /** 無効化状態 */
48
+ disabled: boolean;
49
+ /** 選択中のプリセットID */
50
+ selectedPresetId: string | null;
51
+ }
52
+ /**
53
+ * DateRangePickerのコールバック
54
+ */
55
+ export interface DateRangePickerCallbacks {
56
+ /** 日付範囲変更時 */
57
+ onChange: (range: DateRange, presetId: string | null, state: DateRangePickerState) => void;
58
+ /** ドロップダウン開閉時 */
59
+ onOpenChange?: (isOpen: boolean, state: DateRangePickerState) => void;
60
+ /** 適用ボタンクリック時 */
61
+ onApply?: (range: DateRange, state: DateRangePickerState) => void;
62
+ /** キャンセルボタンクリック時 */
63
+ onCancel?: (state: DateRangePickerState) => void;
64
+ }
65
+ /**
66
+ * DateRangePickerの設定
67
+ */
68
+ export interface DateRangePickerConfig {
69
+ /** 初期選択日付範囲 */
70
+ value?: DateRange;
71
+ /** 選択可能な日付範囲の開始日 */
72
+ minDate?: Date;
73
+ /** 選択可能な日付範囲の終了日 */
74
+ maxDate?: Date;
75
+ /** 無効化 */
76
+ disabled?: boolean;
77
+ /** プリセット一覧 */
78
+ presets?: DateRangePreset[];
79
+ /** プリセットを表示するかどうか */
80
+ showPresets?: boolean;
81
+ /** 週の開始曜日 (0: 日曜, 1: 月曜) */
82
+ weekStartsOn?: 0 | 1;
83
+ /** ロケール */
84
+ locale?: string;
85
+ /** トリガーのプレースホルダー */
86
+ placeholder?: string;
87
+ /** 日付フォーマット関数 */
88
+ formatDate?: (date: Date) => string;
89
+ /** 適用ボタンを表示するか */
90
+ showApplyButton?: boolean;
91
+ /** キャンセルボタンを表示するか */
92
+ showCancelButton?: boolean;
93
+ }
94
+ /**
95
+ * デフォルトのプリセット
96
+ */
97
+ export declare function getDefaultPresets(): DateRangePreset[];
98
+ /**
99
+ * DateRangePickerコンポーネント
100
+ */
101
+ export declare class DateRangePicker {
102
+ private config;
103
+ private state;
104
+ private callbacks;
105
+ private container;
106
+ private instanceId;
107
+ private triggerElement;
108
+ private dropdownElement;
109
+ private clickOutsideHandler;
110
+ private keyboardHandler;
111
+ private savedValue;
112
+ constructor(container: HTMLElement, config: DateRangePickerConfig | undefined, callbacks: DateRangePickerCallbacks);
113
+ /**
114
+ * コンポーネントをレンダリング
115
+ */
116
+ render(): void;
117
+ /**
118
+ * 日付範囲を設定
119
+ */
120
+ setValue(value: DateRange): void;
121
+ /**
122
+ * 日付範囲を取得
123
+ */
124
+ getValue(): DateRange;
125
+ /**
126
+ * 開閉状態を切り替え
127
+ */
128
+ toggle(): void;
129
+ /**
130
+ * 開く
131
+ */
132
+ open(): void;
133
+ /**
134
+ * 閉じる
135
+ */
136
+ close(): void;
137
+ /**
138
+ * 開閉状態を設定
139
+ */
140
+ setOpen(isOpen: boolean): void;
141
+ /**
142
+ * 無効化状態を設定
143
+ */
144
+ setDisabled(disabled: boolean): void;
145
+ /**
146
+ * 状態を取得
147
+ */
148
+ getState(): DateRangePickerState;
149
+ /**
150
+ * 破棄
151
+ */
152
+ destroy(): void;
153
+ private createInitialState;
154
+ private updateDisplayedMonths;
155
+ private renderTrigger;
156
+ private renderDropdown;
157
+ private renderPresets;
158
+ private renderCalendar;
159
+ private renderCalendarHeader;
160
+ private renderCalendarGrid;
161
+ private renderWeekdayHeader;
162
+ private renderWeekRow;
163
+ private renderDateCell;
164
+ private renderFooter;
165
+ private handlePresetClick;
166
+ private handleDateClick;
167
+ private handleDateHover;
168
+ private handleDateLeave;
169
+ private updateHoverStyles;
170
+ private handlePrevMonth;
171
+ private handleNextMonth;
172
+ private handleApply;
173
+ private handleCancel;
174
+ private handleClickOutside;
175
+ private handleKeyboard;
176
+ private attachEventListeners;
177
+ private detachEventListeners;
178
+ private normalizeDate;
179
+ private getFirstDayOfMonth;
180
+ private getCalendarWeeks;
181
+ private getWeekdayLabels;
182
+ private formatMonthYear;
183
+ private formatDateFull;
184
+ private formatDateISO;
185
+ private formatDate;
186
+ private formatRangeLabel;
187
+ private isToday;
188
+ private isDateDisabled;
189
+ private isDateSelected;
190
+ private isRangeStart;
191
+ private isRangeEnd;
192
+ private isInRange;
193
+ private isHovered;
194
+ private isInHoverRange;
195
+ private getCalendarIcon;
196
+ private getChevronLeftIcon;
197
+ private getChevronRightIcon;
198
+ private getChevronDownIcon;
199
+ }
200
+ /**
201
+ * DateRangePickerコンポーネントを作成
202
+ */
203
+ export declare function createDateRangePicker(container: HTMLElement, config: DateRangePickerConfig | undefined, callbacks: DateRangePickerCallbacks): DateRangePicker;
@@ -0,0 +1,165 @@
1
+ /**
2
+ * DefinitionList Component
3
+ * 定義リストコンポーネント
4
+ *
5
+ *
6
+ * - 水平/垂直レイアウト
7
+ * - ラベル幅調整
8
+ * - グループ化
9
+ * - レスポンシブ対応
10
+ * - maxColumns設定
11
+ * - セマンティックHTML(dl/dt/dd)
12
+ */
13
+ import type { InputField } from '../../types/schema';
14
+ /**
15
+ * 定義リストのアイテム
16
+ */
17
+ export interface DefinitionListItem {
18
+ /** 用語(ラベル/キー) */
19
+ term: string;
20
+ /** 説明(値) */
21
+ description: string | string[] | null;
22
+ /** アイテム固有の全幅表示 */
23
+ fullWidth?: boolean;
24
+ /** アイテム固有のカラム数 */
25
+ maxColumns?: number;
26
+ /** カスタムクラス */
27
+ className?: string;
28
+ }
29
+ /**
30
+ * 定義リストのグループ
31
+ */
32
+ export interface DefinitionListGroup {
33
+ /** グループタイトル */
34
+ title: string;
35
+ /** グループ内のアイテム */
36
+ items: DefinitionListItem[];
37
+ /** グループ固有のレイアウト */
38
+ layout?: 'horizontal' | 'vertical';
39
+ /** グループ固有のカラム数 */
40
+ maxColumns?: number;
41
+ }
42
+ /**
43
+ * 定義リストの状態
44
+ */
45
+ export interface DefinitionListState {
46
+ /** 現在のアイテム */
47
+ items: DefinitionListItem[];
48
+ /** 現在のグループ(グループ化時) */
49
+ groups: DefinitionListGroup[];
50
+ /** グループ化モード */
51
+ isGrouped: boolean;
52
+ }
53
+ /**
54
+ * 定義リストのコールバック
55
+ */
56
+ export interface DefinitionListCallbacks {
57
+ /** アイテムクリック時 */
58
+ onItemClick?: (item: DefinitionListItem, index: number) => void;
59
+ /** グループクリック時 */
60
+ onGroupClick?: (group: DefinitionListGroup, index: number) => void;
61
+ }
62
+ /**
63
+ * 用語のスタイルタイプ
64
+ */
65
+ export type TermStyleType = 'blockTitle' | 'subBlockTitle' | 'subSubBlockTitle';
66
+ /**
67
+ * 定義リストの設定
68
+ */
69
+ export interface DefinitionListConfig {
70
+ /** アイテム配列(フラットリスト用) */
71
+ items?: DefinitionListItem[];
72
+ /** グループ配列(グループ化リスト用) */
73
+ groups?: DefinitionListGroup[];
74
+ /** レイアウト方向(デフォルト: horizontal) */
75
+ layout?: 'horizontal' | 'vertical';
76
+ /** 最大カラム数(デフォルト: 自動) */
77
+ maxColumns?: 1 | 2 | 3 | 4;
78
+ /** 用語(ラベル)の幅 */
79
+ termWidth?: string | number;
80
+ /** 用語のスタイルタイプ */
81
+ termStyleType?: TermStyleType;
82
+ /** アイテム間のギャップ */
83
+ gap?: string | number;
84
+ /** ボーダーを表示 */
85
+ bordered?: boolean;
86
+ /** ストライプ表示 */
87
+ striped?: boolean;
88
+ /** コンパクト表示 */
89
+ compact?: boolean;
90
+ /** クリック可能 */
91
+ clickable?: boolean;
92
+ /** 空の値の表示テキスト */
93
+ emptyText?: string;
94
+ }
95
+ /**
96
+ * 定義リストコンポーネント
97
+ */
98
+ export declare class DefinitionList {
99
+ private config;
100
+ private state;
101
+ private callbacks;
102
+ private container;
103
+ constructor(container: HTMLElement, config?: DefinitionListConfig, callbacks?: DefinitionListCallbacks);
104
+ /**
105
+ * 定義リストをレンダリング
106
+ */
107
+ render(): void;
108
+ /**
109
+ * アイテムを設定
110
+ */
111
+ setItems(items: DefinitionListItem[]): void;
112
+ /**
113
+ * グループを設定
114
+ */
115
+ setGroups(groups: DefinitionListGroup[]): void;
116
+ /**
117
+ * アイテムを追加
118
+ */
119
+ addItem(item: DefinitionListItem): void;
120
+ /**
121
+ * アイテムを削除
122
+ */
123
+ removeItem(index: number): void;
124
+ /**
125
+ * アイテムを更新
126
+ */
127
+ updateItem(index: number, item: Partial<DefinitionListItem>): void;
128
+ /**
129
+ * 現在の状態を取得
130
+ */
131
+ getState(): Readonly<DefinitionListState>;
132
+ /**
133
+ * コンポーネントを破棄
134
+ */
135
+ destroy(): void;
136
+ /**
137
+ * 初期状態を作成
138
+ */
139
+ private createInitialState;
140
+ /**
141
+ * カスタムスタイルを適用
142
+ */
143
+ private applyCustomStyles;
144
+ /**
145
+ * グループをレンダリング
146
+ */
147
+ private renderGroups;
148
+ /**
149
+ * 単一のグループをレンダリング
150
+ */
151
+ private renderGroup;
152
+ /**
153
+ * アイテムリストをレンダリング
154
+ */
155
+ private renderItems;
156
+ /**
157
+ * 単一のアイテムをレンダリング(dt + dd のペア)
158
+ */
159
+ private renderItem;
160
+ static renderField(field: InputField): string;
161
+ }
162
+ /**
163
+ * 定義リストを作成
164
+ */
165
+ export declare function createDefinitionList(container: HTMLElement, config?: DefinitionListConfig, callbacks?: DefinitionListCallbacks): DefinitionList;
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Delete Confirm Dialog Component
3
+ * 削除確認ダイアログ - 依存データの影響を表示
4
+ */
5
+ import type { InputField } from '../../types/schema';
6
+ /**
7
+ * 依存データの情報
8
+ */
9
+ export interface DependencyInfo {
10
+ /** 依存データのタイプ(例:spaces, reservations) */
11
+ type: string;
12
+ /** 表示ラベル */
13
+ label: string;
14
+ /** 件数 */
15
+ count: number;
16
+ }
17
+ /**
18
+ * 削除確認ダイアログの設定
19
+ */
20
+ export interface DeleteConfirmDialogConfig {
21
+ /** ダイアログタイトル */
22
+ title: string;
23
+ /** 削除対象の名前(例:施設名) */
24
+ targetName: string;
25
+ /** 削除対象のタイプ(例:施設) */
26
+ targetType?: string;
27
+ /** 依存データの情報 */
28
+ dependencies?: DependencyInfo[];
29
+ /** 警告メッセージ */
30
+ warningMessage?: string;
31
+ /** 確認ボタンのラベル */
32
+ confirmLabel?: string;
33
+ /** キャンセルボタンのラベル */
34
+ cancelLabel?: string;
35
+ /** 危険なアクションとしてスタイリング */
36
+ danger?: boolean;
37
+ }
38
+ /**
39
+ * ダイアログのコールバック
40
+ */
41
+ export interface DeleteConfirmDialogCallbacks {
42
+ /** 削除確認時 */
43
+ onConfirm?: () => void;
44
+ /** キャンセル時 */
45
+ onCancel?: () => void;
46
+ /** ダイアログクローズ時 */
47
+ onClose?: () => void;
48
+ }
49
+ /**
50
+ * ダイアログの状態
51
+ */
52
+ export interface DeleteConfirmDialogState {
53
+ /** ダイアログが開いているか */
54
+ isOpen: boolean;
55
+ /** フォーカスを戻す要素 */
56
+ previouslyFocusedElement: Element | null;
57
+ }
58
+ /**
59
+ * 削除確認ダイアログコンポーネント
60
+ */
61
+ export declare class DeleteConfirmDialog {
62
+ private config;
63
+ private callbacks;
64
+ private state;
65
+ private dialogElement;
66
+ private overlayElement;
67
+ private readonly dialogId;
68
+ private boundKeydownHandler;
69
+ constructor(config: DeleteConfirmDialogConfig, callbacks?: DeleteConfirmDialogCallbacks);
70
+ /**
71
+ * ダイアログを開く
72
+ */
73
+ open(): void;
74
+ /**
75
+ * ダイアログを閉じる
76
+ */
77
+ close(): void;
78
+ /**
79
+ * 設定を更新
80
+ */
81
+ updateConfig(config: Partial<DeleteConfirmDialogConfig>): void;
82
+ /**
83
+ * 現在の状態を取得
84
+ */
85
+ getState(): DeleteConfirmDialogState;
86
+ /**
87
+ * ダイアログ要素を取得(テスト用)
88
+ */
89
+ getDialogElement(): HTMLElement | null;
90
+ /**
91
+ * ダイアログをレンダリング
92
+ */
93
+ private render;
94
+ /**
95
+ * ヘッダーをレンダリング
96
+ */
97
+ private renderHeader;
98
+ /**
99
+ * ボディをレンダリング
100
+ */
101
+ private renderBody;
102
+ /**
103
+ * 依存データセクションをレンダリング
104
+ */
105
+ private renderDependencies;
106
+ /**
107
+ * フッターをレンダリング
108
+ */
109
+ private renderFooter;
110
+ /**
111
+ * イベントリスナーを設定
112
+ */
113
+ private setupEventListeners;
114
+ /**
115
+ * イベントリスナーを削除
116
+ */
117
+ private removeEventListeners;
118
+ /**
119
+ * キーボードイベントハンドラ
120
+ */
121
+ private handleKeydown;
122
+ /**
123
+ * Tab キーの処理(フォーカストラップ)
124
+ */
125
+ private handleTabKey;
126
+ /**
127
+ * フォーカス可能な要素を取得
128
+ */
129
+ private getFocusableElements;
130
+ /**
131
+ * フォーカスをダイアログ内に設定
132
+ */
133
+ private trapFocus;
134
+ /**
135
+ * 確認ボタンクリック時
136
+ */
137
+ private handleConfirm;
138
+ /**
139
+ * キャンセルボタンクリック時
140
+ */
141
+ private handleCancel;
142
+ /**
143
+ * ダイアログ要素を破棄
144
+ */
145
+ private destroy;
146
+ /**
147
+ * HTML特殊文字をエスケープ
148
+ */
149
+ private escapeHtml;
150
+ static renderField(field: InputField): string;
151
+ }