@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.
Files changed (180) hide show
  1. package/.storybook/main.js +3 -0
  2. package/.storybook/server.mjs +8 -0
  3. package/CHANGELOG.md +412 -0
  4. package/demo/data-grist-test.html +1 -1
  5. package/demo/index.html +16 -4
  6. package/demo/report-test.html +1 -1
  7. package/dist/src/configure/zero-config.d.ts +2 -0
  8. package/dist/src/configure/zero-config.js +3 -1
  9. package/dist/src/configure/zero-config.js.map +1 -1
  10. package/dist/src/data-card/data-card-field.d.ts +1 -1
  11. package/dist/src/data-card/data-card-field.js +3 -2
  12. package/dist/src/data-card/data-card-field.js.map +1 -1
  13. package/dist/src/data-card/data-card.js +1 -0
  14. package/dist/src/data-card/data-card.js.map +1 -1
  15. package/dist/src/data-grid/data-grid-body.d.ts +4 -2
  16. package/dist/src/data-grid/data-grid-body.js +74 -40
  17. package/dist/src/data-grid/data-grid-body.js.map +1 -1
  18. package/dist/src/data-grid/data-grid-field.d.ts +1 -1
  19. package/dist/src/data-grid/data-grid-field.js +1 -1
  20. package/dist/src/data-grid/data-grid-field.js.map +1 -1
  21. package/dist/src/data-grid/data-grid-footer.d.ts +2 -2
  22. package/dist/src/data-grid/data-grid-footer.js +9 -10
  23. package/dist/src/data-grid/data-grid-footer.js.map +1 -1
  24. package/dist/src/data-grid/data-grid-header.d.ts +4 -6
  25. package/dist/src/data-grid/data-grid-header.js +39 -48
  26. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  27. package/dist/src/data-grid/data-grid.d.ts +2 -2
  28. package/dist/src/data-grid/data-grid.js +4 -3
  29. package/dist/src/data-grid/data-grid.js.map +1 -1
  30. package/dist/src/data-grid/event-handlers/data-grid-body-click-handler.js +9 -11
  31. package/dist/src/data-grid/event-handlers/data-grid-body-click-handler.js.map +1 -1
  32. package/dist/src/data-grist.d.ts +7 -5
  33. package/dist/src/data-grist.js +154 -112
  34. package/dist/src/data-grist.js.map +1 -1
  35. package/dist/src/data-list/record-partial.js +1 -5
  36. package/dist/src/data-list/record-partial.js.map +1 -1
  37. package/dist/src/data-manipulator.d.ts +4 -1
  38. package/dist/src/data-manipulator.js +12 -0
  39. package/dist/src/data-manipulator.js.map +1 -1
  40. package/dist/src/data-provider.d.ts +4 -6
  41. package/dist/src/data-provider.js +12 -23
  42. package/dist/src/data-provider.js.map +1 -1
  43. package/dist/src/data-report/data-report-body.d.ts +1 -1
  44. package/dist/src/data-report/data-report-body.js +4 -4
  45. package/dist/src/data-report/data-report-body.js.map +1 -1
  46. package/dist/src/data-report/data-report-header.js +4 -4
  47. package/dist/src/data-report/data-report-header.js.map +1 -1
  48. package/dist/src/editors/ox-grist-editor.d.ts +1 -1
  49. package/dist/src/editors/ox-grist-editor.js +7 -4
  50. package/dist/src/editors/ox-grist-editor.js.map +1 -1
  51. package/dist/src/filters/filter-checkbox.d.ts +1 -1
  52. package/dist/src/filters/filter-checkbox.js +1 -1
  53. package/dist/src/filters/filter-checkbox.js.map +1 -1
  54. package/dist/src/filters/filter-input-barcode.d.ts +3 -0
  55. package/dist/src/filters/filter-input-barcode.js +27 -0
  56. package/dist/src/filters/filter-input-barcode.js.map +1 -0
  57. package/dist/src/filters/filter-input.js +1 -1
  58. package/dist/src/filters/filter-input.js.map +1 -1
  59. package/dist/src/filters/filter-styles.js +65 -17
  60. package/dist/src/filters/filter-styles.js.map +1 -1
  61. package/dist/src/filters/filters-form.js +27 -9
  62. package/dist/src/filters/filters-form.js.map +1 -1
  63. package/dist/src/filters/registry.d.ts +1 -1
  64. package/dist/src/filters/registry.js +10 -7
  65. package/dist/src/filters/registry.js.map +1 -1
  66. package/dist/src/gutters/gutter-button.js +5 -4
  67. package/dist/src/gutters/gutter-button.js.map +1 -1
  68. package/dist/src/gutters/gutter-dirty.d.ts +5 -1
  69. package/dist/src/gutters/gutter-dirty.js +17 -2
  70. package/dist/src/gutters/gutter-dirty.js.map +1 -1
  71. package/dist/src/gutters/gutter-row-selector.js +2 -1
  72. package/dist/src/gutters/gutter-row-selector.js.map +1 -1
  73. package/dist/src/gutters/gutter-sequence.js +15 -0
  74. package/dist/src/gutters/gutter-sequence.js.map +1 -1
  75. package/dist/src/record-view/event-handlers/record-view-body-click-handler.js +2 -4
  76. package/dist/src/record-view/event-handlers/record-view-body-click-handler.js.map +1 -1
  77. package/dist/src/record-view/event-handlers/record-view-body-keydown-handler.js +2 -2
  78. package/dist/src/record-view/event-handlers/record-view-body-keydown-handler.js.map +1 -1
  79. package/dist/src/record-view/record-creator.js +0 -2
  80. package/dist/src/record-view/record-creator.js.map +1 -1
  81. package/dist/src/record-view/record-view-body.d.ts +0 -1
  82. package/dist/src/record-view/record-view-body.js +0 -5
  83. package/dist/src/record-view/record-view-body.js.map +1 -1
  84. package/dist/src/record-view/record-view-handler.d.ts +1 -1
  85. package/dist/src/record-view/record-view.d.ts +0 -1
  86. package/dist/src/record-view/record-view.js +1 -10
  87. package/dist/src/record-view/record-view.js.map +1 -1
  88. package/dist/src/renderers/ox-grist-renderer-color.js +1 -1
  89. package/dist/src/renderers/ox-grist-renderer-color.js.map +1 -1
  90. package/dist/src/renderers/ox-grist-renderer-json5.js +1 -1
  91. package/dist/src/renderers/ox-grist-renderer-json5.js.map +1 -1
  92. package/dist/src/renderers/ox-grist-renderer-link.js +1 -1
  93. package/dist/src/renderers/ox-grist-renderer-link.js.map +1 -1
  94. package/dist/src/renderers/ox-grist-renderer-select.js +2 -2
  95. package/dist/src/renderers/ox-grist-renderer-select.js.map +1 -1
  96. package/dist/src/renderers/ox-grist-renderer-text.js +6 -2
  97. package/dist/src/renderers/ox-grist-renderer-text.js.map +1 -1
  98. package/dist/src/sorters/sorters-control.d.ts +1 -1
  99. package/dist/src/sorters/sorters-control.js +5 -7
  100. package/dist/src/sorters/sorters-control.js.map +1 -1
  101. package/dist/src/types.d.ts +7 -4
  102. package/dist/src/types.js.map +1 -1
  103. package/dist/stories/{index.stories.d.ts → barcode-input-filter.stories.d.ts} +9 -13
  104. package/dist/stories/barcode-input-filter.stories.js +200 -0
  105. package/dist/stories/barcode-input-filter.stories.js.map +1 -0
  106. package/dist/stories/default-filters.stories.d.ts +20 -0
  107. package/dist/stories/default-filters.stories.js +187 -0
  108. package/dist/stories/default-filters.stories.js.map +1 -0
  109. package/dist/stories/empty-sorters.stories.d.ts +20 -0
  110. package/dist/stories/empty-sorters.stories.js +180 -0
  111. package/dist/stories/empty-sorters.stories.js.map +1 -0
  112. package/dist/stories/explicit-fetch.stories.d.ts +25 -0
  113. package/dist/stories/explicit-fetch.stories.js +186 -0
  114. package/dist/stories/explicit-fetch.stories.js.map +1 -0
  115. package/dist/stories/grist-modes.stories.d.ts +36 -0
  116. package/dist/stories/grist-modes.stories.js +448 -0
  117. package/dist/stories/grist-modes.stories.js.map +1 -0
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/package.json +11 -11
  120. package/src/configure/zero-config.ts +4 -1
  121. package/src/data-card/data-card-field.ts +5 -3
  122. package/src/data-card/data-card.ts +1 -0
  123. package/src/data-grid/data-grid-body.ts +96 -49
  124. package/src/data-grid/data-grid-field.ts +3 -2
  125. package/src/data-grid/data-grid-footer.ts +8 -9
  126. package/src/data-grid/data-grid-header.ts +38 -47
  127. package/src/data-grid/data-grid.ts +8 -6
  128. package/src/data-grid/event-handlers/data-grid-body-click-handler.ts +11 -13
  129. package/src/data-grist.ts +179 -130
  130. package/src/data-list/record-partial.ts +1 -5
  131. package/src/data-manipulator.ts +12 -1
  132. package/src/data-provider.ts +13 -29
  133. package/src/data-report/data-report-body.ts +5 -5
  134. package/src/data-report/data-report-header.ts +5 -5
  135. package/src/editors/ox-grist-editor.ts +8 -5
  136. package/src/filters/filter-checkbox.ts +3 -3
  137. package/src/filters/filter-input-barcode.ts +33 -0
  138. package/src/filters/filter-input.ts +3 -3
  139. package/src/filters/filter-styles.ts +65 -17
  140. package/src/filters/filters-form.ts +30 -9
  141. package/src/filters/registry.ts +11 -8
  142. package/src/gutters/gutter-button.ts +5 -4
  143. package/src/gutters/gutter-dirty.ts +21 -3
  144. package/src/gutters/gutter-row-selector.ts +2 -1
  145. package/src/gutters/gutter-sequence.ts +18 -2
  146. package/src/record-view/event-handlers/record-view-body-click-handler.ts +2 -4
  147. package/src/record-view/event-handlers/record-view-body-keydown-handler.ts +2 -2
  148. package/src/record-view/record-creator.ts +0 -2
  149. package/src/record-view/record-view-body.ts +0 -2
  150. package/src/record-view/record-view.ts +1 -7
  151. package/src/renderers/ox-grist-renderer-color.ts +3 -2
  152. package/src/renderers/ox-grist-renderer-json5.ts +3 -2
  153. package/src/renderers/ox-grist-renderer-link.ts +3 -2
  154. package/src/renderers/ox-grist-renderer-select.ts +2 -2
  155. package/src/renderers/ox-grist-renderer-text.ts +8 -2
  156. package/src/sorters/sorters-control.ts +6 -9
  157. package/src/types.ts +8 -4
  158. package/stories/barcode-input-filter.stories.ts +220 -0
  159. package/stories/default-filters.stories.ts +204 -0
  160. package/stories/empty-sorters.stories.ts +197 -0
  161. package/stories/explicit-fetch.stories.ts +205 -0
  162. package/stories/grist-modes.stories.ts +488 -0
  163. package/themes/form-theme.css +75 -0
  164. package/themes/grist-theme.css +1 -1
  165. package/dist/src/data-grid/event-handlers/data-grid-body-beforeinput-handler.d.ts +0 -7
  166. package/dist/src/data-grid/event-handlers/data-grid-body-beforeinput-handler.js +0 -12
  167. package/dist/src/data-grid/event-handlers/data-grid-body-beforeinput-handler.js.map +0 -1
  168. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler copy.d.ts +0 -7
  169. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler copy.js +0 -88
  170. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler copy.js.map +0 -1
  171. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler.d.ts +0 -7
  172. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler.js +0 -88
  173. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler.js.map +0 -1
  174. package/dist/src/data-grid/event-handlers/data-grid-body-keydown-handler copy.d.ts +0 -7
  175. package/dist/src/data-grid/event-handlers/data-grid-body-keydown-handler copy.js +0 -88
  176. package/dist/src/data-grid/event-handlers/data-grid-body-keydown-handler copy.js.map +0 -1
  177. package/dist/stories/index.stories.js +0 -33
  178. package/dist/stories/index.stories.js.map +0 -1
  179. package/stories/index.stories.ts +0 -52
  180. 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
