@operato/data-grist 2.0.0-alpha.62 → 2.0.0-alpha.68
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/CHANGELOG.md +17 -0
- package/demo/data-grist-test.html +25 -14
- package/demo/index.html +25 -14
- package/demo/report-test.html +13 -2
- package/dist/src/data-card/data-card-gutter-menu.d.ts +1 -1
- package/dist/src/data-card/data-card-gutter-menu.js +5 -5
- package/dist/src/data-card/data-card-gutter-menu.js.map +1 -1
- package/dist/src/data-card/data-card.d.ts +1 -1
- package/dist/src/data-card/data-card.js +3 -3
- package/dist/src/data-card/data-card.js.map +1 -1
- package/dist/src/data-card/record-card.d.ts +1 -1
- package/dist/src/data-card/record-card.js +26 -26
- package/dist/src/data-card/record-card.js.map +1 -1
- package/dist/src/data-grid/data-grid-accum-field.js +5 -1
- package/dist/src/data-grid/data-grid-accum-field.js.map +1 -1
- package/dist/src/data-grid/data-grid-footer.d.ts +1 -1
- package/dist/src/data-grid/data-grid-footer.js +17 -9
- package/dist/src/data-grid/data-grid-footer.js.map +1 -1
- package/dist/src/data-grid/data-grid-header.d.ts +1 -1
- package/dist/src/data-grid/data-grid-header.js +13 -15
- package/dist/src/data-grid/data-grid-header.js.map +1 -1
- package/dist/src/data-grist.js +21 -21
- package/dist/src/data-grist.js.map +1 -1
- package/dist/src/data-list/data-list.d.ts +1 -1
- package/dist/src/data-list/data-list.js +3 -3
- package/dist/src/data-list/data-list.js.map +1 -1
- package/dist/src/data-list/record-partial.d.ts +1 -1
- package/dist/src/data-list/record-partial.js +19 -19
- package/dist/src/data-list/record-partial.js.map +1 -1
- package/dist/src/empty-note.d.ts +1 -1
- package/dist/src/empty-note.js +3 -3
- package/dist/src/empty-note.js.map +1 -1
- package/dist/src/gutters/gutter-button.d.ts +1 -1
- package/dist/src/gutters/gutter-button.js +3 -3
- package/dist/src/gutters/gutter-button.js.map +1 -1
- package/dist/src/gutters/gutter-dirty.d.ts +1 -1
- package/dist/src/gutters/gutter-dirty.js +5 -5
- package/dist/src/gutters/gutter-dirty.js.map +1 -1
- package/dist/src/handlers/contextmenu-tree-mutation.js +4 -4
- package/dist/src/handlers/contextmenu-tree-mutation.js.map +1 -1
- package/dist/src/record-view/record-creator.d.ts +1 -1
- package/dist/src/record-view/record-creator.js +1 -1
- package/dist/src/record-view/record-creator.js.map +1 -1
- package/dist/src/record-view/record-view-body.d.ts +1 -1
- package/dist/src/record-view/record-view-body.js +4 -4
- package/dist/src/record-view/record-view-body.js.map +1 -1
- package/dist/src/record-view/record-view.d.ts +1 -1
- package/dist/src/record-view/record-view.js +5 -5
- package/dist/src/record-view/record-view.js.map +1 -1
- package/dist/src/sorters/sorters-control.js +3 -3
- package/dist/src/sorters/sorters-control.js.map +1 -1
- package/dist/stories/accumulator.stories.d.ts +1 -1
- package/dist/stories/accumulator.stories.js +22 -10
- package/dist/stories/accumulator.stories.js.map +1 -1
- package/dist/stories/barcode-input-filter.stories.d.ts +1 -1
- package/dist/stories/barcode-input-filter.stories.js +80 -72
- package/dist/stories/barcode-input-filter.stories.js.map +1 -1
- package/dist/stories/default-filters.stories.d.ts +1 -1
- package/dist/stories/default-filters.stories.js +80 -72
- package/dist/stories/default-filters.stories.js.map +1 -1
- package/dist/stories/dynamic-editable.stories.d.ts +1 -1
- package/dist/stories/dynamic-editable.stories.js +21 -9
- package/dist/stories/dynamic-editable.stories.js.map +1 -1
- package/dist/stories/empty-sorters.stories.d.ts +1 -1
- package/dist/stories/empty-sorters.stories.js +80 -71
- package/dist/stories/empty-sorters.stories.js.map +1 -1
- package/dist/stories/explicit-fetch.stories.d.ts +1 -1
- package/dist/stories/explicit-fetch.stories.js +81 -72
- package/dist/stories/explicit-fetch.stories.js.map +1 -1
- package/dist/stories/fixed-column.stories.d.ts +1 -1
- package/dist/stories/fixed-column.stories.js +122 -113
- package/dist/stories/fixed-column.stories.js.map +1 -1
- package/dist/stories/grist-modes.stories.d.ts +1 -1
- package/dist/stories/grist-modes.stories.js +132 -123
- package/dist/stories/grist-modes.stories.js.map +1 -1
- package/dist/stories/group-header.stories.d.ts +1 -1
- package/dist/stories/group-header.stories.js +122 -113
- package/dist/stories/group-header.stories.js.map +1 -1
- package/dist/stories/textarea.stories.d.ts +1 -1
- package/dist/stories/textarea.stories.js +113 -104
- package/dist/stories/textarea.stories.js.map +1 -1
- package/dist/stories/tree-column-with-checkbox.stories.d.ts +1 -1
- package/dist/stories/tree-column-with-checkbox.stories.js +126 -117
- package/dist/stories/tree-column-with-checkbox.stories.js.map +1 -1
- package/dist/stories/tree-column.stories.d.ts +1 -1
- package/dist/stories/tree-column.stories.js +126 -117
- package/dist/stories/tree-column.stories.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/data-card/data-card-gutter-menu.ts +5 -5
- package/src/data-card/data-card.ts +3 -3
- package/src/data-card/record-card.ts +30 -32
- package/src/data-grid/data-grid-accum-field.ts +5 -1
- package/src/data-grid/data-grid-footer.ts +18 -11
- package/src/data-grid/data-grid-header.ts +13 -15
- package/src/data-grist.ts +23 -23
- package/src/data-list/data-list.ts +3 -3
- package/src/data-list/record-partial.ts +21 -23
- package/src/empty-note.ts +3 -3
- package/src/gutters/gutter-button.ts +3 -3
- package/src/gutters/gutter-dirty.ts +5 -5
- package/src/handlers/contextmenu-tree-mutation.ts +4 -4
- package/src/record-view/record-creator.ts +1 -1
- package/src/record-view/record-view-body.ts +4 -4
- package/src/record-view/record-view.ts +5 -5
- package/src/sorters/sorters-control.ts +3 -3
- package/stories/accumulator.stories.ts +22 -10
- package/stories/barcode-input-filter.stories.ts +91 -82
- package/stories/default-filters.stories.ts +91 -82
- package/stories/dynamic-editable.stories.ts +21 -9
- package/stories/empty-sorters.stories.ts +92 -82
- package/stories/explicit-fetch.stories.ts +93 -83
- package/stories/fixed-column.stories.ts +134 -124
- package/stories/grist-modes.stories.ts +144 -139
- package/stories/group-header.stories.ts +134 -124
- package/stories/textarea.stories.ts +115 -110
- package/stories/tree-column-with-checkbox.stories.ts +134 -124
- package/stories/tree-column.stories.ts +134 -124
@@ -2,7 +2,7 @@ import '../src/index.js';
|
|
2
2
|
import '../src/filters/filters-form.js';
|
3
3
|
import '../src/sorters/sorters-control.js';
|
4
4
|
import '@operato/popup/ox-popup-list.js';
|
5
|
-
import '@material/
|
5
|
+
import '@material/web/icon/icon.js';
|
6
6
|
import { html } from 'lit';
|
7
7
|
const fetchHandler = async ({ filters, page, limit }) => {
|
8
8
|
var total = 120993;
|
@@ -86,94 +86,103 @@ export default {
|
|
86
86
|
argTypes: {}
|
87
87
|
};
|
88
88
|
const Template = ({}) => html ` <link
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
89
|
+
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
|
90
|
+
rel="stylesheet"
|
91
|
+
/>
|
92
|
+
<link
|
93
|
+
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
|
94
|
+
rel="stylesheet"
|
95
|
+
/>
|
96
|
+
<link
|
97
|
+
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
|
98
|
+
rel="stylesheet"
|
99
|
+
/>
|
95
100
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
flex-direction: row;
|
100
|
-
align-items: center;
|
101
|
-
padding: var(--padding-default) var(--padding-wide);
|
102
|
-
background-color: var(--theme-white-color);
|
103
|
-
box-shadow: var(--box-shadow);
|
101
|
+
<link href="/themes/app-theme.css" rel="stylesheet" />
|
102
|
+
<link href="/themes/oops-theme.css" rel="stylesheet" />
|
103
|
+
<link href="/themes/grist-theme.css" rel="stylesheet" />
|
104
104
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
margin-right: var(--margin-default);
|
114
|
-
padding-left: var(--padding-narrow);
|
115
|
-
border-bottom: var(--border-dark-color);
|
116
|
-
position: relative;
|
117
|
-
color: var(--secondary-color);
|
118
|
-
font-size: var(--fontsize-default);
|
119
|
-
user-select: none;
|
120
|
-
}
|
121
|
-
|
122
|
-
#sorters > * {
|
123
|
-
padding: var(--padding-narrow);
|
124
|
-
vertical-align: middle;
|
125
|
-
}
|
105
|
+
<style>
|
106
|
+
[slot='headroom'] {
|
107
|
+
display: flex;
|
108
|
+
flex-direction: row;
|
109
|
+
align-items: center;
|
110
|
+
padding: var(--padding-default) var(--padding-wide);
|
111
|
+
background-color: var(--theme-white-color);
|
112
|
+
box-shadow: var(--box-shadow);
|
126
113
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
114
|
+
--md-icon-size: 24px;
|
115
|
+
}
|
116
|
+
#sorters md-icon,
|
117
|
+
#modes md-icon {
|
118
|
+
--md-icon-size: 18px;
|
119
|
+
}
|
120
|
+
#sorters {
|
121
|
+
margin-left: auto;
|
122
|
+
margin-right: var(--margin-default);
|
123
|
+
padding-left: var(--padding-narrow);
|
124
|
+
border-bottom: var(--border-dark-color);
|
125
|
+
position: relative;
|
126
|
+
color: var(--secondary-color);
|
127
|
+
font-size: var(--fontsize-default);
|
128
|
+
user-select: none;
|
129
|
+
}
|
132
130
|
|
133
|
-
|
134
|
-
|
135
|
-
|
131
|
+
#sorters > * {
|
132
|
+
padding: var(--padding-narrow);
|
133
|
+
vertical-align: middle;
|
134
|
+
}
|
136
135
|
|
137
|
-
@media only screen and (max-width: 460px) {
|
138
136
|
#filters {
|
139
|
-
|
137
|
+
display: flex;
|
138
|
+
justify-content: center;
|
139
|
+
align-items: center;
|
140
140
|
}
|
141
141
|
|
142
|
-
#
|
143
|
-
|
142
|
+
#filters * {
|
143
|
+
margin-right: var(--margin-default);
|
144
144
|
}
|
145
|
-
}
|
146
|
-
</style>
|
147
145
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
146
|
+
@media only screen and (max-width: 460px) {
|
147
|
+
#filters {
|
148
|
+
flex-direction: column;
|
149
|
+
}
|
150
|
+
|
151
|
+
#modes {
|
152
|
+
display: none;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
</style>
|
156
|
+
|
157
|
+
<ox-grist
|
158
|
+
.config=${config}
|
159
|
+
mode="GRID"
|
160
|
+
.fetchHandler=${fetchHandler}
|
161
|
+
@filters-change=${(e) => console.log('filters', e.target.filters)}
|
162
|
+
>
|
163
|
+
<div slot="headroom">
|
164
|
+
<div id="filters">
|
165
|
+
<ox-filters-form></ox-filters-form>
|
166
|
+
</div>
|
158
167
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
168
|
+
<div id="sorters">
|
169
|
+
Sort
|
170
|
+
<md-icon
|
171
|
+
@click=${(e) => {
|
163
172
|
const target = e.currentTarget;
|
164
173
|
target.closest('#sorters').querySelector('#sorter-control').open({
|
165
174
|
right: 0,
|
166
175
|
top: target.offsetTop + target.offsetHeight
|
167
176
|
});
|
168
177
|
}}
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
178
|
+
>expand_more</md-icon
|
179
|
+
>
|
180
|
+
<ox-popup id="sorter-control">
|
181
|
+
<ox-sorters-control> </ox-sorters-control>
|
182
|
+
</ox-popup>
|
183
|
+
</div>
|
174
184
|
</div>
|
175
|
-
</
|
176
|
-
</ox-grist>`;
|
185
|
+
</ox-grist>`;
|
177
186
|
export const Regular = Template.bind({});
|
178
187
|
Regular.args = {};
|
179
188
|
//# sourceMappingURL=empty-sorters.stories.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"empty-sorters.stories.js","sourceRoot":"","sources":["../../stories/empty-sorters.stories.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAA;AACxB,OAAO,gCAAgC,CAAA;AACvC,OAAO,mCAAmC,CAAA;AAC1C,OAAO,iCAAiC,CAAA;AACxC,OAAO,
|
1
|
+
{"version":3,"file":"empty-sorters.stories.js","sourceRoot":"","sources":["../../stories/empty-sorters.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import '../src/index.js'\nimport '../src/filters/filters-form.js'\nimport '../src/sorters/sorters-control.js'\nimport '@operato/popup/ox-popup-list.js'\nimport '@material/web/icon/icon.js'\n\nimport { html, TemplateResult } from 'lit'\n\nimport { FetchHandler } from '../src/types.js'\n\nconst fetchHandler: FetchHandler = async ({ filters, page, limit }) => {\n var total = 120993\n var start = (page! - 1) * limit!\n\n await new Promise(resolve => setTimeout(resolve, 500))\n\n return {\n total,\n records: Array(limit! * page! > total ? total % limit! : limit)\n .fill('')\n .map((item, idx) => {\n return {\n id: String(idx),\n name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,\n description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,\n createdAt: Date.now(),\n updatedAt: Date.now()\n }\n })\n }\n}\n\nconst config = {\n list: {\n fields: ['name', 'description'],\n details: ['updatedAt', 'createdAt']\n },\n columns: [\n {\n type: 'gutter',\n gutterName: 'sequence'\n },\n {\n type: 'string',\n name: 'id',\n hidden: true\n },\n {\n type: 'string',\n name: 'name',\n label: true,\n header: 'name',\n filter: {\n operator: 'eq',\n value: 'shnam'\n },\n sortable: true,\n width: 120\n },\n {\n type: 'string',\n name: 'description',\n header: 'description',\n filter: {\n operator: 'like',\n value: 'hahaha'\n },\n record: {\n align: 'left'\n },\n width: 200\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: 'updated at',\n width: 180\n },\n {\n type: 'datetime',\n name: 'createdAt',\n header: 'created at',\n width: 180\n }\n ],\n pagination: {\n pages: [30, 50, 100, 200]\n }\n}\n\nexport default {\n title: 'empty sorters for ox-grist',\n component: 'ox-grist',\n argTypes: {}\n}\n\ninterface Story<T> {\n (args: T): TemplateResult\n args?: Partial<T>\n argTypes?: Record<string, unknown>\n}\n\ninterface ArgTypes {}\n\nconst Template: Story<ArgTypes> = ({}: ArgTypes) =>\n html` <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n\n <link href=\"/themes/app-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/oops-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/grist-theme.css\" rel=\"stylesheet\" />\n\n <style>\n [slot='headroom'] {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: var(--padding-default) var(--padding-wide);\n background-color: var(--theme-white-color);\n box-shadow: var(--box-shadow);\n\n --md-icon-size: 24px;\n }\n #sorters md-icon,\n #modes md-icon {\n --md-icon-size: 18px;\n }\n #sorters {\n margin-left: auto;\n margin-right: var(--margin-default);\n padding-left: var(--padding-narrow);\n border-bottom: var(--border-dark-color);\n position: relative;\n color: var(--secondary-color);\n font-size: var(--fontsize-default);\n user-select: none;\n }\n\n #sorters > * {\n padding: var(--padding-narrow);\n vertical-align: middle;\n }\n\n #filters {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n #filters * {\n margin-right: var(--margin-default);\n }\n\n @media only screen and (max-width: 460px) {\n #filters {\n flex-direction: column;\n }\n\n #modes {\n display: none;\n }\n }\n </style>\n\n <ox-grist\n .config=${config}\n mode=\"GRID\"\n .fetchHandler=${fetchHandler}\n @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}\n >\n <div slot=\"headroom\">\n <div id=\"filters\">\n <ox-filters-form></ox-filters-form>\n </div>\n\n <div id=\"sorters\">\n Sort\n <md-icon\n @click=${(e: Event) => {\n const target = e.currentTarget as HTMLElement\n ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({\n right: 0,\n top: target.offsetTop + target.offsetHeight\n })\n }}\n >expand_more</md-icon\n >\n <ox-popup id=\"sorter-control\">\n <ox-sorters-control> </ox-sorters-control>\n </ox-popup>\n </div>\n </div>\n </ox-grist>`\n\nexport const Regular = Template.bind({})\nRegular.args = {}\n"]}
|
@@ -2,7 +2,7 @@ import '../src/index.js';
|
|
2
2
|
import '../src/filters/filters-form.js';
|
3
3
|
import '../src/sorters/sorters-control.js';
|
4
4
|
import '@operato/popup/ox-popup-list.js';
|
5
|
-
import '@material/
|
5
|
+
import '@material/web/icon/icon.js';
|
6
6
|
import { TemplateResult } from 'lit';
|
7
7
|
declare const _default: {
|
8
8
|
title: string;
|
@@ -2,7 +2,7 @@ import '../src/index.js';
|
|
2
2
|
import '../src/filters/filters-form.js';
|
3
3
|
import '../src/sorters/sorters-control.js';
|
4
4
|
import '@operato/popup/ox-popup-list.js';
|
5
|
-
import '@material/
|
5
|
+
import '@material/web/icon/icon.js';
|
6
6
|
import { html } from 'lit';
|
7
7
|
const fetchHandler = async ({ page, limit }) => {
|
8
8
|
var total = 120993;
|
@@ -89,95 +89,104 @@ export default {
|
|
89
89
|
}
|
90
90
|
};
|
91
91
|
const Template = ({ explicitFetch = false }) => html ` <link
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
92
|
+
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
|
93
|
+
rel="stylesheet"
|
94
|
+
/>
|
95
|
+
<link
|
96
|
+
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
|
97
|
+
rel="stylesheet"
|
98
|
+
/>
|
99
|
+
<link
|
100
|
+
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
|
101
|
+
rel="stylesheet"
|
102
|
+
/>
|
98
103
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
flex-direction: row;
|
103
|
-
align-items: center;
|
104
|
-
padding: var(--padding-default) var(--padding-wide);
|
105
|
-
background-color: var(--theme-white-color);
|
106
|
-
box-shadow: var(--box-shadow);
|
104
|
+
<link href="/themes/app-theme.css" rel="stylesheet" />
|
105
|
+
<link href="/themes/oops-theme.css" rel="stylesheet" />
|
106
|
+
<link href="/themes/grist-theme.css" rel="stylesheet" />
|
107
107
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
margin-right: var(--margin-default);
|
117
|
-
padding-left: var(--padding-narrow);
|
118
|
-
border-bottom: var(--border-dark-color);
|
119
|
-
position: relative;
|
120
|
-
color: var(--secondary-color);
|
121
|
-
font-size: var(--fontsize-default);
|
122
|
-
user-select: none;
|
123
|
-
}
|
124
|
-
|
125
|
-
#sorters > * {
|
126
|
-
padding: var(--padding-narrow);
|
127
|
-
vertical-align: middle;
|
128
|
-
}
|
108
|
+
<style>
|
109
|
+
[slot='headroom'] {
|
110
|
+
display: flex;
|
111
|
+
flex-direction: row;
|
112
|
+
align-items: center;
|
113
|
+
padding: var(--padding-default) var(--padding-wide);
|
114
|
+
background-color: var(--theme-white-color);
|
115
|
+
box-shadow: var(--box-shadow);
|
129
116
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
117
|
+
--md-icon-size: 24px;
|
118
|
+
}
|
119
|
+
#sorters md-icon,
|
120
|
+
#modes md-icon {
|
121
|
+
--md-icon-size: 18px;
|
122
|
+
}
|
123
|
+
#sorters {
|
124
|
+
margin-left: auto;
|
125
|
+
margin-right: var(--margin-default);
|
126
|
+
padding-left: var(--padding-narrow);
|
127
|
+
border-bottom: var(--border-dark-color);
|
128
|
+
position: relative;
|
129
|
+
color: var(--secondary-color);
|
130
|
+
font-size: var(--fontsize-default);
|
131
|
+
user-select: none;
|
132
|
+
}
|
135
133
|
|
136
|
-
|
137
|
-
|
138
|
-
|
134
|
+
#sorters > * {
|
135
|
+
padding: var(--padding-narrow);
|
136
|
+
vertical-align: middle;
|
137
|
+
}
|
139
138
|
|
140
|
-
@media only screen and (max-width: 460px) {
|
141
139
|
#filters {
|
142
|
-
|
140
|
+
display: flex;
|
141
|
+
justify-content: center;
|
142
|
+
align-items: center;
|
143
143
|
}
|
144
144
|
|
145
|
-
#
|
146
|
-
|
145
|
+
#filters * {
|
146
|
+
margin-right: var(--margin-default);
|
147
147
|
}
|
148
|
-
}
|
149
|
-
</style>
|
150
148
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
149
|
+
@media only screen and (max-width: 460px) {
|
150
|
+
#filters {
|
151
|
+
flex-direction: column;
|
152
|
+
}
|
153
|
+
|
154
|
+
#modes {
|
155
|
+
display: none;
|
156
|
+
}
|
157
|
+
}
|
158
|
+
</style>
|
159
|
+
|
160
|
+
<ox-grist
|
161
|
+
.config=${config}
|
162
|
+
mode="GRID"
|
163
|
+
?explicit-fetch=${explicitFetch}
|
164
|
+
.fetchHandler=${fetchHandler}
|
165
|
+
@filters-change=${(e) => console.log('filters', e.target.filters)}
|
166
|
+
>
|
167
|
+
<div slot="headroom">
|
168
|
+
<div id="filters">
|
169
|
+
<ox-filters-form></ox-filters-form>
|
170
|
+
</div>
|
162
171
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
172
|
+
<div id="sorters">
|
173
|
+
Sort
|
174
|
+
<md-icon
|
175
|
+
@click=${(e) => {
|
167
176
|
const target = e.currentTarget;
|
168
177
|
target.closest('#sorters').querySelector('#sorter-control').open({
|
169
178
|
right: 0,
|
170
179
|
top: target.offsetTop + target.offsetHeight
|
171
180
|
});
|
172
181
|
}}
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
182
|
+
>expand_more</md-icon
|
183
|
+
>
|
184
|
+
<ox-popup id="sorter-control">
|
185
|
+
<ox-sorters-control> </ox-sorters-control>
|
186
|
+
</ox-popup>
|
187
|
+
</div>
|
178
188
|
</div>
|
179
|
-
</
|
180
|
-
</ox-grist>`;
|
189
|
+
</ox-grist>`;
|
181
190
|
export const Regular = Template.bind({});
|
182
191
|
Regular.args = {
|
183
192
|
explicitFetch: true
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"explicit-fetch.stories.js","sourceRoot":"","sources":["../../stories/explicit-fetch.stories.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAA;AACxB,OAAO,gCAAgC,CAAA;AACvC,OAAO,mCAAmC,CAAA;AAC1C,OAAO,iCAAiC,CAAA;AACxC,OAAO,
|
1
|
+
{"version":3,"file":"explicit-fetch.stories.js","sourceRoot":"","sources":["../../stories/explicit-fetch.stories.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAA;AACxB,OAAO,gCAAgC,CAAA;AACvC,OAAO,mCAAmC,CAAA;AAC1C,OAAO,iCAAiC,CAAA;AACxC,OAAO,4BAA4B,CAAA;AAEnC,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAA;AAI1C,MAAM,YAAY,GAAiB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3D,IAAI,KAAK,GAAG,MAAM,CAAA;IAClB,IAAI,KAAK,GAAG,CAAC,IAAK,GAAG,CAAC,CAAC,GAAG,KAAM,CAAA;IAEhC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;IAEtD,OAAO;QACL,KAAK;QACL,OAAO,EAAE,KAAK,CAAC,KAAM,GAAG,IAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAM,CAAC,CAAC,CAAC,KAAK,CAAC;aAC5D,IAAI,CAAC,EAAE,CAAC;aACR,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACjB,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;gBACf,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;gBAC1E,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,KAAK,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;gBAC5G,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAA;QACH,CAAC,CAAC;KACL,CAAA;AACH,CAAC,CAAA;AAED,MAAM,MAAM,GAAG;IACb,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;QAC/B,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;KACpC;IACD,OAAO,EAAE;QACP;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,UAAU;SACvB;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;SACb;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,GAAG;SACX;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM;aACd;YACD,KAAK,EAAE,GAAG;SACX;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,GAAG;SACX;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,GAAG;SACX;KACF;IACD,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI;SACX;KACF;IACD,UAAU,EAAE;QACV,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;KAC1B;CACF,CAAA;AAED,eAAe;IACb,KAAK,EAAE,uCAAuC;IAC9C,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE;QACR,aAAa,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;KACtC;CACF,CAAA;AAYD,MAAM,QAAQ,GAAoB,CAAC,EAAE,aAAa,GAAG,KAAK,EAAY,EAAE,EAAE,CACxE,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAsEU,MAAM;;wBAEE,aAAa;sBACf,YAAY;wBACV,CAAC,CAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAG,CAAC,CAAC,MAAc,CAAC,OAAO,CAAC;;;;;;;;;;qBAUlE,CAAC,CAAQ,EAAE,EAAE;IACpB,MAAM,MAAM,GAAG,CAAC,CAAC,aAA4B,CAC5C;IAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAE,CAAC,aAAa,CAAC,iBAAiB,CAAS,CAAC,IAAI,CAAC;QAC1E,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY;KAC5C,CAAC,CAAA;AACJ,CAAC;;;;;;;;gBAQG,CAAA;AAEhB,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACxC,OAAO,CAAC,IAAI,GAAG;IACb,aAAa,EAAE,IAAI;CACpB,CAAA","sourcesContent":["import '../src/index.js'\nimport '../src/filters/filters-form.js'\nimport '../src/sorters/sorters-control.js'\nimport '@operato/popup/ox-popup-list.js'\nimport '@material/web/icon/icon.js'\n\nimport { html, TemplateResult } from 'lit'\n\nimport { FetchHandler } from '../src/types.js'\n\nconst fetchHandler: FetchHandler = async ({ page, limit }) => {\n var total = 120993\n var start = (page! - 1) * limit!\n\n await new Promise(resolve => setTimeout(resolve, 500))\n\n return {\n total,\n records: Array(limit! * page! > total ? total % limit! : limit)\n .fill('')\n .map((item, idx) => {\n return {\n id: String(idx),\n name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,\n description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,\n createdAt: Date.now(),\n updatedAt: Date.now()\n }\n })\n }\n}\n\nconst config = {\n list: {\n fields: ['name', 'description'],\n details: ['updatedAt', 'createdAt']\n },\n columns: [\n {\n type: 'gutter',\n gutterName: 'sequence'\n },\n {\n type: 'string',\n name: 'id',\n hidden: true\n },\n {\n type: 'string',\n name: 'name',\n label: true,\n header: 'name',\n filter: 'search',\n sortable: true,\n width: 120\n },\n {\n type: 'string',\n name: 'description',\n header: 'description',\n filter: 'search',\n record: {\n align: 'left'\n },\n width: 200\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: 'updated at',\n width: 180\n },\n {\n type: 'datetime',\n name: 'createdAt',\n header: 'created at',\n width: 180\n }\n ],\n rows: {},\n sorters: [\n {\n name: 'name',\n desc: true\n }\n ],\n pagination: {\n pages: [30, 50, 100, 200]\n }\n}\n\nexport default {\n title: 'explicit-fetch attribute for ox-grist',\n component: 'ox-grist',\n argTypes: {\n explicitFetch: { control: 'boolean' }\n }\n}\n\ninterface Story<T> {\n (args: T): TemplateResult\n args?: Partial<T>\n argTypes?: Record<string, unknown>\n}\n\ninterface ArgTypes {\n explicitFetch: boolean\n}\n\nconst Template: Story<ArgTypes> = ({ explicitFetch = false }: ArgTypes) =>\n html` <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n\n <link href=\"/themes/app-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/oops-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/grist-theme.css\" rel=\"stylesheet\" />\n\n <style>\n [slot='headroom'] {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: var(--padding-default) var(--padding-wide);\n background-color: var(--theme-white-color);\n box-shadow: var(--box-shadow);\n\n --md-icon-size: 24px;\n }\n #sorters md-icon,\n #modes md-icon {\n --md-icon-size: 18px;\n }\n #sorters {\n margin-left: auto;\n margin-right: var(--margin-default);\n padding-left: var(--padding-narrow);\n border-bottom: var(--border-dark-color);\n position: relative;\n color: var(--secondary-color);\n font-size: var(--fontsize-default);\n user-select: none;\n }\n\n #sorters > * {\n padding: var(--padding-narrow);\n vertical-align: middle;\n }\n\n #filters {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n #filters * {\n margin-right: var(--margin-default);\n }\n\n @media only screen and (max-width: 460px) {\n #filters {\n flex-direction: column;\n }\n\n #modes {\n display: none;\n }\n }\n </style>\n\n <ox-grist\n .config=${config}\n mode=\"GRID\"\n ?explicit-fetch=${explicitFetch}\n .fetchHandler=${fetchHandler}\n @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}\n >\n <div slot=\"headroom\">\n <div id=\"filters\">\n <ox-filters-form></ox-filters-form>\n </div>\n\n <div id=\"sorters\">\n Sort\n <md-icon\n @click=${(e: Event) => {\n const target = e.currentTarget as HTMLElement\n ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({\n right: 0,\n top: target.offsetTop + target.offsetHeight\n })\n }}\n >expand_more</md-icon\n >\n <ox-popup id=\"sorter-control\">\n <ox-sorters-control> </ox-sorters-control>\n </ox-popup>\n </div>\n </div>\n </ox-grist>`\n\nexport const Regular = Template.bind({})\nRegular.args = {\n explicitFetch: true\n}\n"]}
|
@@ -3,7 +3,7 @@ import '../src/filters/filters-form.js';
|
|
3
3
|
import '../src/sorters/sorters-control.js';
|
4
4
|
import '../src/record-view/record-creator.js';
|
5
5
|
import '@operato/popup/ox-popup-list.js';
|
6
|
-
import '@material/
|
6
|
+
import '@material/web/icon/icon.js';
|
7
7
|
import { TemplateResult } from 'lit';
|
8
8
|
declare const _default: {
|
9
9
|
title: string;
|