Move gr-list-view-mixin to typescript

Change-Id: Ib01a1f25b4b0025b1bc3201c0dad5ea8d78a53ad
This commit is contained in:
Milutin Kristofic
2020-08-03 16:48:23 +02:00
parent 626fa3dd07
commit 4b38c5b45d

View File

@@ -15,45 +15,44 @@
* limitations under the License. * limitations under the License.
*/ */
import {encodeURL, getBaseUrl} from '../../utils/url-util.js'; import {encodeURL, getBaseUrl} from '../../utils/url-util';
import {dedupingMixin} from '@polymer/polymer/lib/utils/mixin.js'; import {dedupingMixin} from '@polymer/polymer/lib/utils/mixin';
import {PolymerElement} from '@polymer/polymer';
import {Constructor} from '../../utils/common-util';
/** /**
* @polymer * @polymer
* @mixinFunction * @mixinFunction
*/ */
export const ListViewMixin = dedupingMixin(superClass => { export const ListViewMixin = dedupingMixin(
<T extends Constructor<PolymerElement>>(
superClass: T
): T & Constructor<ListViewMixinInterface> => {
/** /**
* @polymer * @polymer
* @mixinClass * @mixinClass
*/ */
class Mixin extends superClass { class Mixin extends superClass {
computeLoadingClass(loading) { computeLoadingClass(loading: boolean): string {
return loading ? 'loading' : ''; return loading ? 'loading' : '';
} }
computeShownItems(items) { computeShownItems<T>(items: T[]): T[] {
return items.slice(0, 25); return items.slice(0, 25);
} }
getUrl(path, item) { getUrl(path: string, item: string) {
return getBaseUrl() + path + encodeURL(item, true); return getBaseUrl() + path + encodeURL(item, true);
} }
/** getFilterValue(params: ListViewParams): string {
* @param {Object} params if (!params) {
* @return {string} return '';
*/ }
getFilterValue(params) {
if (!params) { return ''; }
return params.filter || ''; return params.filter || '';
} }
/** getOffsetValue(params: ListViewParams): number {
* @param {Object} params
* @return {number}
*/
getOffsetValue(params) {
if (params && params.offset) { if (params && params.offset) {
return params.offset; return params.offset;
} }
@@ -62,4 +61,18 @@ export const ListViewMixin = dedupingMixin(superClass => {
} }
return Mixin; return Mixin;
}); }
);
export interface ListViewMixinInterface {
computeLoadingClass(loading: boolean): string;
computeShownItems<T>(items: T[]): T[];
getUrl(path: string, item: string): string;
getFilterValue(params: ListViewParams): string;
getOffsetValue(params: ListViewParams): number;
}
export interface ListViewParams {
filter?: string;
offset?: number;
}