Create wt-odlux directory
[ccsdk/features.git] / sdnr / wt-odlux / odlux / framework / src / components / material-table / columnModel.ts
1 /**
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt odlux
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18
19 import * as React from 'react';
20
21 export enum ColumnType {
22   text,
23   numeric,
24   boolean,
25   date,
26   custom
27 }
28
29 type CustomControl<TData> = {
30   className?: string;
31   style?: React.CSSProperties;
32   rowData: TData;
33 }
34
35 export type ColumnModel<TData> = {
36   title?: string;
37   disablePadding?: boolean;
38   width?: string | number ;
39   className?: string;
40   hide?: boolean;
41   style?: React.CSSProperties;
42   align?: 'inherit' | 'left' | 'center' | 'right' | 'justify';
43   disableSorting?: boolean;
44   disableFilter?: boolean;
45 } & ({
46   property: string;
47   type: ColumnType.custom;
48   customControl: React.ComponentType<CustomControl<TData>>;
49 } | {
50   property: keyof TData;
51   type: ColumnType.boolean;
52   labels?: { "true": string, "false": string };
53 } | {
54     property: keyof TData;
55     type?: ColumnType.numeric | ColumnType.text | ColumnType.date;
56 });