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.
- package/README.md +18 -6
- package/bin/cli.mjs +6 -6
- package/bin/viewer.html +78 -3
- package/dist/example.html +225 -0
- package/dist/mokkun.css +1 -1
- package/dist/mokkun.esm.js +14476 -9626
- package/dist/mokkun.esm.js.map +1 -1
- package/dist/mokkun.js +761 -363
- package/dist/mokkun.js.map +1 -1
- package/dist/types/lib.d.ts +109 -0
- package/dist/types/loader/file-loader.d.ts +118 -0
- package/dist/types/loader/index.d.ts +4 -0
- package/dist/types/parser/index.d.ts +5 -0
- package/dist/types/parser/key-normalizer.d.ts +24 -0
- package/dist/types/parser/v2/compile-expand.d.ts +23 -0
- package/dist/types/parser/v2/compile-field.d.ts +28 -0
- package/dist/types/parser/v2/compile-section.d.ts +6 -0
- package/dist/types/parser/v2/compile-v2.d.ts +14 -0
- package/dist/types/parser/v2/compile-warnings.d.ts +17 -0
- package/dist/types/parser/v2/file-spec.d.ts +24 -0
- package/dist/types/parser/v2/index.d.ts +5 -0
- package/dist/types/parser/v2/iso-date.d.ts +10 -0
- package/dist/types/parser/v2/parse-v2.d.ts +24 -0
- package/dist/types/parser/v2/validate-action.d.ts +11 -0
- package/dist/types/parser/v2/validate-app.d.ts +9 -0
- package/dist/types/parser/v2/validate-context.d.ts +41 -0
- package/dist/types/parser/v2/validate-field.d.ts +17 -0
- package/dist/types/parser/v2/validate-keys.d.ts +29 -0
- package/dist/types/parser/v2/validate-list.d.ts +5 -0
- package/dist/types/parser/v2/validate-v2.d.ts +6 -0
- package/dist/types/parser/v2/validate-view.d.ts +6 -0
- package/dist/types/parser/yaml-parser.d.ts +68 -0
- package/dist/types/renderer/action-handler.d.ts +76 -0
- package/dist/types/renderer/components/accordion-panel.d.ts +144 -0
- package/dist/types/renderer/components/action-buttons.d.ts +183 -0
- package/dist/types/renderer/components/alert-banner.d.ts +43 -0
- package/dist/types/renderer/components/app-header.d.ts +277 -0
- package/dist/types/renderer/components/app-navi.d.ts +167 -0
- package/dist/types/renderer/components/badge.d.ts +134 -0
- package/dist/types/renderer/components/browser.d.ts +134 -0
- package/dist/types/renderer/components/calendar.d.ts +198 -0
- package/dist/types/renderer/components/checkbox.d.ts +132 -0
- package/dist/types/renderer/components/chip.d.ts +120 -0
- package/dist/types/renderer/components/combobox.d.ts +217 -0
- package/dist/types/renderer/components/data-table.d.ts +186 -0
- package/dist/types/renderer/components/date-range-picker.d.ts +203 -0
- package/dist/types/renderer/components/definition-list.d.ts +165 -0
- package/dist/types/renderer/components/delete-confirm-dialog.d.ts +151 -0
- package/dist/types/renderer/components/dialog/action-dialog.d.ts +61 -0
- package/dist/types/renderer/components/dialog/base-dialog.d.ts +125 -0
- package/dist/types/renderer/components/dialog/dialog-types.d.ts +96 -0
- package/dist/types/renderer/components/disclosure.d.ts +118 -0
- package/dist/types/renderer/components/dropdown.d.ts +220 -0
- package/dist/types/renderer/components/duration-input.d.ts +154 -0
- package/dist/types/renderer/components/duration-picker.d.ts +108 -0
- package/dist/types/renderer/components/field-renderer.d.ts +22 -0
- package/dist/types/renderer/components/float-area.d.ts +196 -0
- package/dist/types/renderer/components/form-fields.d.ts +94 -0
- package/dist/types/renderer/components/form-section.d.ts +118 -0
- package/dist/types/renderer/components/google-map-embed.d.ts +88 -0
- package/dist/types/renderer/components/heading.d.ts +119 -0
- package/dist/types/renderer/components/image-uploader.d.ts +271 -0
- package/dist/types/renderer/components/index.d.ts +48 -0
- package/dist/types/renderer/components/information-panel.d.ts +139 -0
- package/dist/types/renderer/components/input.d.ts +222 -0
- package/dist/types/renderer/components/layout.d.ts +71 -0
- package/dist/types/renderer/components/line-clamp.d.ts +170 -0
- package/dist/types/renderer/components/loader.d.ts +104 -0
- package/dist/types/renderer/components/notification-bar.d.ts +251 -0
- package/dist/types/renderer/components/pagination.d.ts +167 -0
- package/dist/types/renderer/components/photo-manager-renderer.d.ts +9 -0
- package/dist/types/renderer/components/radio-button-panel.d.ts +152 -0
- package/dist/types/renderer/components/radio.d.ts +117 -0
- package/dist/types/renderer/components/repeater.d.ts +116 -0
- package/dist/types/renderer/components/response-message.d.ts +180 -0
- package/dist/types/renderer/components/search-input.d.ts +198 -0
- package/dist/types/renderer/components/section-nav.d.ts +151 -0
- package/dist/types/renderer/components/segmented-control.d.ts +143 -0
- package/dist/types/renderer/components/select.d.ts +98 -0
- package/dist/types/renderer/components/status-label.d.ts +146 -0
- package/dist/types/renderer/components/stepper.d.ts +123 -0
- package/dist/types/renderer/components/tabs.d.ts +185 -0
- package/dist/types/renderer/components/textarea.d.ts +173 -0
- package/dist/types/renderer/components/timeline.d.ts +146 -0
- package/dist/types/renderer/components/toggle.d.ts +109 -0
- package/dist/types/renderer/components/tooltip.d.ts +158 -0
- package/dist/types/renderer/components/wizard.d.ts +118 -0
- package/dist/types/renderer/layouts/index.d.ts +5 -0
- package/dist/types/renderer/layouts/shell.d.ts +7 -0
- package/dist/types/renderer/layouts/types.d.ts +34 -0
- package/dist/types/renderer/screen-renderer.d.ts +57 -0
- package/dist/types/renderer/utils/dom.d.ts +29 -0
- package/dist/types/renderer/utils/dummy-data.d.ts +13 -0
- package/dist/types/renderer/utils/field-helpers.d.ts +90 -0
- package/dist/types/renderer/utils/icons.d.ts +13 -0
- package/dist/types/renderer/utils/index.d.ts +6 -0
- package/dist/types/renderer-v2/actions.d.ts +30 -0
- package/dist/types/renderer-v2/app-shell.d.ts +15 -0
- package/dist/types/renderer-v2/condition.d.ts +19 -0
- package/dist/types/renderer-v2/context.d.ts +37 -0
- package/dist/types/renderer-v2/fields/choice.d.ts +12 -0
- package/dist/types/renderer-v2/fields/control-label.d.ts +57 -0
- package/dist/types/renderer-v2/fields/date.d.ts +6 -0
- package/dist/types/renderer-v2/fields/display.d.ts +22 -0
- package/dist/types/renderer-v2/fields/file-support.d.ts +15 -0
- package/dist/types/renderer-v2/fields/file.d.ts +9 -0
- package/dist/types/renderer-v2/fields/index.d.ts +20 -0
- package/dist/types/renderer-v2/fields/select.d.ts +17 -0
- package/dist/types/renderer-v2/fields/text.d.ts +26 -0
- package/dist/types/renderer-v2/fields/textarea.d.ts +5 -0
- package/dist/types/renderer-v2/fields/toggle.d.ts +6 -0
- package/dist/types/renderer-v2/icons.d.ts +35 -0
- package/dist/types/renderer-v2/index.d.ts +45 -0
- package/dist/types/renderer-v2/list-cells.d.ts +6 -0
- package/dist/types/renderer-v2/list-data.d.ts +53 -0
- package/dist/types/renderer-v2/mount-parts.d.ts +19 -0
- package/dist/types/renderer-v2/mount-repeat.d.ts +8 -0
- package/dist/types/renderer-v2/mount-section.d.ts +10 -0
- package/dist/types/renderer-v2/mount-visibility.d.ts +13 -0
- package/dist/types/renderer-v2/mount.d.ts +9 -0
- package/dist/types/renderer-v2/role.d.ts +15 -0
- package/dist/types/renderer-v2/section-fields.d.ts +11 -0
- package/dist/types/renderer-v2/section-list.d.ts +8 -0
- package/dist/types/renderer-v2/section-readonly.d.ts +8 -0
- package/dist/types/renderer-v2/section.d.ts +15 -0
- package/dist/types/renderer-v2/styles.d.ts +13 -0
- package/dist/types/renderer-v2/util.d.ts +28 -0
- package/dist/types/renderer-v2/view-state.d.ts +25 -0
- package/dist/types/renderer-v2/view.d.ts +8 -0
- package/dist/types/theme/index.d.ts +6 -0
- package/dist/types/theme/theme-manager.d.ts +102 -0
- package/dist/types/types/field-renderable.d.ts +40 -0
- package/dist/types/types/index.d.ts +7 -0
- package/dist/types/types/schema-v2.d.ts +270 -0
- package/dist/types/types/schema.d.ts +1712 -0
- package/dist/types/types/theme.d.ts +111 -0
- package/package.json +3 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action Handler
|
|
3
|
+
* アクションボタンのイベント処理(確認ダイアログ統合)
|
|
4
|
+
*/
|
|
5
|
+
import { DeleteConfirmDialog, type DeleteConfirmDialogConfig, type DependencyInfo } from './components/delete-confirm-dialog';
|
|
6
|
+
/**
|
|
7
|
+
* アクションハンドラーのコールバック
|
|
8
|
+
*/
|
|
9
|
+
export interface ActionHandlerCallbacks {
|
|
10
|
+
/** submit アクション実行時 */
|
|
11
|
+
onSubmit?: (actionId: string, url?: string, method?: string) => void;
|
|
12
|
+
/** navigate アクション実行時 */
|
|
13
|
+
onNavigate?: (actionId: string, to: string) => void;
|
|
14
|
+
/** custom アクション実行時 */
|
|
15
|
+
onCustom?: (actionId: string, handler: string) => void;
|
|
16
|
+
/** reset アクション実行時 */
|
|
17
|
+
onReset?: (actionId: string) => void;
|
|
18
|
+
/** アクションがキャンセルされた時 */
|
|
19
|
+
onCancel?: (actionId: string) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 削除確認ダイアログの拡張設定(YAMLから取得する追加情報)
|
|
23
|
+
*/
|
|
24
|
+
export interface DeleteConfirmExtendedConfig {
|
|
25
|
+
/** 依存データを取得する関数 */
|
|
26
|
+
getDependencies?: () => DependencyInfo[] | Promise<DependencyInfo[]>;
|
|
27
|
+
/** 削除対象名を取得する関数 */
|
|
28
|
+
getTargetName?: () => string;
|
|
29
|
+
/** 削除対象タイプ */
|
|
30
|
+
targetType?: string;
|
|
31
|
+
/** 警告メッセージ */
|
|
32
|
+
warningMessage?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* アクションハンドラー
|
|
36
|
+
* ボタンクリック時の処理と確認ダイアログの表示を管理
|
|
37
|
+
*/
|
|
38
|
+
export declare class ActionHandler {
|
|
39
|
+
private container;
|
|
40
|
+
private callbacks;
|
|
41
|
+
private deleteConfirmConfigs;
|
|
42
|
+
private boundClickHandler;
|
|
43
|
+
constructor(container: HTMLElement, callbacks?: ActionHandlerCallbacks, deleteConfirmConfigs?: Map<string, DeleteConfirmExtendedConfig>);
|
|
44
|
+
/**
|
|
45
|
+
* イベントリスナーを設定
|
|
46
|
+
*/
|
|
47
|
+
attach(): void;
|
|
48
|
+
/**
|
|
49
|
+
* イベントリスナーを削除
|
|
50
|
+
*/
|
|
51
|
+
detach(): void;
|
|
52
|
+
/**
|
|
53
|
+
* 削除確認の設定を登録
|
|
54
|
+
*/
|
|
55
|
+
registerDeleteConfirmConfig(actionId: string, config: DeleteConfirmExtendedConfig): void;
|
|
56
|
+
/**
|
|
57
|
+
* クリックイベントハンドラー
|
|
58
|
+
*/
|
|
59
|
+
private handleClick;
|
|
60
|
+
/**
|
|
61
|
+
* 確認ダイアログを表示
|
|
62
|
+
*/
|
|
63
|
+
private showConfirmDialog;
|
|
64
|
+
/**
|
|
65
|
+
* アクションを実行
|
|
66
|
+
*/
|
|
67
|
+
private executeAction;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* コンテナにアクションハンドラーをアタッチ
|
|
71
|
+
*/
|
|
72
|
+
export declare function attachActionHandler(container: HTMLElement, callbacks?: ActionHandlerCallbacks, deleteConfirmConfigs?: Map<string, DeleteConfirmExtendedConfig>): ActionHandler;
|
|
73
|
+
/**
|
|
74
|
+
* 簡易的な確認ダイアログを表示(スタンドアロン使用)
|
|
75
|
+
*/
|
|
76
|
+
export declare function showDeleteConfirmDialog(config: DeleteConfirmDialogConfig, onConfirm: () => void, onCancel?: () => void): DeleteConfirmDialog;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AccordionPanel Component
|
|
3
|
+
* 折りたたみパネルコンポーネント
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* - 複数パネルの同時開閉制御(単一/複数展開モード)
|
|
7
|
+
* - 開閉アニメーション
|
|
8
|
+
* - アイコン付きヘッダー
|
|
9
|
+
* - デフォルト展開状態の設定
|
|
10
|
+
* - キーボード操作対応
|
|
11
|
+
* - アクセシビリティ対応(ARIA属性)
|
|
12
|
+
*/
|
|
13
|
+
import type { InputField } from '../../types/schema';
|
|
14
|
+
/**
|
|
15
|
+
* アコーディオンアイテムの定義
|
|
16
|
+
*/
|
|
17
|
+
export interface AccordionItem {
|
|
18
|
+
/** 一意な識別子 */
|
|
19
|
+
name: string;
|
|
20
|
+
/** ヘッダーテキスト */
|
|
21
|
+
title: string;
|
|
22
|
+
/** ヘッダーアイコン(オプション) */
|
|
23
|
+
icon?: string;
|
|
24
|
+
/** コンテンツ(HTML文字列またはHTMLElement) */
|
|
25
|
+
content: string | HTMLElement;
|
|
26
|
+
/** 無効化 */
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* アイコンの配置位置
|
|
31
|
+
*/
|
|
32
|
+
export type IconPosition = 'left' | 'right';
|
|
33
|
+
/**
|
|
34
|
+
* 見出しタイプ
|
|
35
|
+
*/
|
|
36
|
+
export type HeadingType = 'sectionTitle' | 'blockTitle' | 'subBlockTitle' | 'subSubBlockTitle';
|
|
37
|
+
/**
|
|
38
|
+
* アコーディオンパネルの状態
|
|
39
|
+
*/
|
|
40
|
+
export interface AccordionPanelState {
|
|
41
|
+
/** 展開中のパネル名リスト */
|
|
42
|
+
expandedItems: string[];
|
|
43
|
+
/** フォーカスされているアイテムのインデックス */
|
|
44
|
+
focusedIndex: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* アコーディオンパネルのコールバック
|
|
48
|
+
*/
|
|
49
|
+
export interface AccordionPanelCallbacks {
|
|
50
|
+
/** パネル展開時 */
|
|
51
|
+
onExpand?: (name: string) => void;
|
|
52
|
+
/** パネル折りたたみ時 */
|
|
53
|
+
onCollapse?: (name: string) => void;
|
|
54
|
+
/** 展開状態変更時 */
|
|
55
|
+
onChange?: (expandedItems: string[]) => void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* アコーディオンパネルの設定
|
|
59
|
+
*/
|
|
60
|
+
export interface AccordionPanelConfig {
|
|
61
|
+
/** アコーディオンアイテム */
|
|
62
|
+
items: AccordionItem[];
|
|
63
|
+
/** 複数パネル同時展開を許可(デフォルト: true) */
|
|
64
|
+
expandableMultiply?: boolean;
|
|
65
|
+
/** デフォルトで展開するパネル名のリスト */
|
|
66
|
+
defaultExpanded?: string[];
|
|
67
|
+
/** アイコンの配置位置(デフォルト: left) */
|
|
68
|
+
iconPosition?: IconPosition;
|
|
69
|
+
/** 見出しタイプ(デフォルト: blockTitle) */
|
|
70
|
+
headingType?: HeadingType;
|
|
71
|
+
/** ID属性 */
|
|
72
|
+
id?: string;
|
|
73
|
+
/** カスタムCSSクラス */
|
|
74
|
+
className?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* アコーディオンパネルコンポーネント
|
|
78
|
+
*/
|
|
79
|
+
export declare class AccordionPanel {
|
|
80
|
+
private config;
|
|
81
|
+
private state;
|
|
82
|
+
private callbacks;
|
|
83
|
+
private container;
|
|
84
|
+
private instanceId;
|
|
85
|
+
private itemElements;
|
|
86
|
+
constructor(container: HTMLElement, config: AccordionPanelConfig, callbacks?: AccordionPanelCallbacks);
|
|
87
|
+
/**
|
|
88
|
+
* アコーディオンパネルをレンダリング
|
|
89
|
+
*/
|
|
90
|
+
render(): void;
|
|
91
|
+
/**
|
|
92
|
+
* パネルを展開
|
|
93
|
+
*/
|
|
94
|
+
expand(name: string): void;
|
|
95
|
+
/**
|
|
96
|
+
* パネルを折りたたむ
|
|
97
|
+
*/
|
|
98
|
+
collapse(name: string): void;
|
|
99
|
+
/**
|
|
100
|
+
* パネルの展開/折りたたみを切り替え
|
|
101
|
+
*/
|
|
102
|
+
toggle(name: string): void;
|
|
103
|
+
/**
|
|
104
|
+
* すべてのパネルを展開
|
|
105
|
+
*/
|
|
106
|
+
expandAll(): void;
|
|
107
|
+
/**
|
|
108
|
+
* すべてのパネルを折りたたむ
|
|
109
|
+
*/
|
|
110
|
+
collapseAll(): void;
|
|
111
|
+
/**
|
|
112
|
+
* パネルの展開状態を確認
|
|
113
|
+
*/
|
|
114
|
+
isExpanded(name: string): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* 現在の状態を取得
|
|
117
|
+
*/
|
|
118
|
+
getState(): AccordionPanelState;
|
|
119
|
+
/**
|
|
120
|
+
* アイテムを更新
|
|
121
|
+
*/
|
|
122
|
+
setItems(items: AccordionItem[]): void;
|
|
123
|
+
/**
|
|
124
|
+
* コンポーネントを破棄
|
|
125
|
+
*/
|
|
126
|
+
destroy(): void;
|
|
127
|
+
private createInitialState;
|
|
128
|
+
private renderItem;
|
|
129
|
+
private renderTrigger;
|
|
130
|
+
private renderIcon;
|
|
131
|
+
private renderContent;
|
|
132
|
+
private updateItemState;
|
|
133
|
+
private attachKeyboardEvents;
|
|
134
|
+
private focusNextItem;
|
|
135
|
+
private focusPreviousItem;
|
|
136
|
+
private focusFirstItem;
|
|
137
|
+
private focusLastItem;
|
|
138
|
+
private focusItem;
|
|
139
|
+
static renderField(field: InputField): string;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* アコーディオンパネルを作成
|
|
143
|
+
*/
|
|
144
|
+
export declare function createAccordionPanel(container: HTMLElement, config: AccordionPanelConfig, callbacks?: AccordionPanelCallbacks): AccordionPanel;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action Button Group Component
|
|
3
|
+
* アクションボタングループコンポーネント
|
|
4
|
+
*
|
|
5
|
+
* 複数のアクションボタンを適切に配置するコンポーネント
|
|
6
|
+
*/
|
|
7
|
+
import type { Action, ConfirmConfig } from '../../types/schema';
|
|
8
|
+
/**
|
|
9
|
+
* アクションボタンの定義
|
|
10
|
+
*/
|
|
11
|
+
export interface ActionButton {
|
|
12
|
+
/** ボタンID */
|
|
13
|
+
id: string;
|
|
14
|
+
/** ボタンタイプ */
|
|
15
|
+
type: 'submit' | 'navigate' | 'custom' | 'reset';
|
|
16
|
+
/** ラベル */
|
|
17
|
+
label: string;
|
|
18
|
+
/** アイコン(オプション) */
|
|
19
|
+
icon?: string;
|
|
20
|
+
/** スタイル */
|
|
21
|
+
style?: 'primary' | 'secondary' | 'danger' | 'link';
|
|
22
|
+
/** 無効化 */
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
/** 遷移先(navigate時) */
|
|
25
|
+
to?: string;
|
|
26
|
+
/** カスタムハンドラー名(custom時) */
|
|
27
|
+
handler?: string;
|
|
28
|
+
/** 確認ダイアログ設定 */
|
|
29
|
+
confirm?: ConfirmConfig;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* ボタン配置
|
|
33
|
+
*/
|
|
34
|
+
export type ButtonAlignment = 'start' | 'center' | 'end' | 'spread';
|
|
35
|
+
/**
|
|
36
|
+
* ActionButtonGroupの設定
|
|
37
|
+
*/
|
|
38
|
+
export interface ActionButtonGroupConfig {
|
|
39
|
+
/** ボタン定義 */
|
|
40
|
+
buttons: ActionButton[];
|
|
41
|
+
/** ボタン配置 */
|
|
42
|
+
alignment?: ButtonAlignment;
|
|
43
|
+
/** ボタン間のギャップ */
|
|
44
|
+
gap?: string;
|
|
45
|
+
/** モバイルでスタック表示 */
|
|
46
|
+
stackOnMobile?: boolean;
|
|
47
|
+
/** 表示可能な最大ボタン数(超過分はオーバーフローメニュー) */
|
|
48
|
+
maxVisibleButtons?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* ActionButtonGroupの状態
|
|
52
|
+
*/
|
|
53
|
+
export interface ActionButtonGroupState {
|
|
54
|
+
/** ボタン定義 */
|
|
55
|
+
buttons: ActionButton[];
|
|
56
|
+
/** ボタン配置 */
|
|
57
|
+
alignment: ButtonAlignment;
|
|
58
|
+
/** ボタン間のギャップ */
|
|
59
|
+
gap: string;
|
|
60
|
+
/** モバイルでスタック表示 */
|
|
61
|
+
stackOnMobile: boolean;
|
|
62
|
+
/** 表示可能な最大ボタン数 */
|
|
63
|
+
maxVisibleButtons?: number;
|
|
64
|
+
/** ローディング中のボタンID */
|
|
65
|
+
loadingButtons: Set<string>;
|
|
66
|
+
/** オーバーフローメニューが開いているか */
|
|
67
|
+
overflowMenuOpen: boolean;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* ActionButtonGroupのコールバック
|
|
71
|
+
*/
|
|
72
|
+
export interface ActionButtonGroupCallbacks {
|
|
73
|
+
/** ボタンクリック時 */
|
|
74
|
+
onClick?: (buttonId: string, state: ActionButtonGroupState) => void;
|
|
75
|
+
/** Submit時 */
|
|
76
|
+
onSubmit?: (buttonId: string, state: ActionButtonGroupState) => void;
|
|
77
|
+
/** Navigate時 */
|
|
78
|
+
onNavigate?: (to: string, state: ActionButtonGroupState) => void;
|
|
79
|
+
/** Custom時 */
|
|
80
|
+
onCustom?: (handler: string, state: ActionButtonGroupState) => void;
|
|
81
|
+
/** 確認ダイアログ表示時(trueを返すと処理続行) */
|
|
82
|
+
onConfirm?: (config: ConfirmConfig, state: ActionButtonGroupState) => Promise<boolean>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* アクションボタングループコンポーネント
|
|
86
|
+
*/
|
|
87
|
+
export declare class ActionButtonGroup {
|
|
88
|
+
private config;
|
|
89
|
+
private container;
|
|
90
|
+
private callbacks;
|
|
91
|
+
private state;
|
|
92
|
+
private groupElement;
|
|
93
|
+
private overflowMenuElement;
|
|
94
|
+
constructor(config: ActionButtonGroupConfig, container: HTMLElement, callbacks?: ActionButtonGroupCallbacks);
|
|
95
|
+
/**
|
|
96
|
+
* 初期状態を生成
|
|
97
|
+
*/
|
|
98
|
+
private initializeState;
|
|
99
|
+
/**
|
|
100
|
+
* 現在の状態を取得(深いコピーを返す)
|
|
101
|
+
*/
|
|
102
|
+
getState(): ActionButtonGroupState;
|
|
103
|
+
/**
|
|
104
|
+
* ボタンを取得(コピーを返す)
|
|
105
|
+
*/
|
|
106
|
+
getButton(id: string): ActionButton | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Action配列からConfigを生成
|
|
109
|
+
*/
|
|
110
|
+
static fromActions(actions: Action[]): ActionButtonGroupConfig;
|
|
111
|
+
/**
|
|
112
|
+
* レンダリング
|
|
113
|
+
*/
|
|
114
|
+
render(): void;
|
|
115
|
+
/**
|
|
116
|
+
* グループのクラス名を生成
|
|
117
|
+
*/
|
|
118
|
+
private buildGroupClassName;
|
|
119
|
+
/**
|
|
120
|
+
* ボタンを可視とオーバーフローに分割
|
|
121
|
+
*/
|
|
122
|
+
private splitButtons;
|
|
123
|
+
/**
|
|
124
|
+
* 単一ボタンをレンダリング
|
|
125
|
+
*/
|
|
126
|
+
private renderButton;
|
|
127
|
+
/**
|
|
128
|
+
* ボタンのクラス名を生成
|
|
129
|
+
*/
|
|
130
|
+
private buildButtonClassName;
|
|
131
|
+
/**
|
|
132
|
+
* ボタンタイプを取得
|
|
133
|
+
*/
|
|
134
|
+
private getButtonType;
|
|
135
|
+
/**
|
|
136
|
+
* オーバーフローメニューをレンダリング
|
|
137
|
+
*/
|
|
138
|
+
private renderOverflowMenu;
|
|
139
|
+
/**
|
|
140
|
+
* ボタンクリック時の処理
|
|
141
|
+
*/
|
|
142
|
+
private handleButtonClick;
|
|
143
|
+
/**
|
|
144
|
+
* ローディング状態を設定
|
|
145
|
+
*/
|
|
146
|
+
setLoading(buttonId: string, loading: boolean): void;
|
|
147
|
+
/**
|
|
148
|
+
* 無効化状態を設定
|
|
149
|
+
*/
|
|
150
|
+
setDisabled(buttonId: string, disabled: boolean): void;
|
|
151
|
+
/**
|
|
152
|
+
* ボタンの状態を更新
|
|
153
|
+
*/
|
|
154
|
+
private updateButtonState;
|
|
155
|
+
/**
|
|
156
|
+
* オーバーフローメニューを切り替え
|
|
157
|
+
*/
|
|
158
|
+
toggleOverflowMenu(): void;
|
|
159
|
+
/**
|
|
160
|
+
* オーバーフローメニューを閉じる
|
|
161
|
+
*/
|
|
162
|
+
closeOverflowMenu(): void;
|
|
163
|
+
/**
|
|
164
|
+
* オーバーフローメニューの状態を更新
|
|
165
|
+
*/
|
|
166
|
+
private updateOverflowMenuState;
|
|
167
|
+
/**
|
|
168
|
+
* ボタンを追加
|
|
169
|
+
*/
|
|
170
|
+
addButton(button: ActionButton, index?: number): void;
|
|
171
|
+
/**
|
|
172
|
+
* ボタンを削除
|
|
173
|
+
*/
|
|
174
|
+
removeButton(buttonId: string): boolean;
|
|
175
|
+
/**
|
|
176
|
+
* ボタンを更新
|
|
177
|
+
*/
|
|
178
|
+
updateButton(buttonId: string, updates: Partial<ActionButton>): boolean;
|
|
179
|
+
/**
|
|
180
|
+
* クリーンアップ
|
|
181
|
+
*/
|
|
182
|
+
destroy(): void;
|
|
183
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type AlertBannerType = 'info' | 'success' | 'warning' | 'error';
|
|
2
|
+
export interface AlertBannerState {
|
|
3
|
+
message: string;
|
|
4
|
+
visible: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface AlertBannerCallbacks {
|
|
7
|
+
onClose?: () => void;
|
|
8
|
+
onAction?: () => void;
|
|
9
|
+
}
|
|
10
|
+
export interface AlertBannerConfig {
|
|
11
|
+
message: string;
|
|
12
|
+
type?: AlertBannerType;
|
|
13
|
+
actionLabel?: string;
|
|
14
|
+
closable?: boolean;
|
|
15
|
+
visible?: boolean;
|
|
16
|
+
role?: 'alert' | 'status';
|
|
17
|
+
ariaLabel?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare class AlertBanner {
|
|
20
|
+
private config;
|
|
21
|
+
private state;
|
|
22
|
+
private callbacks;
|
|
23
|
+
private container;
|
|
24
|
+
private closeHandler;
|
|
25
|
+
private actionHandler;
|
|
26
|
+
constructor(container: HTMLElement, config: AlertBannerConfig, callbacks?: AlertBannerCallbacks);
|
|
27
|
+
render(): void;
|
|
28
|
+
private renderContent;
|
|
29
|
+
private renderActionButton;
|
|
30
|
+
private renderCloseButton;
|
|
31
|
+
private handleAction;
|
|
32
|
+
private handleClose;
|
|
33
|
+
private cleanup;
|
|
34
|
+
setMessage(message: string): void;
|
|
35
|
+
setVisible(visible: boolean): void;
|
|
36
|
+
show(): void;
|
|
37
|
+
hide(): void;
|
|
38
|
+
getMessage(): string;
|
|
39
|
+
isVisible(): boolean;
|
|
40
|
+
getState(): Readonly<AlertBannerState>;
|
|
41
|
+
destroy(): void;
|
|
42
|
+
}
|
|
43
|
+
export declare function createAlertBanner(container: HTMLElement, config: AlertBannerConfig, callbacks?: AlertBannerCallbacks): AlertBanner;
|