+ }
@@ -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) 0 var(--padding-default) 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,7 +0,0 @@
1
- import { DataGridBody } from '../data-grid-body';
2
- /**
3
- * ox-grid-body 의 beforeinput handler
4
- *
5
- * - handler의 this 는 ox-grid-body임.
6
- */
7
- export declare function dataGridBodyBeforeInputHandler(this: DataGridBody, e: Event): Promise<void>;
@@ -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,7 +0,0 @@
1
- import { DataGridBody } from '../data-grid-body';
2
- /**
3
- * ox-grid-body 의 keydown handler
4
- *
5
- * - handler의 this 는 ox-grid-body임.
6
- */
7
- export declare function dataGridBodyKeydownHandler(this: DataGridBody, e: KeyboardEvent): Promise<void>;
@@ -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,7 +0,0 @@
1
- import { DataGridBody } from '../data-grid-body';
2
- /**
3
- * ox-grid-body 의 keydown handler
4
- *
5
- * - handler의 this 는 ox-grid-body임.
6
- */
7
- export declare function dataGridBodyKeydownHandler(this: DataGridBody, e: KeyboardEvent): Promise<void>;
@@ -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,7 +0,0 @@
1
- import { DataGridBody } from '../data-grid-body';
2
- /**
3
- * ox-grid-body 의 keydown handler
4
- *
5
- * - handler의 this 는 ox-grid-body임.
6
- */
7
- export declare function dataGridBodyKeydownHandler(this: DataGridBody, e: KeyboardEvent): Promise<void>;
@@ -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":"AAEA;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAqB,CAAgB;IACnF,YAAY;IACZ,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAA;IACjB,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;IAChD,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;IACtC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;IAC9E,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAEhF,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,QAAQ,GAAG,EAAE;YACX,KAAK,QAAQ,CAAC;YACd,KAAK,KAAK,CAAC;YACX,wBAAwB;YACxB,KAAK,OAAO;gBACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBACtB,IAAI,CAAC,KAAK,EAAE,CAAA;gBACZ,OAAM;YAER,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU,CAAC;YAChB,KAAK,KAAK;gBACR,CAAC,CAAC,cAAc,EAAE,CAAA;YACpB,KAAK,MAAM;gBACT,OAAM;YACR,cAAc;YACd,2BAA2B;YAC3B,6CAA6C;YAC7C,iBAAiB;YACjB,UAAU;YAEV,eAAe;YACf,oBAAoB;YACpB,2BAA2B;YAC3B,oCAAoC;YACpC,iBAAiB;YACjB,UAAU;YAEV;gBACE,OAAM;SACT;KACF;SAAM;QACL,QAAQ,GAAG,EAAE;YACX,KAAK,IAAI,CAAC;YACV,KAAK,SAAS;gBACZ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;gBAC1B,MAAK;YAEP,KAAK,MAAM,CAAC;YACZ,KAAK,WAAW;gBACd,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;gBAC/B,MAAK;YAEP,KAAK,OAAO;gBACV,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;gBACjC,OAAM;YAER,KAAK,MAAM,CAAC;YACZ,KAAK,WAAW,CAAC;YACjB,KAAK,WAAW;gBACd,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;gBAChC,MAAK;YAEP,KAAK,OAAO,CAAC;YACb,KAAK,YAAY,CAAC;YAClB,KAAK,KAAK;gBACR,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;gBACxC,MAAK;YAEP,KAAK,QAAQ;gBACX,sCAAsC;gBACtC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;gBAC3B,MAAK;YAEP,KAAK,UAAU;gBACb,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;gBAChC,MAAK;YAEP,KAAK,KAAK,CAAC;YACX,KAAK,QAAQ;gBACX,OAAM;YAER;gBACE,2CAA2C;gBAC3C,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;gBACjC,OAAM;SACT;KACF;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;QAC/E,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;KAChH;IAED,kDAAkD;IAClD,CAAC,CAAC,cAAc,EAAE,CAAA;AACpB,CAAC","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"]}
@@ -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
- }