@digitalwalletcorp/vue-core 1.3.1 → 1.4.1

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 (110) hide show
  1. package/README.md +36 -0
  2. package/lib/accordion-section.d.cts +1 -1
  3. package/lib/accordion-section.d.ts +1 -1
  4. package/lib/components-BCJWnExf.cjs +1 -0
  5. package/lib/{components-BuTJ1wX8.js → components-CDIhw5uP.js} +5 -5
  6. package/lib/data-table.d.cts +101 -8
  7. package/lib/data-table.d.ts +101 -8
  8. package/lib/{types → helpers}/data-table.d.cts +47 -93
  9. package/lib/{types → helpers}/data-table.d.ts +47 -93
  10. package/lib/helpers/{show-floating-component.d.cts → floating-component.d.cts} +1 -1
  11. package/lib/helpers/{show-floating-component.d.ts → floating-component.d.ts} +1 -1
  12. package/lib/helpers/{show-modal-dialog.d.cts → modal-dialog.d.cts} +13 -1
  13. package/lib/helpers/{show-modal-dialog.d.ts → modal-dialog.d.ts} +13 -1
  14. package/lib/helpers/{show-overlay-box.d.ts → overlay-box.d.cts} +3 -1
  15. package/lib/helpers/{show-overlay-box.d.cts → overlay-box.d.ts} +3 -1
  16. package/lib/helpers/{show-snackbar.d.cts → snackbar.d.cts} +16 -1
  17. package/lib/helpers/{show-snackbar.d.ts → snackbar.d.ts} +16 -1
  18. package/lib/helpers/vue-core-options.d.cts +17 -0
  19. package/lib/helpers/vue-core-options.d.ts +17 -0
  20. package/lib/index.cjs +1 -1
  21. package/lib/index.d.cts +18 -18
  22. package/lib/index.d.ts +18 -18
  23. package/lib/index.js +187 -270
  24. package/lib/internal/data-table-controls.d.cts +3 -3
  25. package/lib/internal/data-table-controls.d.ts +3 -3
  26. package/lib/internal/floating-component.d.cts +1 -1
  27. package/lib/internal/floating-component.d.ts +1 -1
  28. package/lib/internal/movable-window.d.cts +1 -1
  29. package/lib/internal/movable-window.d.ts +1 -1
  30. package/lib/internal/pagination.d.cts +1 -1
  31. package/lib/internal/pagination.d.ts +1 -1
  32. package/lib/internal/snackbar-container.d.cts +1 -1
  33. package/lib/internal/snackbar-container.d.ts +1 -1
  34. package/lib/internal/use-movable-window.d.cts +1 -1
  35. package/lib/internal/use-movable-window.d.ts +1 -1
  36. package/lib/internal/{mount-window.d.cts → window-control.d.cts} +22 -1
  37. package/lib/internal/{mount-window.d.ts → window-control.d.ts} +22 -1
  38. package/lib/label-button.d.cts +1 -1
  39. package/lib/label-button.d.ts +1 -1
  40. package/lib/label-icon.d.cts +12 -2
  41. package/lib/label-icon.d.ts +12 -2
  42. package/lib/modal-dialog.d.cts +1 -1
  43. package/lib/modal-dialog.d.ts +1 -1
  44. package/lib/nuxt.cjs +1 -1
  45. package/lib/nuxt.js +1 -1
  46. package/lib/overlay-box.d.cts +1 -1
  47. package/lib/overlay-box.d.ts +1 -1
  48. package/lib/register.cjs +1 -1
  49. package/lib/register.js +1 -1
  50. package/lib/tab-content.d.cts +1 -1
  51. package/lib/tab-content.d.ts +1 -1
  52. package/lib/warning-popper.vue_vue_type_style_index_0_lang-BJxLA6aU.js +1954 -0
  53. package/lib/warning-popper.vue_vue_type_style_index_0_lang-TYmLM_h9.cjs +1 -0
  54. package/package.json +1 -1
  55. package/src/accordion-section.vue +1 -1
  56. package/src/data-table.vue +189 -49
  57. package/src/helpers/data-table.ts +250 -0
  58. package/src/helpers/{show-floating-component.ts → floating-component.ts} +2 -2
  59. package/src/helpers/{show-modal-dialog.ts → modal-dialog.ts} +17 -1
  60. package/src/helpers/{show-overlay-box.ts → overlay-box.ts} +5 -2
  61. package/src/helpers/{show-snackbar.ts → snackbar.ts} +19 -1
  62. package/src/helpers/vue-core-options.ts +20 -0
  63. package/src/index.ts +18 -18
  64. package/src/internal/data-table-controls.vue +1 -1
  65. package/src/internal/floating-component.vue +2 -2
  66. package/src/internal/movable-window.vue +1 -1
  67. package/src/internal/pagination.vue +1 -1
  68. package/src/internal/snackbar-container.vue +1 -1
  69. package/src/internal/use-movable-window.ts +1 -1
  70. package/src/internal/{mount-window.ts → window-control.ts} +31 -1
  71. package/src/label-button.vue +1 -1
  72. package/src/label-icon.vue +13 -2
  73. package/src/modal-dialog.vue +1 -1
  74. package/src/overlay-box.vue +3 -3
  75. package/src/tab-content.vue +2 -2
  76. package/src/tab-group.vue +2 -2
  77. package/lib/components-CKql5lWg.cjs +0 -1
  78. package/lib/helpers/data-table-csv.d.cts +0 -17
  79. package/lib/helpers/data-table-csv.d.ts +0 -17
  80. package/lib/internal/data-table-value.d.cts +0 -32
  81. package/lib/internal/data-table-value.d.ts +0 -32
  82. package/lib/internal/opened-overlay-boxes.d.cts +0 -2
  83. package/lib/internal/opened-overlay-boxes.d.ts +0 -2
  84. package/lib/internal/snackbar-item.d.cts +0 -17
  85. package/lib/internal/snackbar-item.d.ts +0 -17
  86. package/lib/internal/window-order.d.cts +0 -6
  87. package/lib/internal/window-order.d.ts +0 -6
  88. package/lib/types/label-preset.d.cts +0 -12
  89. package/lib/types/label-preset.d.ts +0 -12
  90. package/lib/types/modal-dialog.d.cts +0 -13
  91. package/lib/types/modal-dialog.d.ts +0 -13
  92. package/lib/types/movable-window.d.cts +0 -16
  93. package/lib/types/movable-window.d.ts +0 -16
  94. package/lib/warning-popper.vue_vue_type_style_index_0_lang-BKV_FX6k.js +0 -1837
  95. package/lib/warning-popper.vue_vue_type_style_index_0_lang-CHmkjVCO.cjs +0 -1
  96. package/src/helpers/data-table-csv.ts +0 -55
  97. package/src/internal/data-table-value.ts +0 -99
  98. package/src/internal/opened-overlay-boxes.ts +0 -2
  99. package/src/internal/snackbar-item.ts +0 -20
  100. package/src/internal/window-order.ts +0 -11
  101. package/src/types/data-table.ts +0 -196
  102. package/src/types/label-preset.ts +0 -13
  103. package/src/types/modal-dialog.ts +0 -16
  104. package/src/types/movable-window.ts +0 -18
  105. /package/lib/helpers/{show-screen-loading.d.cts → screen-loading.d.cts} +0 -0
  106. /package/lib/helpers/{show-screen-loading.d.ts → screen-loading.d.ts} +0 -0
  107. /package/lib/internal/{tab-group-context.d.cts → tab-group.d.cts} +0 -0
  108. /package/lib/internal/{tab-group-context.d.ts → tab-group.d.ts} +0 -0
  109. /package/src/helpers/{show-screen-loading.ts → screen-loading.ts} +0 -0
  110. /package/src/internal/{tab-group-context.ts → tab-group.ts} +0 -0
