@operato/data-grist 1.0.0-beta.7 → 1.0.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/.storybook/main.js +3 -0
- package/.storybook/server.mjs +8 -0
- package/CHANGELOG.md +412 -0
- package/demo/data-grist-test.html +1 -1
- package/demo/index.html +16 -4
- package/demo/report-test.html +1 -1
- package/dist/src/configure/zero-config.d.ts +2 -0
- package/dist/src/configure/zero-config.js +3 -1
- package/dist/src/configure/zero-config.js.map +1 -1
- package/dist/src/data-card/data-card-field.d.ts +1 -1
- package/dist/src/data-card/data-card-field.js +3 -2
- package/dist/src/data-card/data-card-field.js.map +1 -1
- package/dist/src/data-card/data-card.js +1 -0
- package/dist/src/data-card/data-card.js.map +1 -1
- package/dist/src/data-grid/data-grid-body.d.ts +4 -2
- package/dist/src/data-grid/data-grid-body.js +74 -40
- package/dist/src/data-grid/data-grid-body.js.map +1 -1
- package/dist/src/data-grid/data-grid-field.d.ts +1 -1
- package/dist/src/data-grid/data-grid-field.js +1 -1
- package/dist/src/data-grid/data-grid-field.js.map +1 -1
- package/dist/src/data-grid/data-grid-footer.d.ts +2 -2
- package/dist/src/data-grid/data-grid-footer.js +9 -10
- package/dist/src/data-grid/data-grid-footer.js.map +1 -1
- package/dist/src/data-grid/data-grid-header.d.ts +4 -6
- package/dist/src/data-grid/data-grid-header.js +39 -48
- package/dist/src/data-grid/data-grid-header.js.map +1 -1
- package/dist/src/data-grid/data-grid.d.ts +2 -2
- package/dist/src/data-grid/data-grid.js +4 -3
- package/dist/src/data-grid/data-grid.js.map +1 -1
- package/dist/src/data-grid/event-handlers/data-grid-body-click-handler.js +9 -11
- package/dist/src/data-grid/event-handlers/data-grid-body-click-handler.js.map +1 -1
- package/dist/src/data-grist.d.ts +7 -5
- package/dist/src/data-grist.js +154 -112
- package/dist/src/data-grist.js.map +1 -1
- package/dist/src/data-list/record-partial.js +1 -5
- package/dist/src/data-list/record-partial.js.map +1 -1
- package/dist/src/data-manipulator.d.ts +4 -1
- package/dist/src/data-manipulator.js +12 -0
- package/dist/src/data-manipulator.js.map +1 -1
- package/dist/src/data-provider.d.ts +4 -6
- package/dist/src/data-provider.js +12 -23
- package/dist/src/data-provider.js.map +1 -1
- package/dist/src/data-report/data-report-body.d.ts +1 -1
- package/dist/src/data-report/data-report-body.js +4 -4
- package/dist/src/data-report/data-report-body.js.map +1 -1
- package/dist/src/data-report/data-report-header.js +4 -4
- package/dist/src/data-report/data-report-header.js.map +1 -1
- package/dist/src/editors/ox-grist-editor.d.ts +1 -1
- package/dist/src/editors/ox-grist-editor.js +7 -4
- package/dist/src/editors/ox-grist-editor.js.map +1 -1
- package/dist/src/filters/filter-checkbox.d.ts +1 -1
- package/dist/src/filters/filter-checkbox.js +1 -1
- package/dist/src/filters/filter-checkbox.js.map +1 -1
- package/dist/src/filters/filter-input-barcode.d.ts +3 -0
- package/dist/src/filters/filter-input-barcode.js +27 -0
- package/dist/src/filters/filter-input-barcode.js.map +1 -0
- package/dist/src/filters/filter-input.js +1 -1
- package/dist/src/filters/filter-input.js.map +1 -1
- package/dist/src/filters/filter-styles.js +65 -17
- package/dist/src/filters/filter-styles.js.map +1 -1
- package/dist/src/filters/filters-form.js +27 -9
- package/dist/src/filters/filters-form.js.map +1 -1
- package/dist/src/filters/registry.d.ts +1 -1
- package/dist/src/filters/registry.js +10 -7
- package/dist/src/filters/registry.js.map +1 -1
- package/dist/src/gutters/gutter-button.js +5 -4
- package/dist/src/gutters/gutter-button.js.map +1 -1
- package/dist/src/gutters/gutter-dirty.d.ts +5 -1
- package/dist/src/gutters/gutter-dirty.js +17 -2
- package/dist/src/gutters/gutter-dirty.js.map +1 -1
- package/dist/src/gutters/gutter-row-selector.js +2 -1
- package/dist/src/gutters/gutter-row-selector.js.map +1 -1
- package/dist/src/gutters/gutter-sequence.js +15 -0
- package/dist/src/gutters/gutter-sequence.js.map +1 -1
- package/dist/src/record-view/event-handlers/record-view-body-click-handler.js +2 -4
- package/dist/src/record-view/event-handlers/record-view-body-click-handler.js.map +1 -1
- package/dist/src/record-view/event-handlers/record-view-body-keydown-handler.js +2 -2
- package/dist/src/record-view/event-handlers/record-view-body-keydown-handler.js.map +1 -1
- package/dist/src/record-view/record-creator.js +0 -2
- package/dist/src/record-view/record-creator.js.map +1 -1
- package/dist/src/record-view/record-view-body.d.ts +0 -1
- package/dist/src/record-view/record-view-body.js +0 -5
- package/dist/src/record-view/record-view-body.js.map +1 -1
- package/dist/src/record-view/record-view-handler.d.ts +1 -1
- package/dist/src/record-view/record-view.d.ts +0 -1
- package/dist/src/record-view/record-view.js +1 -10
- package/dist/src/record-view/record-view.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-color.js +1 -1
- package/dist/src/renderers/ox-grist-renderer-color.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-json5.js +1 -1
- package/dist/src/renderers/ox-grist-renderer-json5.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-link.js +1 -1
- package/dist/src/renderers/ox-grist-renderer-link.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-select.js +2 -2
- package/dist/src/renderers/ox-grist-renderer-select.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-text.js +6 -2
- package/dist/src/renderers/ox-grist-renderer-text.js.map +1 -1
- package/dist/src/sorters/sorters-control.d.ts +1 -1
- package/dist/src/sorters/sorters-control.js +5 -7
- package/dist/src/sorters/sorters-control.js.map +1 -1
- package/dist/src/types.d.ts +7 -4
- package/dist/src/types.js.map +1 -1
- package/dist/stories/{index.stories.d.ts → barcode-input-filter.stories.d.ts} +9 -13
- package/dist/stories/barcode-input-filter.stories.js +200 -0
- package/dist/stories/barcode-input-filter.stories.js.map +1 -0
- package/dist/stories/default-filters.stories.d.ts +20 -0
- package/dist/stories/default-filters.stories.js +187 -0
- package/dist/stories/default-filters.stories.js.map +1 -0
- package/dist/stories/empty-sorters.stories.d.ts +20 -0
- package/dist/stories/empty-sorters.stories.js +180 -0
- package/dist/stories/empty-sorters.stories.js.map +1 -0
- package/dist/stories/explicit-fetch.stories.d.ts +25 -0
- package/dist/stories/explicit-fetch.stories.js +186 -0
- package/dist/stories/explicit-fetch.stories.js.map +1 -0
- package/dist/stories/grist-modes.stories.d.ts +36 -0
- package/dist/stories/grist-modes.stories.js +448 -0
- package/dist/stories/grist-modes.stories.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/src/configure/zero-config.ts +4 -1
- package/src/data-card/data-card-field.ts +5 -3
- package/src/data-card/data-card.ts +1 -0
- package/src/data-grid/data-grid-body.ts +96 -49
- package/src/data-grid/data-grid-field.ts +3 -2
- package/src/data-grid/data-grid-footer.ts +8 -9
- package/src/data-grid/data-grid-header.ts +38 -47
- package/src/data-grid/data-grid.ts +8 -6
- package/src/data-grid/event-handlers/data-grid-body-click-handler.ts +11 -13
- package/src/data-grist.ts +179 -130
- package/src/data-list/record-partial.ts +1 -5
- package/src/data-manipulator.ts +12 -1
- package/src/data-provider.ts +13 -29
- package/src/data-report/data-report-body.ts +5 -5
- package/src/data-report/data-report-header.ts +5 -5
- package/src/editors/ox-grist-editor.ts +8 -5
- package/src/filters/filter-checkbox.ts +3 -3
- package/src/filters/filter-input-barcode.ts +33 -0
- package/src/filters/filter-input.ts +3 -3
- package/src/filters/filter-styles.ts +65 -17
- package/src/filters/filters-form.ts +30 -9
- package/src/filters/registry.ts +11 -8
- package/src/gutters/gutter-button.ts +5 -4
- package/src/gutters/gutter-dirty.ts +21 -3
- package/src/gutters/gutter-row-selector.ts +2 -1
- package/src/gutters/gutter-sequence.ts +18 -2
- package/src/record-view/event-handlers/record-view-body-click-handler.ts +2 -4
- package/src/record-view/event-handlers/record-view-body-keydown-handler.ts +2 -2
- package/src/record-view/record-creator.ts +0 -2
- package/src/record-view/record-view-body.ts +0 -2
- package/src/record-view/record-view.ts +1 -7
- package/src/renderers/ox-grist-renderer-color.ts +3 -2
- package/src/renderers/ox-grist-renderer-json5.ts +3 -2
- package/src/renderers/ox-grist-renderer-link.ts +3 -2
- package/src/renderers/ox-grist-renderer-select.ts +2 -2
- package/src/renderers/ox-grist-renderer-text.ts +8 -2
- package/src/sorters/sorters-control.ts +6 -9
- package/src/types.ts +8 -4
- package/stories/barcode-input-filter.stories.ts +220 -0
- package/stories/default-filters.stories.ts +204 -0
- package/stories/empty-sorters.stories.ts +197 -0
- package/stories/explicit-fetch.stories.ts +205 -0
- package/stories/grist-modes.stories.ts +488 -0
- package/themes/form-theme.css +75 -0
- package/themes/grist-theme.css +1 -1
- package/dist/src/data-grid/event-handlers/data-grid-body-beforeinput-handler.d.ts +0 -7
- package/dist/src/data-grid/event-handlers/data-grid-body-beforeinput-handler.js +0 -12
- package/dist/src/data-grid/event-handlers/data-grid-body-beforeinput-handler.js.map +0 -1
- package/dist/src/data-grid/event-handlers/data-grid-body-input-handler copy.d.ts +0 -7
- package/dist/src/data-grid/event-handlers/data-grid-body-input-handler copy.js +0 -88
- package/dist/src/data-grid/event-handlers/data-grid-body-input-handler copy.js.map +0 -1
- package/dist/src/data-grid/event-handlers/data-grid-body-input-handler.d.ts +0 -7
- package/dist/src/data-grid/event-handlers/data-grid-body-input-handler.js +0 -88
- package/dist/src/data-grid/event-handlers/data-grid-body-input-handler.js.map +0 -1
- package/dist/src/data-grid/event-handlers/data-grid-body-keydown-handler copy.d.ts +0 -7
- package/dist/src/data-grid/event-handlers/data-grid-body-keydown-handler copy.js +0 -88
- package/dist/src/data-grid/event-handlers/data-grid-body-keydown-handler copy.js.map +0 -1
- package/dist/stories/index.stories.js +0 -33
- package/dist/stories/index.stories.js.map +0 -1
- package/stories/index.stories.ts +0 -52
- package/yarn-error.log +0 -17496
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
body {
|
|
2
|
+
--form-border: none;
|
|
3
|
+
--form-margin: var(--margin-wide);
|
|
4
|
+
--form-max-width: 700px;
|
|
5
|
+
--form-multi-column-max-width: 100%;
|
|
6
|
+
--form-sublabel-font: normal 13px var(--theme-font);
|
|
7
|
+
--form-sublabel-color: var(--secondary-color);
|
|
8
|
+
--form-grid-gap: 12px 5px;
|
|
9
|
+
|
|
10
|
+
--legend-padding: var(--padding-default) 0;
|
|
11
|
+
--legend-font: bold 16px var(--theme-font);
|
|
12
|
+
--legend-text-color: var(--secondary-text-color);
|
|
13
|
+
--legend-border-bottom: 1px solid var(--primary-color);
|
|
14
|
+
|
|
15
|
+
--label-padding: 3px 0;
|
|
16
|
+
--label-font: normal 14px var(--theme-font);
|
|
17
|
+
--label-color: var(--secondary-color);
|
|
18
|
+
|
|
19
|
+
--input-field-border: 1px solid rgba(0, 0, 0, 0.2);
|
|
20
|
+
--input-field-border-radius: var(--border-radius);
|
|
21
|
+
--input-field-padding: 2px 9px;
|
|
22
|
+
--input-field-font: normal 14px var(--theme-font);
|
|
23
|
+
|
|
24
|
+
--search-panel-background-color: rgba(0, 0, 0, 0.1);
|
|
25
|
+
--search-panel-search-iconbutton-size: var(--icon-default-size);
|
|
26
|
+
--search-form-icon-color: var(--primary-color);
|
|
27
|
+
--search-form-box-shadow: 0 2px 3px 1px rgba(0, 0, 0, 0.15);
|
|
28
|
+
--search-form-box-padding: 15px 30px 15px 15px;
|
|
29
|
+
--search-form-background-color: #fff;
|
|
30
|
+
--search-form-narrow-background-color: var(--primary-color);
|
|
31
|
+
--search-form-narrow-text-color: #fff;
|
|
32
|
+
|
|
33
|
+
--file-uploader-border: 1px solid rgba(0, 0, 0, 0.1);
|
|
34
|
+
--file-uploader-background-color: var(--main-section-background-color);
|
|
35
|
+
--file-uploader-font: normal 12px/20px var(--theme-font);
|
|
36
|
+
--file-uploader-color: var(--secondary-color);
|
|
37
|
+
--file-uploader-icon-color: var(--primary-color);
|
|
38
|
+
--file-uploader-candrop-background-color: #fffde9;
|
|
39
|
+
--file-uploader-label-padding: 3px 20px;
|
|
40
|
+
--file-uploader-label-border-radius: var(--border-radius);
|
|
41
|
+
--file-uploader-label-background-color: var(--secondary-color);
|
|
42
|
+
--file-uploader-label-font: normal 12px var(--theme-font);
|
|
43
|
+
--file-uploader-label-color: #fff;
|
|
44
|
+
--file-uploader-li-padding: 2px 5px 0px 5px;
|
|
45
|
+
--file-uploader-li-border-bottom: 1px dotted rgba(0, 0, 0, 0.1);
|
|
46
|
+
--file-uploader-li-icon-margin: 2px 0 2px 5px;
|
|
47
|
+
--file-uploader-li-icon-font: normal 15px var(--mdc-icon-font, 'Material Icons');
|
|
48
|
+
--file-uploader-li-icon-focus-color: var(--primary-color);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@media screen and (max-width: 480px) {
|
|
52
|
+
body {
|
|
53
|
+
--label-font: normal 15px var(--theme-font);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@media (min-width: 481px) and (max-width: 1024px) {
|
|
58
|
+
body {
|
|
59
|
+
--form-margin: 15px 0;
|
|
60
|
+
--form-multi-column-max-width: 100%;
|
|
61
|
+
--form-container-padding: 0 9px 12px 9px;
|
|
62
|
+
--label-font: normal 14px var(--theme-font);
|
|
63
|
+
--input-field-font: normal 15px var(--theme-font);
|
|
64
|
+
--input-field-padding: 3px 5px;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@media only screen and (max-width: 925px) {
|
|
69
|
+
body {
|
|
70
|
+
--form-margin: 14px 0;
|
|
71
|
+
--form-multi-column-max-width: 100%;
|
|
72
|
+
--form-container-padding: 0 9px 12px 9px;
|
|
73
|
+
--input-field-padding: 3px 5px;
|
|
74
|
+
}
|
|
75
|
+
}
|
package/themes/grist-theme.css
CHANGED
|
@@ -38,7 +38,7 @@ body {
|
|
|
38
38
|
|
|
39
39
|
--grid-record-background-color: var(--theme-white-color);
|
|
40
40
|
--grid-record-odd-background-color: rgba(255, 255, 255, 0.4);
|
|
41
|
-
--grid-record-padding: var(--padding-default)
|
|
41
|
+
--grid-record-padding: var(--padding-default);
|
|
42
42
|
--grid-record-color: var(--secondary-color);
|
|
43
43
|
--grid-record-color-hover: var(--primary-color);
|
|
44
44
|
--grid-record-wide-fontsize: var(--fontsize-small);
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ox-grid-body 의 beforeinput handler
|
|
3
|
-
*
|
|
4
|
-
* - handler의 this 는 ox-grid-body임.
|
|
5
|
-
*/
|
|
6
|
-
export async function dataGridBodyBeforeInputHandler(e) {
|
|
7
|
-
if (!this.editTarget) {
|
|
8
|
-
var { row = 0, column = 0 } = this.focused || {};
|
|
9
|
-
this.startEditTarget(row, column);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=data-grid-body-beforeinput-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-grid-body-beforeinput-handler.js","sourceRoot":"","sources":["../../../../src/data-grid/event-handlers/data-grid-body-beforeinput-handler.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAqB,CAAQ;IAC/E,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QACpB,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QAEhD,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;KAClC;AACH,CAAC","sourcesContent":["import { DataGridBody } from '../data-grid-body'\n\n/**\n * ox-grid-body 의 beforeinput handler\n *\n * - handler의 this 는 ox-grid-body임.\n */\nexport async function dataGridBodyBeforeInputHandler(this: DataGridBody, e: Event): Promise<void> {\n if (!this.editTarget) {\n var { row = 0, column = 0 } = this.focused || {}\n\n this.startEditTarget(row, column)\n }\n}\n"]}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ox-grid-body 의 keydown handler
|
|
3
|
-
*
|
|
4
|
-
* - handler의 this 는 ox-grid-body임.
|
|
5
|
-
*/
|
|
6
|
-
export async function dataGridBodyKeydownHandler(e) {
|
|
7
|
-
// arrow-key
|
|
8
|
-
const key = e.key;
|
|
9
|
-
var { row = 0, column = 0 } = this.focused || {};
|
|
10
|
-
var { records = [] } = this.data || {};
|
|
11
|
-
var maxrow = this.config.rows.appendable ? records.length : records.length - 1;
|
|
12
|
-
var maxcolumn = (this.columns || []).filter(column => !column.hidden).length - 1;
|
|
13
|
-
if (this.editTarget) {
|
|
14
|
-
switch (key) {
|
|
15
|
-
case 'Escape':
|
|
16
|
-
case 'Esc':
|
|
17
|
-
/* TODO 편집이 취소되어야 한다. */
|
|
18
|
-
case 'Enter':
|
|
19
|
-
this.editTarget = null;
|
|
20
|
-
this.focus();
|
|
21
|
-
return;
|
|
22
|
-
case 'PageUp':
|
|
23
|
-
case 'PageDown':
|
|
24
|
-
case 'End':
|
|
25
|
-
e.preventDefault();
|
|
26
|
-
case 'Home':
|
|
27
|
-
return;
|
|
28
|
-
// case 'Tab':
|
|
29
|
-
// this.editTarget = null
|
|
30
|
-
// column = Math.min(maxcolumn, column + 1)
|
|
31
|
-
// this.focus()
|
|
32
|
-
// break
|
|
33
|
-
// case 'Down':
|
|
34
|
-
// case 'ArrowDown':
|
|
35
|
-
// this.editTarget = null
|
|
36
|
-
// row = Math.min(maxrow, row + 1)
|
|
37
|
-
// this.focus()
|
|
38
|
-
// break
|
|
39
|
-
default:
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
switch (key) {
|
|
45
|
-
case 'Up':
|
|
46
|
-
case 'ArrowUp':
|
|
47
|
-
row = Math.max(0, row - 1);
|
|
48
|
-
break;
|
|
49
|
-
case 'Down':
|
|
50
|
-
case 'ArrowDown':
|
|
51
|
-
row = Math.min(maxrow, row + 1);
|
|
52
|
-
break;
|
|
53
|
-
case 'Enter':
|
|
54
|
-
this.startEditTarget(row, column);
|
|
55
|
-
return;
|
|
56
|
-
case 'Left':
|
|
57
|
-
case 'ArrowLeft':
|
|
58
|
-
case 'Backspace':
|
|
59
|
-
column = Math.max(0, column - 1);
|
|
60
|
-
break;
|
|
61
|
-
case 'Right':
|
|
62
|
-
case 'ArrowRight':
|
|
63
|
-
case 'Tab':
|
|
64
|
-
column = Math.min(maxcolumn, column + 1);
|
|
65
|
-
break;
|
|
66
|
-
case 'PageUp':
|
|
67
|
-
/* TODO 페이지당 레코드의 수를 계산해서 증감시켜야 한다. */
|
|
68
|
-
row = Math.max(0, row - 10);
|
|
69
|
-
break;
|
|
70
|
-
case 'PageDown':
|
|
71
|
-
row = Math.min(maxrow, row + 10);
|
|
72
|
-
break;
|
|
73
|
-
case 'Esc':
|
|
74
|
-
case 'Escape':
|
|
75
|
-
return;
|
|
76
|
-
default:
|
|
77
|
-
/* TODO move this to input event handler */
|
|
78
|
-
this.startEditTarget(row, column);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
if (!this.focused || this.focused.row !== row || this.focused.column !== column) {
|
|
83
|
-
this.dispatchEvent(new CustomEvent('focus-change', { bubbles: true, composed: true, detail: { row, column } }));
|
|
84
|
-
}
|
|
85
|
-
/* arrow key에 의한 scrollbar의 자동 움직임을 하지 못하도록 한다. */
|
|
86
|
-
e.preventDefault();
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=data-grid-body-input-handler%20copy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-grid-body-input-handler copy.js","sourceRoot":"","sources":["../../../../src/data-grid/event-handlers/data-grid-body-input-handler copy.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataGridBody } from '../data-grid-body'\n\n/**\n * ox-grid-body 의 keydown handler\n *\n * - handler의 this 는 ox-grid-body임.\n */\nexport async function dataGridBodyKeydownHandler(this: DataGridBody, e: KeyboardEvent): Promise<void> {\n // arrow-key\n const key = e.key\n var { row = 0, column = 0 } = this.focused || {}\n var { records = [] } = this.data || {}\n var maxrow = this.config.rows.appendable ? records.length : records.length - 1\n var maxcolumn = (this.columns || []).filter(column => !column.hidden).length - 1\n\n if (this.editTarget) {\n switch (key) {\n case 'Escape':\n case 'Esc':\n /* TODO 편집이 취소되어야 한다. */\n case 'Enter':\n this.editTarget = null\n this.focus()\n return\n\n case 'PageUp':\n case 'PageDown':\n case 'End':\n e.preventDefault()\n case 'Home':\n return\n // case 'Tab':\n // this.editTarget = null\n // column = Math.min(maxcolumn, column + 1)\n // this.focus()\n // break\n\n // case 'Down':\n // case 'ArrowDown':\n // this.editTarget = null\n // row = Math.min(maxrow, row + 1)\n // this.focus()\n // break\n\n default:\n return\n }\n } else {\n switch (key) {\n case 'Up':\n case 'ArrowUp':\n row = Math.max(0, row - 1)\n break\n\n case 'Down':\n case 'ArrowDown':\n row = Math.min(maxrow, row + 1)\n break\n\n case 'Enter':\n this.startEditTarget(row, column)\n return\n\n case 'Left':\n case 'ArrowLeft':\n case 'Backspace':\n column = Math.max(0, column - 1)\n break\n\n case 'Right':\n case 'ArrowRight':\n case 'Tab':\n column = Math.min(maxcolumn, column + 1)\n break\n\n case 'PageUp':\n /* TODO 페이지당 레코드의 수를 계산해서 증감시켜야 한다. */\n row = Math.max(0, row - 10)\n break\n\n case 'PageDown':\n row = Math.min(maxrow, row + 10)\n break\n\n case 'Esc':\n case 'Escape':\n return\n\n default:\n /* TODO move this to input event handler */\n this.startEditTarget(row, column)\n return\n }\n }\n\n if (!this.focused || this.focused.row !== row || this.focused.column !== column) {\n this.dispatchEvent(new CustomEvent('focus-change', { bubbles: true, composed: true, detail: { row, column } }))\n }\n\n /* arrow key에 의한 scrollbar의 자동 움직임을 하지 못하도록 한다. */\n e.preventDefault()\n}\n"]}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ox-grid-body 의 keydown handler
|
|
3
|
-
*
|
|
4
|
-
* - handler의 this 는 ox-grid-body임.
|
|
5
|
-
*/
|
|
6
|
-
export async function dataGridBodyKeydownHandler(e) {
|
|
7
|
-
// arrow-key
|
|
8
|
-
const key = e.key;
|
|
9
|
-
var { row = 0, column = 0 } = this.focused || {};
|
|
10
|
-
var { records = [] } = this.data || {};
|
|
11
|
-
var maxrow = this.config.rows.appendable ? records.length : records.length - 1;
|
|
12
|
-
var maxcolumn = (this.columns || []).filter(column => !column.hidden).length - 1;
|
|
13
|
-
if (this.editTarget) {
|
|
14
|
-
switch (key) {
|
|
15
|
-
case 'Escape':
|
|
16
|
-
case 'Esc':
|
|
17
|
-
/* TODO 편집이 취소되어야 한다. */
|
|
18
|
-
case 'Enter':
|
|
19
|
-
this.editTarget = null;
|
|
20
|
-
this.focus();
|
|
21
|
-
return;
|
|
22
|
-
case 'PageUp':
|
|
23
|
-
case 'PageDown':
|
|
24
|
-
case 'End':
|
|
25
|
-
e.preventDefault();
|
|
26
|
-
case 'Home':
|
|
27
|
-
return;
|
|
28
|
-
// case 'Tab':
|
|
29
|
-
// this.editTarget = null
|
|
30
|
-
// column = Math.min(maxcolumn, column + 1)
|
|
31
|
-
// this.focus()
|
|
32
|
-
// break
|
|
33
|
-
// case 'Down':
|
|
34
|
-
// case 'ArrowDown':
|
|
35
|
-
// this.editTarget = null
|
|
36
|
-
// row = Math.min(maxrow, row + 1)
|
|
37
|
-
// this.focus()
|
|
38
|
-
// break
|
|
39
|
-
default:
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
switch (key) {
|
|
45
|
-
case 'Up':
|
|
46
|
-
case 'ArrowUp':
|
|
47
|
-
row = Math.max(0, row - 1);
|
|
48
|
-
break;
|
|
49
|
-
case 'Down':
|
|
50
|
-
case 'ArrowDown':
|
|
51
|
-
row = Math.min(maxrow, row + 1);
|
|
52
|
-
break;
|
|
53
|
-
case 'Enter':
|
|
54
|
-
this.startEditTarget(row, column);
|
|
55
|
-
return;
|
|
56
|
-
case 'Left':
|
|
57
|
-
case 'ArrowLeft':
|
|
58
|
-
case 'Backspace':
|
|
59
|
-
column = Math.max(0, column - 1);
|
|
60
|
-
break;
|
|
61
|
-
case 'Right':
|
|
62
|
-
case 'ArrowRight':
|
|
63
|
-
case 'Tab':
|
|
64
|
-
column = Math.min(maxcolumn, column + 1);
|
|
65
|
-
break;
|
|
66
|
-
case 'PageUp':
|
|
67
|
-
/* TODO 페이지당 레코드의 수를 계산해서 증감시켜야 한다. */
|
|
68
|
-
row = Math.max(0, row - 10);
|
|
69
|
-
break;
|
|
70
|
-
case 'PageDown':
|
|
71
|
-
row = Math.min(maxrow, row + 10);
|
|
72
|
-
break;
|
|
73
|
-
case 'Esc':
|
|
74
|
-
case 'Escape':
|
|
75
|
-
return;
|
|
76
|
-
default:
|
|
77
|
-
/* TODO move this to input event handler */
|
|
78
|
-
this.startEditTarget(row, column);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
if (!this.focused || this.focused.row !== row || this.focused.column !== column) {
|
|
83
|
-
this.dispatchEvent(new CustomEvent('focus-change', { bubbles: true, composed: true, detail: { row, column } }));
|
|
84
|
-
}
|
|
85
|
-
/* arrow key에 의한 scrollbar의 자동 움직임을 하지 못하도록 한다. */
|
|
86
|
-
e.preventDefault();
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=data-grid-body-input-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-grid-body-input-handler.js","sourceRoot":"","sources":["../../../../src/data-grid/event-handlers/data-grid-body-input-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataGridBody } from '../data-grid-body'\n\n/**\n * ox-grid-body 의 keydown handler\n *\n * - handler의 this 는 ox-grid-body임.\n */\nexport async function dataGridBodyKeydownHandler(this: DataGridBody, e: KeyboardEvent): Promise<void> {\n // arrow-key\n const key = e.key\n var { row = 0, column = 0 } = this.focused || {}\n var { records = [] } = this.data || {}\n var maxrow = this.config.rows.appendable ? records.length : records.length - 1\n var maxcolumn = (this.columns || []).filter(column => !column.hidden).length - 1\n\n if (this.editTarget) {\n switch (key) {\n case 'Escape':\n case 'Esc':\n /* TODO 편집이 취소되어야 한다. */\n case 'Enter':\n this.editTarget = null\n this.focus()\n return\n\n case 'PageUp':\n case 'PageDown':\n case 'End':\n e.preventDefault()\n case 'Home':\n return\n // case 'Tab':\n // this.editTarget = null\n // column = Math.min(maxcolumn, column + 1)\n // this.focus()\n // break\n\n // case 'Down':\n // case 'ArrowDown':\n // this.editTarget = null\n // row = Math.min(maxrow, row + 1)\n // this.focus()\n // break\n\n default:\n return\n }\n } else {\n switch (key) {\n case 'Up':\n case 'ArrowUp':\n row = Math.max(0, row - 1)\n break\n\n case 'Down':\n case 'ArrowDown':\n row = Math.min(maxrow, row + 1)\n break\n\n case 'Enter':\n this.startEditTarget(row, column)\n return\n\n case 'Left':\n case 'ArrowLeft':\n case 'Backspace':\n column = Math.max(0, column - 1)\n break\n\n case 'Right':\n case 'ArrowRight':\n case 'Tab':\n column = Math.min(maxcolumn, column + 1)\n break\n\n case 'PageUp':\n /* TODO 페이지당 레코드의 수를 계산해서 증감시켜야 한다. */\n row = Math.max(0, row - 10)\n break\n\n case 'PageDown':\n row = Math.min(maxrow, row + 10)\n break\n\n case 'Esc':\n case 'Escape':\n return\n\n default:\n /* TODO move this to input event handler */\n this.startEditTarget(row, column)\n return\n }\n }\n\n if (!this.focused || this.focused.row !== row || this.focused.column !== column) {\n this.dispatchEvent(new CustomEvent('focus-change', { bubbles: true, composed: true, detail: { row, column } }))\n }\n\n /* arrow key에 의한 scrollbar의 자동 움직임을 하지 못하도록 한다. */\n e.preventDefault()\n}\n"]}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ox-grid-body 의 keydown handler
|
|
3
|
-
*
|
|
4
|
-
* - handler의 this 는 ox-grid-body임.
|
|
5
|
-
*/
|
|
6
|
-
export async function dataGridBodyKeydownHandler(e) {
|
|
7
|
-
// arrow-key
|
|
8
|
-
const key = e.key;
|
|
9
|
-
var { row = 0, column = 0 } = this.focused || {};
|
|
10
|
-
var { records = [] } = this.data || {};
|
|
11
|
-
var maxrow = this.config.rows.appendable ? records.length : records.length - 1;
|
|
12
|
-
var maxcolumn = (this.columns || []).filter(column => !column.hidden).length - 1;
|
|
13
|
-
if (this.editTarget) {
|
|
14
|
-
switch (key) {
|
|
15
|
-
case 'Escape':
|
|
16
|
-
case 'Esc':
|
|
17
|
-
/* TODO 편집이 취소되어야 한다. */
|
|
18
|
-
case 'Enter':
|
|
19
|
-
this.editTarget = null;
|
|
20
|
-
this.focus();
|
|
21
|
-
return;
|
|
22
|
-
case 'PageUp':
|
|
23
|
-
case 'PageDown':
|
|
24
|
-
case 'End':
|
|
25
|
-
e.preventDefault();
|
|
26
|
-
case 'Home':
|
|
27
|
-
return;
|
|
28
|
-
// case 'Tab':
|
|
29
|
-
// this.editTarget = null
|
|
30
|
-
// column = Math.min(maxcolumn, column + 1)
|
|
31
|
-
// this.focus()
|
|
32
|
-
// break
|
|
33
|
-
// case 'Down':
|
|
34
|
-
// case 'ArrowDown':
|
|
35
|
-
// this.editTarget = null
|
|
36
|
-
// row = Math.min(maxrow, row + 1)
|
|
37
|
-
// this.focus()
|
|
38
|
-
// break
|
|
39
|
-
default:
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
switch (key) {
|
|
45
|
-
case 'Up':
|
|
46
|
-
case 'ArrowUp':
|
|
47
|
-
row = Math.max(0, row - 1);
|
|
48
|
-
break;
|
|
49
|
-
case 'Down':
|
|
50
|
-
case 'ArrowDown':
|
|
51
|
-
row = Math.min(maxrow, row + 1);
|
|
52
|
-
break;
|
|
53
|
-
case 'Enter':
|
|
54
|
-
this.startEditTarget(row, column);
|
|
55
|
-
return;
|
|
56
|
-
case 'Left':
|
|
57
|
-
case 'ArrowLeft':
|
|
58
|
-
case 'Backspace':
|
|
59
|
-
column = Math.max(0, column - 1);
|
|
60
|
-
break;
|
|
61
|
-
case 'Right':
|
|
62
|
-
case 'ArrowRight':
|
|
63
|
-
case 'Tab':
|
|
64
|
-
column = Math.min(maxcolumn, column + 1);
|
|
65
|
-
break;
|
|
66
|
-
case 'PageUp':
|
|
67
|
-
/* TODO 페이지당 레코드의 수를 계산해서 증감시켜야 한다. */
|
|
68
|
-
row = Math.max(0, row - 10);
|
|
69
|
-
break;
|
|
70
|
-
case 'PageDown':
|
|
71
|
-
row = Math.min(maxrow, row + 10);
|
|
72
|
-
break;
|
|
73
|
-
case 'Esc':
|
|
74
|
-
case 'Escape':
|
|
75
|
-
return;
|
|
76
|
-
default:
|
|
77
|
-
/* TODO move this to input event handler */
|
|
78
|
-
this.startEditTarget(row, column);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
if (!this.focused || this.focused.row !== row || this.focused.column !== column) {
|
|
83
|
-
this.dispatchEvent(new CustomEvent('focus-change', { bubbles: true, composed: true, detail: { row, column } }));
|
|
84
|
-
}
|
|
85
|
-
/* arrow key에 의한 scrollbar의 자동 움직임을 하지 못하도록 한다. */
|
|
86
|
-
e.preventDefault();
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=data-grid-body-keydown-handler%20copy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-grid-body-keydown-handler copy.js","sourceRoot":"","sources":["../../../../src/data-grid/event-handlers/data-grid-body-keydown-handler copy.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataGridBody } from '../data-grid-body'\n\n/**\n * ox-grid-body 의 keydown handler\n *\n * - handler의 this 는 ox-grid-body임.\n */\nexport async function dataGridBodyKeydownHandler(this: DataGridBody, e: KeyboardEvent): Promise<void> {\n // arrow-key\n const key = e.key\n var { row = 0, column = 0 } = this.focused || {}\n var { records = [] } = this.data || {}\n var maxrow = this.config.rows.appendable ? records.length : records.length - 1\n var maxcolumn = (this.columns || []).filter(column => !column.hidden).length - 1\n\n if (this.editTarget) {\n switch (key) {\n case 'Escape':\n case 'Esc':\n /* TODO 편집이 취소되어야 한다. */\n case 'Enter':\n this.editTarget = null\n this.focus()\n return\n\n case 'PageUp':\n case 'PageDown':\n case 'End':\n e.preventDefault()\n case 'Home':\n return\n // case 'Tab':\n // this.editTarget = null\n // column = Math.min(maxcolumn, column + 1)\n // this.focus()\n // break\n\n // case 'Down':\n // case 'ArrowDown':\n // this.editTarget = null\n // row = Math.min(maxrow, row + 1)\n // this.focus()\n // break\n\n default:\n return\n }\n } else {\n switch (key) {\n case 'Up':\n case 'ArrowUp':\n row = Math.max(0, row - 1)\n break\n\n case 'Down':\n case 'ArrowDown':\n row = Math.min(maxrow, row + 1)\n break\n\n case 'Enter':\n this.startEditTarget(row, column)\n return\n\n case 'Left':\n case 'ArrowLeft':\n case 'Backspace':\n column = Math.max(0, column - 1)\n break\n\n case 'Right':\n case 'ArrowRight':\n case 'Tab':\n column = Math.min(maxcolumn, column + 1)\n break\n\n case 'PageUp':\n /* TODO 페이지당 레코드의 수를 계산해서 증감시켜야 한다. */\n row = Math.max(0, row - 10)\n break\n\n case 'PageDown':\n row = Math.min(maxrow, row + 10)\n break\n\n case 'Esc':\n case 'Escape':\n return\n\n default:\n /* TODO move this to input event handler */\n this.startEditTarget(row, column)\n return\n }\n }\n\n if (!this.focused || this.focused.row !== row || this.focused.column !== column) {\n this.dispatchEvent(new CustomEvent('focus-change', { bubbles: true, composed: true, detail: { row, column } }))\n }\n\n /* arrow key에 의한 scrollbar의 자동 움직임을 하지 못하도록 한다. */\n e.preventDefault()\n}\n"]}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import '../index.js';
|
|
2
|
-
import { html } from 'lit';
|
|
3
|
-
export default {
|
|
4
|
-
title: 'DataGrist',
|
|
5
|
-
component: 'ox-grist',
|
|
6
|
-
argTypes: {
|
|
7
|
-
title: { control: 'text' },
|
|
8
|
-
counter: { control: 'number' },
|
|
9
|
-
textColor: { control: 'color' }
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
const Template = ({ title = 'Hello world', counter = 5, textColor, slot }) => html `
|
|
13
|
-
<ox-grist style="--data-grist-text-color: ${textColor || 'black'}" .title=${title} .counter=${counter}>
|
|
14
|
-
${slot}
|
|
15
|
-
</ox-grist>
|
|
16
|
-
`;
|
|
17
|
-
export const Regular = Template.bind({});
|
|
18
|
-
export const CustomTitle = Template.bind({});
|
|
19
|
-
CustomTitle.args = {
|
|
20
|
-
title: 'My title'
|
|
21
|
-
};
|
|
22
|
-
export const CustomCounter = Template.bind({});
|
|
23
|
-
CustomCounter.args = {
|
|
24
|
-
counter: 123456
|
|
25
|
-
};
|
|
26
|
-
export const SlottedContent = Template.bind({});
|
|
27
|
-
SlottedContent.args = {
|
|
28
|
-
slot: html `<p>Slotted content</p>`
|
|
29
|
-
};
|
|
30
|
-
SlottedContent.argTypes = {
|
|
31
|
-
slot: { table: { disable: true } }
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=index.stories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.stories.js","sourceRoot":"","sources":["../../stories/index.stories.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAA;AAE1C,eAAe;IACb,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE;QACR,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC1B,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC9B,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;KAChC;CACF,CAAA;AAeD,MAAM,QAAQ,GAAoB,CAAC,EAAE,KAAK,GAAG,aAAa,EAAE,OAAO,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAY,EAAE,EAAE,CAAC,IAAI,CAAA;8CAC/D,SAAS,IAAI,OAAO,YAAY,KAAK,aAAa,OAAO;MACjG,IAAI;;CAET,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAExC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC5C,WAAW,CAAC,IAAI,GAAG;IACjB,KAAK,EAAE,UAAU;CAClB,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC9C,aAAa,CAAC,IAAI,GAAG;IACnB,OAAO,EAAE,MAAM;CAChB,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC/C,cAAc,CAAC,IAAI,GAAG;IACpB,IAAI,EAAE,IAAI,CAAA,wBAAwB;CACnC,CAAA;AACD,cAAc,CAAC,QAAQ,GAAG;IACxB,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;CACnC,CAAA","sourcesContent":["import '../index.js'\n\nimport { html, TemplateResult } from 'lit'\n\nexport default {\n title: 'DataGrist',\n component: 'ox-grist',\n argTypes: {\n title: { control: 'text' },\n counter: { control: 'number' },\n textColor: { control: 'color' }\n }\n}\n\ninterface Story<T> {\n (args: T): TemplateResult\n args?: Partial<T>\n argTypes?: Record<string, unknown>\n}\n\ninterface ArgTypes {\n title?: string\n counter?: number\n textColor?: string\n slot?: TemplateResult\n}\n\nconst Template: Story<ArgTypes> = ({ title = 'Hello world', counter = 5, textColor, slot }: ArgTypes) => html`\n <ox-grist style=\"--data-grist-text-color: ${textColor || 'black'}\" .title=${title} .counter=${counter}>\n ${slot}\n </ox-grist>\n`\n\nexport const Regular = Template.bind({})\n\nexport const CustomTitle = Template.bind({})\nCustomTitle.args = {\n title: 'My title'\n}\n\nexport const CustomCounter = Template.bind({})\nCustomCounter.args = {\n counter: 123456\n}\n\nexport const SlottedContent = Template.bind({})\nSlottedContent.args = {\n slot: html`<p>Slotted content</p>`\n}\nSlottedContent.argTypes = {\n slot: { table: { disable: true } }\n}\n"]}
|
package/stories/index.stories.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import '../index.js'
|
|
2
|
-
|
|
3
|
-
import { html, TemplateResult } from 'lit'
|
|
4
|
-
|
|
5
|
-
export default {
|
|
6
|
-
title: 'DataGrist',
|
|
7
|
-
component: 'ox-grist',
|
|
8
|
-
argTypes: {
|
|
9
|
-
title: { control: 'text' },
|
|
10
|
-
counter: { control: 'number' },
|
|
11
|
-
textColor: { control: 'color' }
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
interface Story<T> {
|
|
16
|
-
(args: T): TemplateResult
|
|
17
|
-
args?: Partial<T>
|
|
18
|
-
argTypes?: Record<string, unknown>
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
interface ArgTypes {
|
|
22
|
-
title?: string
|
|
23
|
-
counter?: number
|
|
24
|
-
textColor?: string
|
|
25
|
-
slot?: TemplateResult
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const Template: Story<ArgTypes> = ({ title = 'Hello world', counter = 5, textColor, slot }: ArgTypes) => html`
|
|
29
|
-
<ox-grist style="--data-grist-text-color: ${textColor || 'black'}" .title=${title} .counter=${counter}>
|
|
30
|
-
${slot}
|
|
31
|
-
</ox-grist>
|
|
32
|
-
`
|
|
33
|
-
|
|
34
|
-
export const Regular = Template.bind({})
|
|
35
|
-
|
|
36
|
-
export const CustomTitle = Template.bind({})
|
|
37
|
-
CustomTitle.args = {
|
|
38
|
-
title: 'My title'
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export const CustomCounter = Template.bind({})
|
|
42
|
-
CustomCounter.args = {
|
|
43
|
-
counter: 123456
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export const SlottedContent = Template.bind({})
|
|
47
|
-
SlottedContent.args = {
|
|
48
|
-
slot: html`<p>Slotted content</p>`
|
|
49
|
-
}
|
|
50
|
-
SlottedContent.argTypes = {
|
|
51
|
-
slot: { table: { disable: true } }
|
|
52
|
-
}
|