# AUTO GENERATED FILE - DO NOT EDIT

from dash.development.base_component import Component, _explicitize_args


class DataTable(Component):
    """A DataTable component.
DataTable

Keyword arguments:
- className (string; optional)
- id (string; required): The ID of this component, used to identify dash components
in callbacks. The ID needs to be unique across all of the
components in an app.
- data (list; optional): The date format.
- columns (dict; optional): True to use the light version. columns has the following type: list of dicts containing keys 'id', 'name'.
Those keys have the following types:
  - id (string; optional)
  - name (string; optional)
- isSortable (boolean; optional): Specify whether the table should be able to be sorted by its headers
- locale (string; optional): Provide a string for the current locale
- overflowMenuOnHover (boolean; optional): Specify whether the overflow menu (if it exists) should be shown always, or only on hover
- radio (boolean; optional): Specify whether the control should be a radio button or inline checkbox
- shouldShowBorder (boolean; optional): `false` If true, will remove the table border
- size (a value equal to: 'xs', 'sm', 'md', 'lg', 'xl'; optional): Change the row height of table. Currently supports `xs`, `sm`, `md`, `lg`, and `xl`.
- stickyHeader (boolean; optional): Specify whether the header should be sticky.
Still experimental: may not work with every combination of table props
- useStaticWidth (boolean; optional): `false` If true, will use a width of 'auto' instead of 100%
- useZebraStyles (boolean; optional): `true` to add useZebraStyles striping.
- title (string; optional): Title of the table
- description (string; optional): Description of the table
- isSearchable (boolean; optional): Whether the table should have the search input
- actions (dict; optional): List of custom actions avaible in this table, every time the user press in one of the actions the action prop will
be updated with the id of the action and the time of the click. actions has the following type: list of dicts containing keys 'id', 'name'.
Those keys have the following types:
  - id (string; optional)
  - name (string; optional)
- action (dict; optional): Output only, this prop will be updated every time the user press one action. action has the following type: dict containing keys 'id', 'timestamp'.
Those keys have the following types:
  - id (string; optional)
  - timestamp (string; optional)
- isPageable (boolean; optional): Whether to paginate the table
- pageSizes (dict; default [
    {text: 'Ten', value: 10},
    {text: 'Twenty', value: 20},
    {text: 'Thirty', value: 30},
    {text: 'Fourty', value: 40},
    {text: 'Fifty', value: 50},
]): pageSizes has the following type: list of dicts containing keys 'text', 'value'.
Those keys have the following types:
  - text (string; optional)
  - value (number; optional)
- pageSize (number; optional)
- style (dict; optional): jsx Style
- centerElements (boolean; default False)"""
    @_explicitize_args
    def __init__(self, className=Component.UNDEFINED, id=Component.REQUIRED, data=Component.UNDEFINED, columns=Component.UNDEFINED, isSortable=Component.UNDEFINED, locale=Component.UNDEFINED, overflowMenuOnHover=Component.UNDEFINED, radio=Component.UNDEFINED, shouldShowBorder=Component.UNDEFINED, size=Component.UNDEFINED, stickyHeader=Component.UNDEFINED, useStaticWidth=Component.UNDEFINED, useZebraStyles=Component.UNDEFINED, title=Component.UNDEFINED, description=Component.UNDEFINED, isSearchable=Component.UNDEFINED, actions=Component.UNDEFINED, action=Component.UNDEFINED, isPageable=Component.UNDEFINED, pageSizes=Component.UNDEFINED, pageSize=Component.UNDEFINED, style=Component.UNDEFINED, centerElements=Component.UNDEFINED, **kwargs):
        self._prop_names = ['className', 'id', 'data', 'columns', 'isSortable', 'locale', 'overflowMenuOnHover', 'radio', 'shouldShowBorder', 'size', 'stickyHeader', 'useStaticWidth', 'useZebraStyles', 'title', 'description', 'isSearchable', 'actions', 'action', 'isPageable', 'pageSizes', 'pageSize', 'style', 'centerElements']
        self._type = 'DataTable'
        self._namespace = 'dash_carbon_components'
        self._valid_wildcard_attributes =            []
        self.available_properties = ['className', 'id', 'data', 'columns', 'isSortable', 'locale', 'overflowMenuOnHover', 'radio', 'shouldShowBorder', 'size', 'stickyHeader', 'useStaticWidth', 'useZebraStyles', 'title', 'description', 'isSearchable', 'actions', 'action', 'isPageable', 'pageSizes', 'pageSize', 'style', 'centerElements']
        self.available_wildcard_properties =            []

        _explicit_args = kwargs.pop('_explicit_args')
        _locals = locals()
        _locals.update(kwargs)  # For wildcard attrs
        args = {k: _locals[k] for k in _explicit_args if k != 'children'}

        for k in ['id']:
            if k not in args:
                raise TypeError(
                    'Required argument `' + k + '` was not specified.')
        super(DataTable, self).__init__(**args)