package/README.md CHANGED
@@ -172,6 +172,42 @@ export default defineNuxtConfig({
172
172
  });
173
173
  ```
174
174
 
175
+ **🧭 Application-wide Options (`vueCoreOptionsKey`)**
176
+
177
+ Settings that are the same on every page, such as the texts of `DataTable`, can be provided once for the whole application instead of being passed to each component.
178
+ Provide `vueCoreOptionsKey` in a component above the components or with `app.provide`.
179
+ A prop wins over the provided value, and without either, the default of the library is used.
180
+
181
+ ```ts
182
+ // Vue: main.ts
183
+ import { vueCoreOptionsKey } from '@digitalwalletcorp/vue-core';
184
+
185
+ app.provide(vueCoreOptionsKey, {
186
+ dataTable: {
187
+ labels: { totalCount: 'Total', totalUnit: 'records', noData: 'No data' },
188
+ sortMode: 'page'
189
+ }
190
+ });
191
+ ```
192
+
193
+ ```ts
194
+ // Nuxt: plugins/vue-core.ts
195
+ import { vueCoreOptionsKey } from '@digitalwalletcorp/vue-core';
196
+
197
+ export default defineNuxtPlugin((nuxtApp) => {
198
+ nuxtApp.vueApp.provide(vueCoreOptionsKey, {
199
+ dataTable: {
200
+ labels: { totalCount: 'Total', totalUnit: 'records', noData: 'No data' },
201
+ sortMode: 'page'
202
+ }
203
+ });
204
+ });
205
+ ```
206
+
207
+ | Property | Type | Description |
208
+ | ----------- | ------------------ | ----------- |
209
+ | `dataTable` | `DataTableOptions` | Sets default props for [`DataTable`](https://github.com/digitalwalletcorp/vue-core/blob/main/docs/components/data-table.md) components across the application. For example, you can configure default labels or sort behavior. |
210
+
175
211
  #### 🛠️ Helper Functions
176
212
 
177
213
  Dialogs, snackbars and floating windows are shown from code, so you can call them from a click handler or a store action without placing a component in the template.
@@ -1,4 +1,4 @@
1
- import { LabelPreset } from './types/label-preset.cjs';
1
+ import { LabelPreset } from './label-icon.cjs';
2
2
  export interface Props {
3
3
  /** trueの場合、開閉ボタンを無効にする */
4
4
  disabled?: boolean;
@@ -1,4 +1,4 @@
1
- import { LabelPreset } from './types/label-preset';
1
+ import { LabelPreset } from './label-icon';
2
2
  export interface Props {
3
3
  /** trueの場合、開閉ボタンを無効にする */
4
4
  disabled?: boolean;
@@ -0,0 +1 @@
1
+ "use strict";const n=require("./warning-popper.vue_vue_type_style_index_0_lang-TYmLM_h9.cjs"),_=Object.freeze(Object.defineProperty({__proto__:null,AccordionFieldset:n._sfc_main$4,AccordionSection:n._sfc_main$5,CopyButton:n._sfc_main$1,DarkModeSelector:n._sfc_main$6,DataTable:n._sfc_main$7,HelpButton:n._sfc_main$8,HelpPopper:n._sfc_main$9,HourglassLoading:n._sfc_main$10,IntersectionLazyComponent:n._sfc_main$11,LabelButton:n._sfc_main$12,LabelIcon:n._sfc_main$13,ModalDialog:n._sfc_main$2,OverlayBox:n._sfc_main$14,PageSection:n._sfc_main$15,PageTitle:n._sfc_main$16,ScreenLoading:n._sfc_main$3,TabContent:n._sfc_main$17,TabGroup:n._sfc_main$18,WarningPopper:n._sfc_main$19},Symbol.toStringTag,{value:"Module"}));exports.components=_;
@@ -1,4 +1,4 @@
1
- import { f as a, h as s, a as n, i as _, j as o, k as e, l as c, m as i, o as t, p as m, q as f, b as r, d as l, s as $, t as p, e as d, u as b, v as g, w as u } from "./warning-popper.vue_vue_type_style_index_0_lang-BKV_FX6k.js";
1
+ import { e as a, f as s, a as n, g as _, h as o, i as e, j as c, k as i, l as t, o as f, p as m, b as r, q as l, r as $, s as p, d, t as g, v as b, w as u } from "./warning-popper.vue_vue_type_style_index_0_lang-BJxLA6aU.js";
2
2
  const y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3
3
  __proto__: null,
4
4
  AccordionFieldset: a,
@@ -10,15 +10,15 @@ const y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10
10
  HelpPopper: c,
11
11
  HourglassLoading: i,
12
12
  IntersectionLazyComponent: t,
13
- LabelButton: m,
14
- LabelIcon: f,
13
+ LabelButton: f,
14
+ LabelIcon: m,
15
15
  ModalDialog: r,
16
16
  OverlayBox: l,
17
17
  PageSection: $,
18
18
  PageTitle: p,
19
19
  ScreenLoading: d,
20
- TabContent: b,
21
- TabGroup: g,
20
+ TabContent: g,
21
+ TabGroup: b,
22
22
  WarningPopper: u
23
23
  }, Symbol.toStringTag, { value: "Module" }));
24
24
  export {
@@ -1,14 +1,107 @@
1
- import { DataTableEmits, DataTableHeader, DataTableProps, DataTableSlots, DataTableSortContext } from './types/data-table.cjs';
1
+ import { ClassValue, StyleValue } from 'vue';
2
+ import { DataTableControlsPlacement, DataTableHeader, DataTableLabels, DataTableSortContext, DataTableSortMode } from './helpers/data-table.cjs';
3
+ /**
4
+ * DataTable の props
5
+ */
6
+ export interface Props<T = unknown> {
7
+ /** 表示している行のデータ。スロットで描画する行と同じ順に並んでいること */
8
+ dataList: T[];
9
+ /** ヘッダ。id は一意であること */
10
+ headers: DataTableHeader<T>[];
11
+ /** 読み込み中。true の間は行を描画せず読み込み中の表示を出す */
12
+ loading?: boolean;
13
+ /** 総件数。未指定なら dataList の件数 */
14
+ totalCount?: number;
15
+ /** 現在ページ(1起点) */
16
+ current?: number;
17
+ /** 1ページあたりの表示件数 */
18
+ limit?: number;
19
+ /** 1ページあたりの表示件数の上限 */
20
+ maxLimit?: number;
21
+ /** ページネーションに並べるページ番号の最大数 */
22
+ maxPagination?: number;
23
+ /** 行をクリックで選択できるか */
24
+ selectable?: boolean;
25
+ /** コントロールを出す位置 */
26
+ controls?: DataTableControlsPlacement;
27
+ /** ページネーションを出す位置。controls が無い側には出ない */
28
+ pagination?: DataTableControlsPlacement;
29
+ /** ページダウンロードボタンを表示するか */
30
+ showDownloadPage?: boolean;
31
+ /** 全件ダウンロードボタンを表示するか */
32
+ showDownloadAll?: boolean;
33
+ /** 総件数を表示するか */
34
+ showTotal?: boolean;
35
+ /** 1ページあたりの表示件数の入力を表示するか */
36
+ showLimit?: boolean;
37
+ /** ページネーションにページ番号の選択を表示するか */
38
+ showPageSelect?: boolean;
39
+ /** dataList が空のときにデータが無い旨の行を表示するか */
40
+ showNoData?: boolean;
41
+ /** ヘッダの境界のドラッグで列幅を変えられるか */
42
+ resizable?: boolean;
43
+ /** ヘッダのクリックでソートできるか */
44
+ sortable?: boolean;
45
+ /** ソートの方式。未指定なら remote */
46
+ sortMode?: DataTableSortMode;
47
+ /** テーブルをスクロールする領域に付ける class */
48
+ contentClass?: ClassValue;
49
+ /** テーブルをスクロールする領域に付ける style */
50
+ contentStyle?: StyleValue;
51
+ /** table に付ける class */
52
+ tableClass?: ClassValue;
53
+ /** table に付ける style */
54
+ tableStyle?: StyleValue;
55
+ /** 表示する文言。未指定の項目は英語 */
56
+ labels?: DataTableLabels;
57
+ /** 総件数の整形。未指定なら en-US の桁区切り。SSR とクライアントで同じ文字列を返すこと */
58
+ formatTotalCount?: (count: number) => string;
59
+ }
60
+ /**
61
+ * DataTable が発行するイベント
62
+ */
63
+ export interface Emits<T = unknown> {
64
+ /** 選択が変わった。クリックでの選択・解除、カーソルキーでの移動、読み込み完了時の解除で発行する。解除は undefined と -1 */
65
+ (e: 'emit:selectRow', value: T | undefined, index: number): void;
66
+ /** ソートの条件が変わった。sortMode に関わらず発行する */
67
+ (e: 'emit:changeSort', context: DataTableSortContext): void;
68
+ (e: 'emit:updateHeader', headers: DataTableHeader<T>[]): void;
69
+ (e: 'emit:dblclickRow', value: T, index: number): void;
70
+ (e: 'emit:changeLimit', limit: number): void;
71
+ (e: 'emit:changePage', page: number): void;
72
+ (e: 'emit:downloadPage'): void;
73
+ (e: 'emit:downloadAll'): void;
74
+ }
75
+ /**
76
+ * DataTable のスロット
77
+ */
78
+ export interface Slots<T = unknown> {
79
+ /** 行。tr を rows と同じ順に並べ、tr の click で clickRow(row, index) を呼ぶ */
80
+ default?(props: {
81
+ /** 表示する行。sortMode が page のときはソートした順、それ以外は dataList そのもの */
82
+ rows: T[];
83
+ /** 行を選択する。選択している行なら選択を解除する */
84
+ clickRow: (row: T, index: number) => void;
85
+ /** 行を選択してダブルクリックを通知する */
86
+ dblclickRow: (row: T, index: number) => void;
87
+ /** 行のインデックスから、ページをまたいだ1起点の行番号を返す */
88
+ rowNumber: (index: number) => number;
89
+ /** 選択している行のインデックス。選択していなければ -1 */
90
+ selectedIndex: number;
91
+ }): unknown;
92
+ /** 読み込み中の表示。未指定なら既定のスピナー */
93
+ loading?(): unknown;
94
+ }
2
95
  declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
- props: __VLS_PrettifyLocal<DataTableProps<T> & {
96
+ props: __VLS_PrettifyLocal<Props<T> & {
97
+ "onEmit:changePage"?: ((page: number) => any) | undefined;
98
+ "onEmit:changeLimit"?: ((limit: number) => any) | undefined;
99
+ "onEmit:downloadPage"?: (() => any) | undefined;
100
+ "onEmit:downloadAll"?: (() => any) | undefined;
4
101
  "onEmit:selectRow"?: ((value: T | undefined, index: number) => any) | undefined;
5
102
  "onEmit:changeSort"?: ((context: DataTableSortContext) => any) | undefined;
6
103
  "onEmit:updateHeader"?: ((headers: DataTableHeader<T>[]) => any) | undefined;
7
104
  "onEmit:dblclickRow"?: ((value: T, index: number) => any) | undefined;
8
- "onEmit:changeLimit"?: ((limit: number) => any) | undefined;
9
- "onEmit:changePage"?: ((page: number) => any) | undefined;
10
- "onEmit:downloadPage"?: (() => any) | undefined;
11
- "onEmit:downloadAll"?: (() => any) | undefined;
12
105
  }> & import('vue').PublicProps & (typeof globalThis extends {
13
106
  __VLS_PROPS_FALLBACK: infer P;
14
107
  } ? P : {});
@@ -17,8 +110,8 @@ declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_se
17
110
  getSortContext: () => DataTableSortContext;
18
111
  }>) => void;
19
112
  attrs: any;
20
- slots: DataTableSlots<T>;
21
- emit: DataTableEmits<T>;
113
+ slots: Slots<T>;
114
+ emit: Emits<T>;
22
115
  }>) => import('vue').VNode & {
23
116
  __ctx?: Awaited<typeof __VLS_setup>;
24
117
  };
@@ -1,14 +1,107 @@
1
- import { DataTableEmits, DataTableHeader, DataTableProps, DataTableSlots, DataTableSortContext } from './types/data-table';
1
+ import { ClassValue, StyleValue } from 'vue';
2
+ import { DataTableControlsPlacement, DataTableHeader, DataTableLabels, DataTableSortContext, DataTableSortMode } from './helpers/data-table';
3
+ /**
4
+ * DataTable の props
5
+ */
6
+ export interface Props<T = unknown> {
7
+ /** 表示している行のデータ。スロットで描画する行と同じ順に並んでいること */
8
+ dataList: T[];
9
+ /** ヘッダ。id は一意であること */
10
+ headers: DataTableHeader<T>[];
11
+ /** 読み込み中。true の間は行を描画せず読み込み中の表示を出す */
12
+ loading?: boolean;
13
+ /** 総件数。未指定なら dataList の件数 */
14
+ totalCount?: number;
15
+ /** 現在ページ(1起点) */
16
+ current?: number;
17
+ /** 1ページあたりの表示件数 */
18
+ limit?: number;
19
+ /** 1ページあたりの表示件数の上限 */
20
+ maxLimit?: number;
21
+ /** ページネーションに並べるページ番号の最大数 */
22
+ maxPagination?: number;
23
+ /** 行をクリックで選択できるか */
24
+ selectable?: boolean;
25
+ /** コントロールを出す位置 */
26
+ controls?: DataTableControlsPlacement;
27
+ /** ページネーションを出す位置。controls が無い側には出ない */
28
+ pagination?: DataTableControlsPlacement;
29
+ /** ページダウンロードボタンを表示するか */
30
+ showDownloadPage?: boolean;
31
+ /** 全件ダウンロードボタンを表示するか */
32
+ showDownloadAll?: boolean;
33
+ /** 総件数を表示するか */
34
+ showTotal?: boolean;
35
+ /** 1ページあたりの表示件数の入力を表示するか */
36
+ showLimit?: boolean;
37
+ /** ページネーションにページ番号の選択を表示するか */
38
+ showPageSelect?: boolean;
39
+ /** dataList が空のときにデータが無い旨の行を表示するか */
40
+ showNoData?: boolean;
41
+ /** ヘッダの境界のドラッグで列幅を変えられるか */
42
+ resizable?: boolean;
43
+ /** ヘッダのクリックでソートできるか */
44
+ sortable?: boolean;
45
+ /** ソートの方式。未指定なら remote */
46
+ sortMode?: DataTableSortMode;
47
+ /** テーブルをスクロールする領域に付ける class */
48
+ contentClass?: ClassValue;
49
+ /** テーブルをスクロールする領域に付ける style */
50
+ contentStyle?: StyleValue;
51
+ /** table に付ける class */
52
+ tableClass?: ClassValue;
53
+ /** table に付ける style */
54
+ tableStyle?: StyleValue;
55
+ /** 表示する文言。未指定の項目は英語 */
56
+ labels?: DataTableLabels;
57
+ /** 総件数の整形。未指定なら en-US の桁区切り。SSR とクライアントで同じ文字列を返すこと */
58
+ formatTotalCount?: (count: number) => string;
59
+ }
60
+ /**
61
+ * DataTable が発行するイベント
62
+ */
63
+ export interface Emits<T = unknown> {
64
+ /** 選択が変わった。クリックでの選択・解除、カーソルキーでの移動、読み込み完了時の解除で発行する。解除は undefined と -1 */
65
+ (e: 'emit:selectRow', value: T | undefined, index: number): void;
66
+ /** ソートの条件が変わった。sortMode に関わらず発行する */
67
+ (e: 'emit:changeSort', context: DataTableSortContext): void;
68
+ (e: 'emit:updateHeader', headers: DataTableHeader<T>[]): void;
69
+ (e: 'emit:dblclickRow', value: T, index: number): void;
70
+ (e: 'emit:changeLimit', limit: number): void;
71
+ (e: 'emit:changePage', page: number): void;
72
+ (e: 'emit:downloadPage'): void;
73
+ (e: 'emit:downloadAll'): void;
74
+ }
75
+ /**
76
+ * DataTable のスロット
77
+ */
78
+ export interface Slots<T = unknown> {
79
+ /** 行。tr を rows と同じ順に並べ、tr の click で clickRow(row, index) を呼ぶ */
80
+ default?(props: {
81
+ /** 表示する行。sortMode が page のときはソートした順、それ以外は dataList そのもの */
82
+ rows: T[];
83
+ /** 行を選択する。選択している行なら選択を解除する */
84
+ clickRow: (row: T, index: number) => void;
85
+ /** 行を選択してダブルクリックを通知する */
86
+ dblclickRow: (row: T, index: number) => void;
87
+ /** 行のインデックスから、ページをまたいだ1起点の行番号を返す */
88
+ rowNumber: (index: number) => number;
89
+ /** 選択している行のインデックス。選択していなければ -1 */
90
+ selectedIndex: number;
91
+ }): unknown;
92
+ /** 読み込み中の表示。未指定なら既定のスピナー */
93
+ loading?(): unknown;
94
+ }
2
95
  declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
- props: __VLS_PrettifyLocal<DataTableProps<T> & {
96
+ props: __VLS_PrettifyLocal<Props<T> & {
97
+ "onEmit:changePage"?: ((page: number) => any) | undefined;
98
+ "onEmit:changeLimit"?: ((limit: number) => any) | undefined;
99
+ "onEmit:downloadPage"?: (() => any) | undefined;
100
+ "onEmit:downloadAll"?: (() => any) | undefined;
4
101
  "onEmit:selectRow"?: ((value: T | undefined, index: number) => any) | undefined;
5
102
  "onEmit:changeSort"?: ((context: DataTableSortContext) => any) | undefined;
6
103
  "onEmit:updateHeader"?: ((headers: DataTableHeader<T>[]) => any) | undefined;
7
104
  "onEmit:dblclickRow"?: ((value: T, index: number) => any) | undefined;
8
- "onEmit:changeLimit"?: ((limit: number) => any) | undefined;
9
- "onEmit:changePage"?: ((page: number) => any) | undefined;
10
- "onEmit:downloadPage"?: (() => any) | undefined;
11
- "onEmit:downloadAll"?: (() => any) | undefined;
12
105
  }> & import('vue').PublicProps & (typeof globalThis extends {
13
106
  __VLS_PROPS_FALLBACK: infer P;
14
107
  } ? P : {});
@@ -17,8 +110,8 @@ declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_se
17
110
  getSortContext: () => DataTableSortContext;
18
111
  }>) => void;
19
112
  attrs: any;
20
- slots: DataTableSlots<T>;
21
- emit: DataTableEmits<T>;
113
+ slots: Slots<T>;
114
+ emit: Emits<T>;
22
115
  }>) => import('vue').VNode & {
23
116
  __ctx?: Awaited<typeof __VLS_setup>;
24
117
  };
@@ -1,4 +1,3 @@
1
- import { ClassValue, StyleValue } from 'vue';
2
1
  /** 列の値の型。ソートの比較方法を決める */
3
2
  export type DataTableValueType = 'boolean' | 'string' | 'number' | 'object';
4
3
  /** ソートの方式。page は表示中の行を並べ替えて表示し、remote はソート条件を通知するだけで利用側が再取得する */
@@ -82,98 +81,6 @@ export interface DataTableLabels {
82
81
  }
83
82
  /** 関数を評価した後の文言 */
84
83
  export type DataTableResolvedLabels = Record<keyof DataTableLabels, string>;
85
- /**
86
- * DataTable の props
87
- */
88
- export interface DataTableProps<T = unknown> {
89
- /** 表示している行のデータ。スロットで描画する行と同じ順に並んでいること */
90
- dataList: T[];
91
- /** ヘッダ。id は一意であること */
92
- headers: DataTableHeader<T>[];
93
- /** 読み込み中。true の間は行を描画せず読み込み中の表示を出す */
94
- loading?: boolean;
95
- /** 総件数。未指定なら dataList の件数 */
96
- totalCount?: number;
97
- /** 現在ページ(1起点) */
98
- current?: number;
99
- /** 1ページあたりの表示件数 */
100
- limit?: number;
101
- /** 1ページあたりの表示件数の上限 */
102
- maxLimit?: number;
103
- /** ページネーションに並べるページ番号の最大数 */
104
- maxPagination?: number;
105
- /** 行をクリックで選択できるか */
106
- selectable?: boolean;
107
- /** コントロールを出す位置 */
108
- controls?: DataTableControlsPlacement;
109
- /** ページネーションを出す位置。controls が無い側には出ない */
110
- pagination?: DataTableControlsPlacement;
111
- /** ページダウンロードボタンを表示するか */
112
- showDownloadPage?: boolean;
113
- /** 全件ダウンロードボタンを表示するか */
114
- showDownloadAll?: boolean;
115
- /** 総件数を表示するか */
116
- showTotal?: boolean;
117
- /** 1ページあたりの表示件数の入力を表示するか */
118
- showLimit?: boolean;
119
- /** ページネーションにページ番号の選択を表示するか */
120
- showPageSelect?: boolean;
121
- /** dataList が空のときにデータが無い旨の行を表示するか */
122
- showNoData?: boolean;
123
- /** ヘッダの境界のドラッグで列幅を変えられるか */
124
- resizable?: boolean;
125
- /** ヘッダのクリックでソートできるか */
126
- sortable?: boolean;
127
- /** ソートの方式。未指定なら remote */
128
- sortMode?: DataTableSortMode;
129
- /** テーブルをスクロールする領域に付ける class */
130
- contentClass?: ClassValue;
131
- /** テーブルをスクロールする領域に付ける style */
132
- contentStyle?: StyleValue;
133
- /** table に付ける class */
134
- tableClass?: ClassValue;
135
- /** table に付ける style */
136
- tableStyle?: StyleValue;
137
- /** 表示する文言。未指定の項目は英語 */
138
- labels?: DataTableLabels;
139
- /** 総件数の整形。未指定なら en-US の桁区切り。SSR とクライアントで同じ文字列を返すこと */
140
- formatTotalCount?: (count: number) => string;
141
- }
142
- /**
143
- * DataTable が発行するイベント
144
- */
145
- export interface DataTableEmits<T = unknown> {
146
- /** 選択が変わった。クリックでの選択・解除、カーソルキーでの移動、読み込み完了時の解除で発行する。解除は undefined と -1 */
147
- (e: 'emit:selectRow', value: T | undefined, index: number): void;
148
- /** ソートの条件が変わった。sortMode に関わらず発行する */
149
- (e: 'emit:changeSort', context: DataTableSortContext): void;
150
- (e: 'emit:updateHeader', headers: DataTableHeader<T>[]): void;
151
- (e: 'emit:dblclickRow', value: T, index: number): void;
152
- (e: 'emit:changeLimit', limit: number): void;
153
- (e: 'emit:changePage', page: number): void;
154
- (e: 'emit:downloadPage'): void;
155
- (e: 'emit:downloadAll'): void;
156
- }
157
- /**
158
- * DataTable のスロット
159
- */
160
- export interface DataTableSlots<T = unknown> {
161
- /** 行。tr を rows と同じ順に並べ、tr の click で clickRow(row, index) を呼ぶ */
162
- default?(props: {
163
- /** 表示する行。sortMode が page のときはソートした順、それ以外は dataList そのもの */
164
- rows: T[];
165
- /** 行を選択する。選択している行なら選択を解除する */
166
- clickRow: (row: T, index: number) => void;
167
- /** 行を選択してダブルクリックを通知する */
168
- dblclickRow: (row: T, index: number) => void;
169
- /** 行のインデックスから、ページをまたいだ1起点の行番号を返す */
170
- rowNumber: (index: number) => number;
171
- /** 選択している行のインデックス。選択していなければ -1 */
172
- selectedIndex: number;
173
- }): unknown;
174
- /** 読み込み中の表示。未指定なら既定のスピナー */
175
- loading?(): unknown;
176
- }
177
84
  /**
178
85
  * ソートの状態
179
86
  */
@@ -183,3 +90,50 @@ export interface DataTableSortContext {
183
90
  /** 降順なら true */
184
91
  descending: boolean;
185
92
  }
93
+ /**
94
+ * ドット区切りのパスで入れ子の値を取り出す。途中が null なら undefined
95
+ *
96
+ * @param {unknown} obj
97
+ * @param {string} path 'a.b.c' の形。'a[0].b' は 'a.0.b' と同じ
98
+ * @returns {unknown}
99
+ */
100
+ export declare const getValueByPath: (obj: unknown, path: string) => unknown;
101
+ /**
102
+ * 文字列または文字列を返す関数から文字列を得る
103
+ *
104
+ * @param {string | (() => string)} label
105
+ * @returns {string}
106
+ */
107
+ export declare const resolveLabel: (label: string | (() => string) | undefined) => string;
108
+ /**
109
+ * 型に応じて2つの値を比較する。null / undefined は最小として扱う
110
+ *
111
+ * @param {unknown} a
112
+ * @param {unknown} b
113
+ * @param {DataTableValueType} type
114
+ * @returns {number} a が前なら負の数、後ろなら正の数、等しければ 0
115
+ */
116
+ export declare const compareValues: (a: unknown, b: unknown, type: DataTableValueType) => number;
117
+ /**
118
+ * 行の同一性の判定に使う文字列にする。bigint は文字列にし、循環参照は空文字にする
119
+ *
120
+ * @param {unknown} value
121
+ * @returns {string}
122
+ */
123
+ export declare const stringifyValue: (value: unknown) => string;
124
+ /**
125
+ * ヘッダの csv の定義から CSV の列名を作る
126
+ *
127
+ * @param {DataTableHeader<T>[]} headers
128
+ * @returns {string[]} 列名
129
+ */
130
+ export declare const headersToCsvColumns: <T>(headers: DataTableHeader<T>[]) => string[];
131
+ /**
132
+ * ヘッダの csv の定義に従って行から CSV の列の値を取り出す
133
+ *
134
+ * @param {DataTableHeader<T>[]} headers
135
+ * @param {T} row
136
+ * @param {number} [rowNumber] key が '$index' の列に出力する行番号
137
+ * @returns {unknown[]} 列の値。文字列化はしない
138
+ */
139
+ export declare const rowToCsvColumns: <T>(headers: DataTableHeader<T>[], row: T, rowNumber?: number) => unknown[];
@@ -1,4 +1,3 @@
1
- import { ClassValue, StyleValue } from 'vue';
2
1
  /** 列の値の型。ソートの比較方法を決める */
3
2
  export type DataTableValueType = 'boolean' | 'string' | 'number' | 'object';
4
3
  /** ソートの方式。page は表示中の行を並べ替えて表示し、remote はソート条件を通知するだけで利用側が再取得する */
@@ -82,98 +81,6 @@ export interface DataTableLabels {
82
81
  }
83
82
  /** 関数を評価した後の文言 */
84
83
  export type DataTableResolvedLabels = Record<keyof DataTableLabels, string>;
85
- /**
86
- * DataTable の props
87
- */
88
- export interface DataTableProps<T = unknown> {
89
- /** 表示している行のデータ。スロットで描画する行と同じ順に並んでいること */
90
- dataList: T[];
91
- /** ヘッダ。id は一意であること */
92
- headers: DataTableHeader<T>[];
93
- /** 読み込み中。true の間は行を描画せず読み込み中の表示を出す */
94
- loading?: boolean;
95
- /** 総件数。未指定なら dataList の件数 */
96
- totalCount?: number;
97
- /** 現在ページ(1起点) */
98
- current?: number;
99
- /** 1ページあたりの表示件数 */
100
- limit?: number;
101
- /** 1ページあたりの表示件数の上限 */
102
- maxLimit?: number;
103
- /** ページネーションに並べるページ番号の最大数 */
104
- maxPagination?: number;
105
- /** 行をクリックで選択できるか */
106
- selectable?: boolean;
107
- /** コントロールを出す位置 */
108
- controls?: DataTableControlsPlacement;
109
- /** ページネーションを出す位置。controls が無い側には出ない */
110
- pagination?: DataTableControlsPlacement;
111
- /** ページダウンロードボタンを表示するか */
112
- showDownloadPage?: boolean;
113
- /** 全件ダウンロードボタンを表示するか */
114
- showDownloadAll?: boolean;
115
- /** 総件数を表示するか */
116
- showTotal?: boolean;
117
- /** 1ページあたりの表示件数の入力を表示するか */
118
- showLimit?: boolean;
119
- /** ページネーションにページ番号の選択を表示するか */
120
- showPageSelect?: boolean;
121
- /** dataList が空のときにデータが無い旨の行を表示するか */
122
- showNoData?: boolean;
123
- /** ヘッダの境界のドラッグで列幅を変えられるか */
124
- resizable?: boolean;
125
- /** ヘッダのクリックでソートできるか */
126
- sortable?: boolean;
127
- /** ソートの方式。未指定なら remote */
128
- sortMode?: DataTableSortMode;
129
- /** テーブルをスクロールする領域に付ける class */
130
- contentClass?: ClassValue;
131
- /** テーブルをスクロールする領域に付ける style */
132
- contentStyle?: StyleValue;
133
- /** table に付ける class */
134
- tableClass?: ClassValue;
135
- /** table に付ける style */
136
- tableStyle?: StyleValue;
137
- /** 表示する文言。未指定の項目は英語 */
138
- labels?: DataTableLabels;
139
- /** 総件数の整形。未指定なら en-US の桁区切り。SSR とクライアントで同じ文字列を返すこと */
140
- formatTotalCount?: (count: number) => string;
141
- }
142
- /**
143
- * DataTable が発行するイベント
144
- */
145
- export interface DataTableEmits<T = unknown> {
146
- /** 選択が変わった。クリックでの選択・解除、カーソルキーでの移動、読み込み完了時の解除で発行する。解除は undefined と -1 */
147
- (e: 'emit:selectRow', value: T | undefined, index: number): void;
148
- /** ソートの条件が変わった。sortMode に関わらず発行する */
149
- (e: 'emit:changeSort', context: DataTableSortContext): void;
150
- (e: 'emit:updateHeader', headers: DataTableHeader<T>[]): void;
151
- (e: 'emit:dblclickRow', value: T, index: number): void;
152
- (e: 'emit:changeLimit', limit: number): void;
153
- (e: 'emit:changePage', page: number): void;
154
- (e: 'emit:downloadPage'): void;
155
- (e: 'emit:downloadAll'): void;
156
- }
157
- /**
158
- * DataTable のスロット
159
- */
160
- export interface DataTableSlots<T = unknown> {
161
- /** 行。tr を rows と同じ順に並べ、tr の click で clickRow(row, index) を呼ぶ */
162
- default?(props: {
163
- /** 表示する行。sortMode が page のときはソートした順、それ以外は dataList そのもの */
164
- rows: T[];
165
- /** 行を選択する。選択している行なら選択を解除する */
166
- clickRow: (row: T, index: number) => void;
167
- /** 行を選択してダブルクリックを通知する */
168
- dblclickRow: (row: T, index: number) => void;
169
- /** 行のインデックスから、ページをまたいだ1起点の行番号を返す */
170
- rowNumber: (index: number) => number;
171
- /** 選択している行のインデックス。選択していなければ -1 */
172
- selectedIndex: number;
173
- }): unknown;
174
- /** 読み込み中の表示。未指定なら既定のスピナー */
175
- loading?(): unknown;
176
- }
177
84
  /**
178
85
  * ソートの状態
179
86
  */
@@ -183,3 +90,50 @@ export interface DataTableSortContext {
183
90
  /** 降順なら true */
184
91
  descending: boolean;
185
92
  }
93
+ /**
94
+ * ドット区切りのパスで入れ子の値を取り出す。途中が null なら undefined
95
+ *
96
+ * @param {unknown} obj
97
+ * @param {string} path 'a.b.c' の形。'a[0].b' は 'a.0.b' と同じ
98
+ * @returns {unknown}
99
+ */
100
+ export declare const getValueByPath: (obj: unknown, path: string) => unknown;
101
+ /**
102
+ * 文字列または文字列を返す関数から文字列を得る
103
+ *
104
+ * @param {string | (() => string)} label
105
+ * @returns {string}
106
+ */
107
+ export declare const resolveLabel: (label: string | (() => string) | undefined) => string;
108
+ /**
109
+ * 型に応じて2つの値を比較する。null / undefined は最小として扱う
110
+ *
111
+ * @param {unknown} a
112
+ * @param {unknown} b
113
+ * @param {DataTableValueType} type
114
+ * @returns {number} a が前なら負の数、後ろなら正の数、等しければ 0
115
+ */
116
+ export declare const compareValues: (a: unknown, b: unknown, type: DataTableValueType) => number;
117
+ /**
118
+ * 行の同一性の判定に使う文字列にする。bigint は文字列にし、循環参照は空文字にする
119
+ *
120
+ * @param {unknown} value
121
+ * @returns {string}
122
+ */
123
+ export declare const stringifyValue: (value: unknown) => string;
124
+ /**
125
+ * ヘッダの csv の定義から CSV の列名を作る
126
+ *
127
+ * @param {DataTableHeader<T>[]} headers
128
+ * @returns {string[]} 列名
129
+ */
130
+ export declare const headersToCsvColumns: <T>(headers: DataTableHeader<T>[]) => string[];
131
+ /**
132
+ * ヘッダの csv の定義に従って行から CSV の列の値を取り出す
133
+ *
134
+ * @param {DataTableHeader<T>[]} headers
135
+ * @param {T} row
136
+ * @param {number} [rowNumber] key が '$index' の列に出力する行番号
137
+ * @returns {unknown[]} 列の値。文字列化はしない
138
+ */
139
+ export declare const rowToCsvColumns: <T>(headers: DataTableHeader<T>[], row: T, rowNumber?: number) => unknown[];
@@ -1,5 +1,5 @@
1
1
  import { AppContext, ClassValue, Component, StyleValue } from 'vue';
2
- import { MovableWindowContentProps, MovableWindowDragMode, MovableWindowHandle } from '../types/movable-window.cjs';
2
+ import { MovableWindowContentProps, MovableWindowDragMode, MovableWindowHandle } from '../internal/window-control.cjs';
3
3
  /** showFloatingComponent が中身のコンポーネントに props として渡す関数 */
4
4
  export type FloatingComponentContentProps = MovableWindowContentProps;
5
5
  /** showFloatingComponent / showFloatingMessage が返す、表示中のウィンドウを操作するためのハンドル */
@@ -1,5 +1,5 @@
1
1
  import { AppContext, ClassValue, Component, StyleValue } from 'vue';
2
- import { MovableWindowContentProps, MovableWindowDragMode, MovableWindowHandle } from '../types/movable-window';
2
+ import { MovableWindowContentProps, MovableWindowDragMode, MovableWindowHandle } from '../internal/window-control';
3
3
  /** showFloatingComponent が中身のコンポーネントに props として渡す関数 */
4
4
  export type FloatingComponentContentProps = MovableWindowContentProps;
5
5
  /** showFloatingComponent / showFloatingMessage が返す、表示中のウィンドウを操作するためのハンドル */