cclkit4svelte 2.0.5 → 2.0.7
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/dist/Accordion.svelte +40 -29
- package/dist/Accordion.svelte.d.ts +31 -22
- package/dist/AccordionItem.svelte +120 -87
- package/dist/AccordionItem.svelte.d.ts +43 -34
- package/dist/Alert.svelte +111 -82
- package/dist/Alert.svelte.d.ts +38 -36
- package/dist/Badge.svelte +84 -0
- package/dist/Badge.svelte.d.ts +34 -0
- package/dist/BookCard.svelte +127 -88
- package/dist/BookCard.svelte.d.ts +47 -45
- package/dist/Breadcrumb.svelte +91 -0
- package/dist/Breadcrumb.svelte.d.ts +37 -0
- package/dist/Button.svelte +72 -35
- package/dist/Button.svelte.d.ts +33 -31
- package/dist/Card.svelte +110 -75
- package/dist/Card.svelte.d.ts +38 -36
- package/dist/Carousel.svelte +91 -66
- package/dist/Carousel.svelte.d.ts +26 -24
- package/dist/ChangeHistory.svelte +188 -150
- package/dist/ChangeHistory.svelte.d.ts +29 -27
- package/dist/Checkbox.svelte +120 -89
- package/dist/Checkbox.svelte.d.ts +41 -39
- package/dist/CommonHeader.svelte +51 -24
- package/dist/CommonHeader.svelte.d.ts +38 -36
- package/dist/DatePicker.svelte +239 -188
- package/dist/DatePicker.svelte.d.ts +40 -38
- package/dist/Dialog.svelte +224 -0
- package/dist/Dialog.svelte.d.ts +50 -0
- package/dist/Drawer.svelte +158 -0
- package/dist/Drawer.svelte.d.ts +40 -0
- package/dist/Footer.svelte +32 -16
- package/dist/Footer.svelte.d.ts +21 -19
- package/dist/FormGroup.svelte +67 -43
- package/dist/FormGroup.svelte.d.ts +46 -37
- package/dist/Header.svelte +108 -98
- package/dist/Header.svelte.d.ts +25 -23
- package/dist/Input.svelte +154 -99
- package/dist/Input.svelte.d.ts +62 -60
- package/dist/Pagination.svelte +257 -0
- package/dist/Pagination.svelte.d.ts +35 -0
- package/dist/ProgressBar.svelte +49 -44
- package/dist/ProgressBar.svelte.d.ts +25 -23
- package/dist/RadioButton.svelte +92 -62
- package/dist/RadioButton.svelte.d.ts +40 -38
- package/dist/Select.svelte +94 -53
- package/dist/Select.svelte.d.ts +49 -47
- package/dist/ServiceCard.svelte +71 -64
- package/dist/ServiceCard.svelte.d.ts +27 -25
- package/dist/Skeleton.svelte +96 -0
- package/dist/Skeleton.svelte.d.ts +24 -0
- package/dist/SlideMenu.svelte +157 -0
- package/dist/SlideMenu.svelte.d.ts +42 -0
- package/dist/Spinner.svelte +25 -23
- package/dist/Spinner.svelte.d.ts +20 -18
- package/dist/TabPanel.svelte +42 -21
- package/dist/TabPanel.svelte.d.ts +40 -31
- package/dist/Table.svelte +114 -73
- package/dist/Table.svelte.d.ts +33 -31
- package/dist/Tabs.svelte +78 -72
- package/dist/Tabs.svelte.d.ts +18 -16
- package/dist/Textarea.svelte +101 -52
- package/dist/Textarea.svelte.d.ts +57 -55
- package/dist/Thumbnail.svelte +33 -15
- package/dist/Thumbnail.svelte.d.ts +34 -32
- package/dist/Toaster.svelte +144 -0
- package/dist/Toaster.svelte.d.ts +26 -0
- package/dist/Toggle.svelte +85 -61
- package/dist/Toggle.svelte.d.ts +36 -34
- package/dist/Tooltip.svelte +126 -122
- package/dist/Tooltip.svelte.d.ts +30 -21
- package/dist/const/colorMap.d.ts +5 -0
- package/dist/const/colorMap.js +21 -0
- package/dist/const/variables.css +21 -21
- package/dist/index.d.ts +9 -0
- package/dist/index.js +8 -0
- package/dist/toast.d.ts +29 -0
- package/dist/toast.js +66 -0
- package/dist/types/breadcrumb.d.ts +4 -0
- package/dist/types/breadcrumb.js +1 -0
- package/dist/types/slide-menu.d.ts +5 -0
- package/dist/types/slide-menu.js +1 -0
- package/package.json +87 -89
package/dist/Input.svelte.d.ts
CHANGED
|
@@ -1,62 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* @default ''
|
|
12
|
-
* @type string
|
|
13
|
-
*/ label?: string;
|
|
14
|
-
/**
|
|
15
|
-
* 入力値
|
|
16
|
-
* @default ''
|
|
17
|
-
* @type string
|
|
18
|
-
*/ value?: string;
|
|
19
|
-
/**
|
|
20
|
-
* プレースホルダーのテキスト
|
|
21
|
-
* @default ''
|
|
22
|
-
* @type string
|
|
23
|
-
*/ placeholder?: string;
|
|
24
|
-
/**
|
|
25
|
-
* 枠線の色
|
|
26
|
-
* @default --strawberry-pink
|
|
27
|
-
* @type string
|
|
28
|
-
*/ borderColor?: string;
|
|
29
|
-
/**
|
|
30
|
-
* 非活性状態にするか
|
|
31
|
-
* @default false
|
|
32
|
-
* @type boolean
|
|
33
|
-
*/ disabled?: boolean;
|
|
34
|
-
/**
|
|
35
|
-
* コンポーネントのID
|
|
36
|
-
* @default 'ccl-input'
|
|
37
|
-
* @type string
|
|
38
|
-
*/ id?: string;
|
|
39
|
-
/**
|
|
40
|
-
* バリデーションメッセージ
|
|
41
|
-
* @default ''
|
|
42
|
-
* @type string
|
|
43
|
-
*/ validationMessage?: string;
|
|
44
|
-
/**
|
|
45
|
-
* バリデーションの状態
|
|
46
|
-
* @default true
|
|
47
|
-
* @type boolean
|
|
48
|
-
*/ isValid?: boolean;
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: Props & {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
49
11
|
};
|
|
50
|
-
|
|
51
|
-
[evt: string]: CustomEvent<any>;
|
|
52
|
-
};
|
|
53
|
-
slots: {};
|
|
54
|
-
exports?: {} | undefined;
|
|
55
|
-
bindings?: string | undefined;
|
|
56
|
-
};
|
|
57
|
-
export type InputProps = typeof __propDef.props;
|
|
58
|
-
export type InputEvents = typeof __propDef.events;
|
|
59
|
-
export type InputSlots = typeof __propDef.slots;
|
|
60
|
-
export default class Input extends SvelteComponent<InputProps, InputEvents, InputSlots> {
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
61
13
|
}
|
|
62
|
-
|
|
14
|
+
declare const Input: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
/**
|
|
16
|
+
* 入力フィールドのタイプ
|
|
17
|
+
* @default 'text'
|
|
18
|
+
* @type {'text' | 'password' | 'email' | 'number'}
|
|
19
|
+
*/ type?: "text" | "password" | "email" | "number";
|
|
20
|
+
/**
|
|
21
|
+
* ラベルのテキスト
|
|
22
|
+
* @default ''
|
|
23
|
+
* @type string
|
|
24
|
+
*/ label?: string;
|
|
25
|
+
/**
|
|
26
|
+
* 入力値
|
|
27
|
+
* @default ''
|
|
28
|
+
* @type string
|
|
29
|
+
*/ value?: string;
|
|
30
|
+
/**
|
|
31
|
+
* プレースホルダーのテキスト
|
|
32
|
+
* @default ''
|
|
33
|
+
* @type string
|
|
34
|
+
*/ placeholder?: string;
|
|
35
|
+
/**
|
|
36
|
+
* 枠線の色
|
|
37
|
+
* @default --strawberry-pink
|
|
38
|
+
* @type string
|
|
39
|
+
*/ borderColor?: string;
|
|
40
|
+
/**
|
|
41
|
+
* 非活性状態にするか
|
|
42
|
+
* @default false
|
|
43
|
+
* @type boolean
|
|
44
|
+
*/ disabled?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* コンポーネントのID
|
|
47
|
+
* @default 'ccl-input'
|
|
48
|
+
* @type string
|
|
49
|
+
*/ id?: string;
|
|
50
|
+
/**
|
|
51
|
+
* バリデーションメッセージ
|
|
52
|
+
* @default ''
|
|
53
|
+
* @type string
|
|
54
|
+
*/ validationMessage?: string;
|
|
55
|
+
/**
|
|
56
|
+
* バリデーションの状態
|
|
57
|
+
* @default true
|
|
58
|
+
* @type boolean
|
|
59
|
+
*/ isValid?: boolean;
|
|
60
|
+
}, {
|
|
61
|
+
[evt: string]: CustomEvent<any>;
|
|
62
|
+
}, {}, {}, string>;
|
|
63
|
+
type Input = InstanceType<typeof Input>;
|
|
64
|
+
export default Input;
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { createEventDispatcher } from 'svelte';
|
|
3
|
+
import { CCLVividColor } from './const/config';
|
|
4
|
+
import type { ColorVar } from './const/config';
|
|
5
|
+
import { vividFor } from './const/colorMap';
|
|
6
|
+
|
|
7
|
+
const dispatch = createEventDispatcher<{ change: { page: number } }>();
|
|
8
|
+
|
|
9
|
+
/** 現在のページ(1始まり) */
|
|
10
|
+
export let page: number = 1;
|
|
11
|
+
/** 総アイテム数(`pageCount`とどちらか一方を指定) */
|
|
12
|
+
export let total: number | undefined = undefined;
|
|
13
|
+
/** 1ページあたり件数(`total`指定時に使用) */
|
|
14
|
+
export let perPage: number = 10;
|
|
15
|
+
/** 総ページ数(`total`の代わりに明示指定可) */
|
|
16
|
+
export let pageCount: number | undefined = undefined;
|
|
17
|
+
|
|
18
|
+
/** 省略せず両端に常に表示するページ数 */
|
|
19
|
+
export let boundaryCount: number = 1;
|
|
20
|
+
/** 現在ページの前後に表示するページ数 */
|
|
21
|
+
export let siblingCount: number = 1;
|
|
22
|
+
|
|
23
|
+
/** 最初/最後ページボタンの表示 */
|
|
24
|
+
export let showFirstLast: boolean = true;
|
|
25
|
+
/** 前へ/次へボタンの表示 */
|
|
26
|
+
export let showPrevNext: boolean = true;
|
|
27
|
+
|
|
28
|
+
/** 操作不可にする */
|
|
29
|
+
export let disabled: boolean = false;
|
|
30
|
+
|
|
31
|
+
/** アクセントカラー(選択中・ホバー等) */
|
|
32
|
+
export let accentColor: ColorVar = CCLVividColor.SODA_BLUE;
|
|
33
|
+
|
|
34
|
+
/** `nav`のARIAラベル */
|
|
35
|
+
export let ariaLabel: string = 'Pagination';
|
|
36
|
+
|
|
37
|
+
$: accentFg = vividFor(accentColor as string);
|
|
38
|
+
$: styleInline =
|
|
39
|
+
`--accent-color: var(${accentColor});` + (accentFg ? ` --accent-fg: var(${accentFg});` : '');
|
|
40
|
+
|
|
41
|
+
$: totalPages = Math.max(
|
|
42
|
+
1,
|
|
43
|
+
pageCount ?? (total != null ? Math.ceil(total / Math.max(1, perPage)) : 1)
|
|
44
|
+
);
|
|
45
|
+
$: currentPage = clamp(page, 1, totalPages);
|
|
46
|
+
$: pages = getVisiblePages(totalPages, currentPage, siblingCount, boundaryCount);
|
|
47
|
+
|
|
48
|
+
function clamp(n: number, min: number, max: number) {
|
|
49
|
+
return Math.min(max, Math.max(min, n));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function range(start: number, end: number) {
|
|
53
|
+
const arr: number[] = [];
|
|
54
|
+
for (let i = start; i <= end; i++) arr.push(i);
|
|
55
|
+
return arr;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function getVisiblePages(
|
|
59
|
+
total: number,
|
|
60
|
+
current: number,
|
|
61
|
+
sib: number,
|
|
62
|
+
boundary: number
|
|
63
|
+
): (number | 'ellipsis-start' | 'ellipsis-end')[] {
|
|
64
|
+
if (total <= 0) return [1];
|
|
65
|
+
|
|
66
|
+
const startPages = range(1, Math.min(boundary, total));
|
|
67
|
+
const endPages = range(Math.max(total - boundary + 1, boundary + 1), total);
|
|
68
|
+
|
|
69
|
+
// 兄弟範囲の開始/終了を計算
|
|
70
|
+
const siblingsStart = Math.max(
|
|
71
|
+
Math.min(current - sib, total - boundary - sib * 2 - 1),
|
|
72
|
+
boundary + 2
|
|
73
|
+
);
|
|
74
|
+
const siblingsEnd = Math.min(
|
|
75
|
+
Math.max(current + sib, boundary + sib * 2 + 2),
|
|
76
|
+
endPages.length > 0 ? endPages[0] - 2 : total - 1
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
const pages: (number | 'ellipsis-start' | 'ellipsis-end')[] = [];
|
|
80
|
+
pages.push(...startPages);
|
|
81
|
+
|
|
82
|
+
if (siblingsStart > boundary + 2) {
|
|
83
|
+
pages.push('ellipsis-start');
|
|
84
|
+
} else if (boundary + 1 < total - boundary) {
|
|
85
|
+
pages.push(boundary + 1);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
pages.push(...range(siblingsStart, siblingsEnd));
|
|
89
|
+
|
|
90
|
+
if (siblingsEnd < total - boundary - 1) {
|
|
91
|
+
pages.push('ellipsis-end');
|
|
92
|
+
} else if (total - boundary > boundary) {
|
|
93
|
+
pages.push(total - boundary);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
pages.push(...endPages);
|
|
97
|
+
// ユニーク化と並び順維持
|
|
98
|
+
const seen = new Set<string>();
|
|
99
|
+
return pages.filter((p) => {
|
|
100
|
+
const key = String(p);
|
|
101
|
+
if (seen.has(key)) return false;
|
|
102
|
+
seen.add(key);
|
|
103
|
+
return true;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function goTo(target: number) {
|
|
108
|
+
if (disabled) return;
|
|
109
|
+
const next = clamp(target, 1, totalPages);
|
|
110
|
+
if (next !== currentPage) {
|
|
111
|
+
dispatch('change', { page: next });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//
|
|
115
|
+
</script>
|
|
116
|
+
|
|
117
|
+
<nav class="ccl-pagination" aria-label={ariaLabel} style={styleInline}>
|
|
118
|
+
<ul class="list" role="list">
|
|
119
|
+
{#if showFirstLast}
|
|
120
|
+
<li>
|
|
121
|
+
<button
|
|
122
|
+
type="button"
|
|
123
|
+
class="item control"
|
|
124
|
+
on:click={() => goTo(1)}
|
|
125
|
+
aria-label="Go to first page"
|
|
126
|
+
disabled={disabled || currentPage === 1}>«</button
|
|
127
|
+
>
|
|
128
|
+
</li>
|
|
129
|
+
{/if}
|
|
130
|
+
{#if showPrevNext}
|
|
131
|
+
<li>
|
|
132
|
+
<button
|
|
133
|
+
type="button"
|
|
134
|
+
class="item control"
|
|
135
|
+
on:click={() => goTo(currentPage - 1)}
|
|
136
|
+
aria-label="Go to previous page"
|
|
137
|
+
disabled={disabled || currentPage === 1}>‹</button
|
|
138
|
+
>
|
|
139
|
+
</li>
|
|
140
|
+
{/if}
|
|
141
|
+
|
|
142
|
+
{#each pages as p}
|
|
143
|
+
{#if p === 'ellipsis-start' || p === 'ellipsis-end'}
|
|
144
|
+
<li><span class="item ellipsis" aria-hidden="true">…</span></li>
|
|
145
|
+
{:else}
|
|
146
|
+
<li>
|
|
147
|
+
<button
|
|
148
|
+
type="button"
|
|
149
|
+
class="item {p === currentPage ? 'active' : ''}"
|
|
150
|
+
aria-current={p === currentPage ? 'page' : undefined}
|
|
151
|
+
aria-label={`Go to page ${p}`}
|
|
152
|
+
{disabled}
|
|
153
|
+
on:click={() => goTo(p as number)}>{p}</button
|
|
154
|
+
>
|
|
155
|
+
</li>
|
|
156
|
+
{/if}
|
|
157
|
+
{/each}
|
|
158
|
+
|
|
159
|
+
{#if showPrevNext}
|
|
160
|
+
<li>
|
|
161
|
+
<button
|
|
162
|
+
type="button"
|
|
163
|
+
class="item control"
|
|
164
|
+
on:click={() => goTo(currentPage + 1)}
|
|
165
|
+
aria-label="Go to next page"
|
|
166
|
+
disabled={disabled || currentPage === totalPages}>›</button
|
|
167
|
+
>
|
|
168
|
+
</li>
|
|
169
|
+
{/if}
|
|
170
|
+
{#if showFirstLast}
|
|
171
|
+
<li>
|
|
172
|
+
<button
|
|
173
|
+
type="button"
|
|
174
|
+
class="item control"
|
|
175
|
+
on:click={() => goTo(totalPages)}
|
|
176
|
+
aria-label="Go to last page"
|
|
177
|
+
disabled={disabled || currentPage === totalPages}>»</button
|
|
178
|
+
>
|
|
179
|
+
</li>
|
|
180
|
+
{/if}
|
|
181
|
+
</ul>
|
|
182
|
+
<div class="sr-only" aria-live="polite">Page {currentPage} of {totalPages}</div>
|
|
183
|
+
</nav>
|
|
184
|
+
|
|
185
|
+
<style>
|
|
186
|
+
.ccl-pagination {
|
|
187
|
+
display: inline-block;
|
|
188
|
+
--accent-color: var(--soda-blue);
|
|
189
|
+
--size: 36px;
|
|
190
|
+
}
|
|
191
|
+
.list {
|
|
192
|
+
display: flex;
|
|
193
|
+
gap: 6px;
|
|
194
|
+
padding: 0;
|
|
195
|
+
margin: 0;
|
|
196
|
+
list-style: none;
|
|
197
|
+
align-items: center;
|
|
198
|
+
}
|
|
199
|
+
.item {
|
|
200
|
+
width: var(--size);
|
|
201
|
+
min-width: var(--size);
|
|
202
|
+
height: var(--size);
|
|
203
|
+
padding: 0;
|
|
204
|
+
border-radius: 50%;
|
|
205
|
+
border: 2px solid var(--cloud-grey);
|
|
206
|
+
background: white;
|
|
207
|
+
color: var(--wrap-grey);
|
|
208
|
+
font-size: 14px;
|
|
209
|
+
line-height: 1;
|
|
210
|
+
display: inline-flex;
|
|
211
|
+
align-items: center;
|
|
212
|
+
justify-content: center;
|
|
213
|
+
cursor: pointer;
|
|
214
|
+
transition:
|
|
215
|
+
border-color 0.15s,
|
|
216
|
+
color 0.15s,
|
|
217
|
+
background 0.15s;
|
|
218
|
+
}
|
|
219
|
+
.item.control {
|
|
220
|
+
font-size: 18px; /* larger chevrons */
|
|
221
|
+
}
|
|
222
|
+
.item.ellipsis {
|
|
223
|
+
width: auto;
|
|
224
|
+
min-width: auto;
|
|
225
|
+
padding: 0 4px;
|
|
226
|
+
border-radius: 0;
|
|
227
|
+
background: transparent;
|
|
228
|
+
border: none;
|
|
229
|
+
cursor: default;
|
|
230
|
+
color: var(--wrap-grey);
|
|
231
|
+
}
|
|
232
|
+
.item:hover:not(:disabled) {
|
|
233
|
+
border-color: var(--accent-color);
|
|
234
|
+
color: var(--accent-color);
|
|
235
|
+
}
|
|
236
|
+
.item.active {
|
|
237
|
+
background: var(--accent-color);
|
|
238
|
+
border-color: var(--accent-color);
|
|
239
|
+
color: var(--accent-fg, #fff);
|
|
240
|
+
cursor: default;
|
|
241
|
+
}
|
|
242
|
+
.item:disabled {
|
|
243
|
+
opacity: 0.5;
|
|
244
|
+
cursor: not-allowed;
|
|
245
|
+
}
|
|
246
|
+
.sr-only {
|
|
247
|
+
position: absolute;
|
|
248
|
+
width: 1px;
|
|
249
|
+
height: 1px;
|
|
250
|
+
padding: 0;
|
|
251
|
+
margin: -1px;
|
|
252
|
+
overflow: hidden;
|
|
253
|
+
clip: rect(0, 0, 0, 0);
|
|
254
|
+
white-space: nowrap;
|
|
255
|
+
border: 0;
|
|
256
|
+
}
|
|
257
|
+
</style>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ColorVar } from './const/config';
|
|
2
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
+
$$bindings?: Bindings;
|
|
5
|
+
} & Exports;
|
|
6
|
+
(internal: unknown, props: Props & {
|
|
7
|
+
$$events?: Events;
|
|
8
|
+
$$slots?: Slots;
|
|
9
|
+
}): Exports & {
|
|
10
|
+
$set?: any;
|
|
11
|
+
$on?: any;
|
|
12
|
+
};
|
|
13
|
+
z_$$bindings?: Bindings;
|
|
14
|
+
}
|
|
15
|
+
declare const Pagination: $$__sveltets_2_IsomorphicComponent<{
|
|
16
|
+
/** 現在のページ(1始まり) */ page?: number;
|
|
17
|
+
/** 総アイテム数(`pageCount`とどちらか一方を指定) */ total?: number | undefined;
|
|
18
|
+
/** 1ページあたり件数(`total`指定時に使用) */ perPage?: number;
|
|
19
|
+
/** 総ページ数(`total`の代わりに明示指定可) */ pageCount?: number | undefined;
|
|
20
|
+
/** 省略せず両端に常に表示するページ数 */ boundaryCount?: number;
|
|
21
|
+
/** 現在ページの前後に表示するページ数 */ siblingCount?: number;
|
|
22
|
+
/** 最初/最後ページボタンの表示 */ showFirstLast?: boolean;
|
|
23
|
+
/** 前へ/次へボタンの表示 */ showPrevNext?: boolean;
|
|
24
|
+
/** 操作不可にする */ disabled?: boolean;
|
|
25
|
+
/** アクセントカラー(選択中・ホバー等) */ accentColor?: ColorVar;
|
|
26
|
+
/** `nav`のARIAラベル */ ariaLabel?: string;
|
|
27
|
+
}, {
|
|
28
|
+
change: CustomEvent<{
|
|
29
|
+
page: number;
|
|
30
|
+
}>;
|
|
31
|
+
} & {
|
|
32
|
+
[evt: string]: CustomEvent<any>;
|
|
33
|
+
}, {}, {}, string>;
|
|
34
|
+
type Pagination = InstanceType<typeof Pagination>;
|
|
35
|
+
export default Pagination;
|
package/dist/ProgressBar.svelte
CHANGED
|
@@ -1,52 +1,57 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export let
|
|
5
|
-
export let
|
|
6
|
-
export let
|
|
7
|
-
export let
|
|
8
|
-
export let
|
|
9
|
-
export let
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { CCLVividColor, ProgressBarHeight } from './const/config';
|
|
3
|
+
|
|
4
|
+
export let value: number = 0; // 現在の進捗 (0-100)
|
|
5
|
+
export let maxValue: number = 100; // 最大値
|
|
6
|
+
export let barColor: string = CCLVividColor.SODA_BLUE; // バーの色
|
|
7
|
+
export let backgroundColor: string = '#e0e0e0'; // 背景色
|
|
8
|
+
export let height: ProgressBarHeight = ProgressBarHeight.DEFAULT; // プログレスバーの高さ
|
|
9
|
+
export let containerWidth: string = '100%'; // プログレスバー全体の幅
|
|
10
|
+
export let isSticky: boolean = false; // 上部に固定表示するか
|
|
11
|
+
export let isRounded: boolean = true; // 角を丸くするか
|
|
12
|
+
|
|
13
|
+
$: progress = (value / maxValue) * 100;
|
|
14
|
+
$: finalBarColor = barColor.startsWith('--') ? `var(${barColor})` : barColor;
|
|
15
|
+
$: finalBackgroundColor = backgroundColor.startsWith('--')
|
|
16
|
+
? `var(${backgroundColor})`
|
|
17
|
+
: backgroundColor;
|
|
13
18
|
</script>
|
|
14
19
|
|
|
15
20
|
<div
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
class="progress-bar-container"
|
|
22
|
+
class:sticky={isSticky}
|
|
23
|
+
class:rounded={isRounded}
|
|
24
|
+
style="background-color: {finalBackgroundColor}; width: {containerWidth}; height: {height};"
|
|
25
|
+
role="progressbar"
|
|
26
|
+
aria-valuenow={value}
|
|
27
|
+
aria-valuemin="0"
|
|
28
|
+
aria-valuemax={maxValue}
|
|
24
29
|
>
|
|
25
|
-
|
|
30
|
+
<div class="progress-bar" style="width: {progress}%; background-color: {finalBarColor};"></div>
|
|
26
31
|
</div>
|
|
27
32
|
|
|
28
33
|
<style>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
34
|
+
.progress-bar-container {
|
|
35
|
+
overflow: hidden;
|
|
36
|
+
position: relative;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.progress-bar-container.sticky {
|
|
40
|
+
position: fixed;
|
|
41
|
+
top: 0;
|
|
42
|
+
left: 0;
|
|
43
|
+
z-index: 9999;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.progress-bar-container.rounded {
|
|
47
|
+
border-radius: 10px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.progress-bar {
|
|
51
|
+
height: 100%;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.progress-bar-container.rounded .progress-bar {
|
|
55
|
+
border-radius: 10px;
|
|
56
|
+
}
|
|
52
57
|
</style>
|
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import { ProgressBarHeight } from './const/config';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
+
$$bindings?: Bindings;
|
|
5
|
+
} & Exports;
|
|
6
|
+
(internal: unknown, props: Props & {
|
|
7
|
+
$$events?: Events;
|
|
8
|
+
$$slots?: Slots;
|
|
9
|
+
}): Exports & {
|
|
10
|
+
$set?: any;
|
|
11
|
+
$on?: any;
|
|
13
12
|
};
|
|
14
|
-
|
|
15
|
-
[evt: string]: CustomEvent<any>;
|
|
16
|
-
};
|
|
17
|
-
slots: {};
|
|
18
|
-
exports?: {} | undefined;
|
|
19
|
-
bindings?: string | undefined;
|
|
20
|
-
};
|
|
21
|
-
export type ProgressBarProps = typeof __propDef.props;
|
|
22
|
-
export type ProgressBarEvents = typeof __propDef.events;
|
|
23
|
-
export type ProgressBarSlots = typeof __propDef.slots;
|
|
24
|
-
export default class ProgressBar extends SvelteComponent<ProgressBarProps, ProgressBarEvents, ProgressBarSlots> {
|
|
13
|
+
z_$$bindings?: Bindings;
|
|
25
14
|
}
|
|
26
|
-
|
|
15
|
+
declare const ProgressBar: $$__sveltets_2_IsomorphicComponent<{
|
|
16
|
+
value?: number;
|
|
17
|
+
maxValue?: number;
|
|
18
|
+
barColor?: string;
|
|
19
|
+
backgroundColor?: string;
|
|
20
|
+
height?: ProgressBarHeight;
|
|
21
|
+
containerWidth?: string;
|
|
22
|
+
isSticky?: boolean;
|
|
23
|
+
isRounded?: boolean;
|
|
24
|
+
}, {
|
|
25
|
+
[evt: string]: CustomEvent<any>;
|
|
26
|
+
}, {}, {}, string>;
|
|
27
|
+
type ProgressBar = InstanceType<typeof ProgressBar>;
|
|
28
|
+
export default ProgressBar;
|