Last active
November 5, 2023 02:54
-
-
Save DaveyJake/a7009c82ed3f4fbd278b814d62009631 to your computer and use it in GitHub Desktop.
Typed YADCF
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Type definitions for Yet Another DataTables Column Filter 0.94.beta.46 | |
// Project: yadcf | |
// Definitions by: Davey Jacobson <https://daveyjake.dev> | |
import DataTables, { type Api, type ColumnIdx as ColumnNumber, type ColumnSelector as ColSelector, type Config } from 'datatables.net'; | |
import 'yadcf'; | |
// | |
// Column Parameters | |
// | |
/** | |
* Append data `before` or along with the value retrieved from the table. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks `sorted` only works on array of primitives. | |
*/ | |
type AppendDataToTableData = 'before' | 'sorted'; | |
/** | |
* Enable case-insensitive filtering. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use with `select`, `auto_complete`, `text`. | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type CaseInsensitive<T> = T extends FilterTypeMatchMode ? boolean : never; | |
/** | |
* Add checkboxes `exclude` and `regex` after input text column. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use with `text` filter. | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type CheckboxPositionAfter<T> = T extends 'text' ? boolean : never; | |
/** | |
* The number of the column to which the filter will be applied. | |
* | |
* @since 0.0.1 | |
*/ | |
type ColumnIdx = ColumnNumber; | |
/** | |
* Helper function to identify `text` present in any cell. | |
* | |
* @since 0.0.1 | |
*/ | |
type ColumnDataRender = ( data: Record<string, any> ) => any; | |
/** | |
* Type of data in column. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use `rendered_html` when using `render()` on `columnDefs` or similar. | |
*/ | |
type ColumnDataType = 'text' | 'html' | 'rendered_html' | 'html5_data_complex'; | |
/** | |
* Custom filter function applied to the columns. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Required when **filter_type** is set to a value in {@link FilterTypeCustomFunc}. | |
* | |
* @privateremarks When using **multi_select_custom_func** as {@link FilterType}, | |
* **filterVal** will hold an array of selected values from the multi select element. | |
* | |
* @typeParam `T` Generic type placeholder. | |
* | |
* @param filterVal Value from a select drop-down. | |
* @param columnVal Value from the relevant row column. | |
* @param rowValues Array of values from the entire row. | |
* @param stateVal Holds the current state of the table row DOM. | |
*/ | |
type CustomFunc<T> = T extends FilterTypeCustomFunc ? (( filterVal: string, columnVal: unknown, rowValues: Array<any>, stateVal: Node ) => boolean) : never; | |
/** | |
* Delimiter that separates min and max values for number range filter type. | |
* | |
* @since 0.0.1 | |
*/ | |
type CustomRangeDelimeter = string; | |
/** | |
* The {@link https://datatables.net/reference/type/column-selector `column-selector`} | |
* of the column to which the filter will be applied. | |
* | |
* @since 0.0.1 | |
*/ | |
type ColumnSelector = ColSelector; | |
/** | |
* Predefined data for filter. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks When **filter_type** is set to `custom_func` or `multi_select_custom_func`, this will populate the custom | |
* select filter element. | |
*/ | |
type Data = Array<string | Record<string, any>>; | |
/** | |
* Feed data to filter as is. Use when you want to define your own `<option></option>` for the filter. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Only use when **filter_type** is set to `select` or `multi_select`. | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type DataAsIs<T> = T extends FilterTypeDataAsIs ? boolean : never; | |
/** | |
* Delimiter that separates text in table column. | |
* | |
* @since 0.0.1 | |
*/ | |
type DataTextDelimeter = string; | |
/** | |
* Defines the format in which the date values are parsed in `Date` object. | |
* | |
* @since 0.0.1 | |
*/ | |
type DateFormat = 'mm/dd/yyyy' | 'mm-dd-yyyy' | 'dd/mm/yyyy' | 'dd-mm-yyyy' | 'yyyy-mm-dd' | 'hh:mm'; | |
/** | |
* Defines the format in which the date values are being parsed in Date object by `moment.js` library. | |
* | |
* @since 0.0.1 | |
* @link https://momentjs.com/docs/#/displaying/ | |
*/ | |
type DateFormatMoment = 'MMMM Do YYYY' | 'MMM D YYYY' | 'MM/DD/YYYY' | 'DD/MM/YYYY' | 'YYYY-MM-DD' | 'HH:mm'; | |
/** | |
* Specify the `datepicker` library to use. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks This feature depends on `moment.js` library. | |
*/ | |
type DatepickerType = 'jquery-ui' | 'bootstrap-datetimepicker' | 'bootstrap-datepicker' | 'daterangepicker' | 'dt-datetime'; | |
/** | |
* Add checkbox next to filter to enable `not/exclude` filtering. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use with `text`, `select`, and `number_range`. | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type ExcludeCheckbox<T> = T extends FilterTypeExclude ? boolean : never; | |
/** | |
* Label above the exclude checkbox. | |
* | |
* @since 0.0.1 | |
*/ | |
type ExcludeLabel = string; | |
/** | |
* Adds external checkboxes button and hides `exclude`, `null`, `regex` checkboxes. | |
* | |
* @since 0.0.1 | |
*/ | |
type ExtTriggeredCheckboxesText = boolean | string; | |
/** | |
* Add `onclick` function to external checkboxes button using `event` parameter. | |
* | |
* @since 0.0.1 | |
*/ | |
type ExtTriggeredCheckboxesFunction = ( event: Event ) => any; | |
/** | |
* Add additional classes to external checkboxes filter button. | |
* | |
* @since 0.0.1 | |
*/ | |
type ExtTriggeredCheckboxesButtonStyleClass = string; | |
/** | |
* Use in lieu of placing filter in column header. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Pass the ID of the desired container for the column filter. | |
*/ | |
type FilterContainerID = string; | |
/** | |
* Use in lieu of placing filter in column header. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Pass the jQuery selector of the desired container for the column filter. | |
*/ | |
type FilterContainerSelector = string; | |
/** | |
* Label that will appear in the select menu filter when no value is selected. | |
* | |
* @since 0.0.1 | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type FilterDefaultLabel<T> = T extends 'range_number' ? Array<string> : string; | |
/** | |
* Delay filter execution for this many milliseconds. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use with `text`, `range_number`, `range_date`, `range_number_slider`. | |
*/ | |
type FilterDelay<T> = T extends FilterTypeFilterDelay ? number : never; | |
/** | |
* Allows to control the matching mode of the filter. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Only use with `select`, `auto_complete`, `text`. | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type FilterMatchMode<T> = T extends FilterTypeMatchMode ? 'contains' | 'exact' | 'startsWith' | 'regex' : never; | |
/** | |
* Parameter to pass to jQuery Autocomplete, jQuery Slider and/or Bootstrap Datetimepicker. | |
* | |
* @since 0.0.1 | |
*/ | |
type FilterPluginOptions = Record<string, any>; | |
/** | |
* The text that will appear inside the reset button next to the select drop down. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Set to `false` to hide from that specific column filter. | |
*/ | |
type FilterResetButtonText = boolean | string; | |
/** | |
* The `custom_func` setting is required when `filter_type` is one of these. | |
* | |
* @since 0.0.1 | |
*/ | |
type FilterTypeCustomFunc = 'custom_func' | 'multi_select_custom_func' | 'date_custom_func'; | |
/** | |
* When using `data_as_is`, it is only supported with **filter_type** is set to `select` or `multi_select`. | |
* | |
* @since 0.0.1 | |
*/ | |
type FilterTypeDataAsIs = 'select' | 'multi_select'; | |
/** | |
* The `exclude` option is only supported by... | |
* | |
* - `range_number` | |
* - `select` | |
* - `text` | |
* | |
* @since 0.0.1 | |
*/ | |
type FilterTypeExclude = Exclude<FilterTypeRemaining, 'date' | 'range_date'> | Extract<FilterTypeDataAsIs, 'select'>; | |
/** | |
* The `filter_delay` setting is only supported by... | |
* | |
* - `text` | |
* - `range_date` | |
* - `range_number` | |
* - `range_number_slider` | |
* | |
* @since 0.0.1 | |
*/ | |
type FilterTypeFilterDelay = Exclude<FilterTypeRemaining, 'date'> | Extract<FilterTypeHTMLDataSelector, 'range_number_slider'>; | |
/** | |
* The `html_data_selector` setting is only supported when `filter_type` is... | |
* | |
* - `auto_complete` | |
* - `range_number_slider` | |
* - `select` | |
* | |
* @since 0.0.1 | |
*/ | |
type FilterTypeHTMLDataSelector = 'auto_complete' | 'range_number_slider' | Exclude<FilterTypeDataAsIs, 'multi_select'>; | |
/** | |
* The `filter_match_mode` option only works when `filter_type` is set to... | |
* | |
* - `auto_complete` | |
* - `select` | |
* - `text` | |
* | |
* @since 0.0.1 | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type FilterTypeMatchMode = Exclude<FilterTypeHTMLDataSelector, 'range_number_slider'> | Extract<FilterTypeRemaining, 'text'>; | |
/** | |
* The `omit_default_label` depends on the following `filter_type` values: | |
* | |
* - `select` | |
* - `multi_select` | |
* - `custom_func` | |
* - `multi_select_custom_func` | |
* | |
* @since 0.0.1 | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type FilterTypeOmitDefaultLabel = FilterTypeDataAsIs | Exclude<FilterTypeCustomFunc, 'date_custom_func'>; | |
/** | |
* Range filters: | |
* | |
* - `range_date` | |
* - `range_number` | |
* - `range_number_slider` | |
* | |
* @since 0.0.1 | |
*/ | |
type FilterTypeRange = Exclude<FilterTypeFilterDelay, 'text'>; | |
/** | |
* The type of the filter to be used in the column. | |
* | |
* @since 0.0.1 | |
*/ | |
type FilterTypeRemaining = 'text' | 'date' | 'range_number' | 'range_date'; | |
/** | |
* The `style_class` option is only supported by... | |
* | |
* - `select` | |
* - `multi_select` | |
* - `text` | |
* - `custom_func` | |
* - `multi_select_custom_func` | |
* - `range_number` | |
* - `range_number_slider` | |
* - `range_date` | |
* | |
* @since 0.0.1 | |
*/ | |
type FilterTypeStyleClass = FilterTypeOmitDefaultLabel | Exclude<FilterTypeRemaining, 'date'> | Extract<FilterTypeHTMLDataSelector, 'range_number_slider'>; | |
/** | |
* The complete filter types. | |
* | |
* @since 0.0.1 | |
*/ | |
type FilterType = FilterTypeCustomFunc | FilterTypeDataAsIs | FilterTypeHTMLDataSelector | FilterTypeRemaining; | |
/** | |
* Allows for advanced text value selection within HTML inside table cell (ex: `li:eq(1)`). | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Selector string is searched from the first element inside the table cell. | |
* Only use with `range_number_slider`, `select`, `auto_complete`. | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type HTMLDataSelector<T> = T extends FilterTypeHTMLDataSelector ? string : never; | |
/** | |
* How your data is parsed. | |
* | |
* @since 0.0.1 | |
*/ | |
type HTMLDataType = 'text' | 'value' | 'id' | 'selector'; | |
/** | |
* Allows to filter based on HTML5 `data-{(sort | order) | (filter | search)}` attributes. | |
* | |
* @since 0.0.1 | |
* @link https://www.datatables.net/examples/advanced_init/html5-data-attributes.html | |
*/ | |
type HTML5Data = 'data-filter' | 'data-search' | 'data-sort' | 'data-order'; | |
/** | |
* Tells the `range_number` and `range_number_slider` to ignore specific characters while filtering. | |
* | |
* @since 0.0.1 | |
*/ | |
type IgnoreChar = string; | |
/** | |
* Labels that will appear in the select menu filter when no value is selected. | |
* | |
* @since 0.0.1 | |
* | |
* @property `select` | |
* @property `select_multi` | |
* @property `filter` | |
* @property `range` | |
* @property `date` | |
*/ | |
type Language = { | |
select: string; | |
select_multi: string; | |
filter: string; | |
range: [ string, string ]; | |
date: string; | |
}; | |
/** | |
* Add checkbox next to filter to search for null values. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use with `text` and `range_number` filters. | |
*/ | |
type NullCheckBox<T> = T extends Exclude<FilterTypeRemaining, 'date' | 'range_date'> ? boolean : never; | |
/** | |
* Label above the null checkbox. | |
* | |
* @since 0.0.1 | |
*/ | |
type NullLabel = string; | |
/** | |
* Prevent yadcf from adding 'default_label'. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Only use with 'select', 'multi_select', 'custom_func', 'multi_select_custom_func'. | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type OmitDefaultLabel<T> = T extends FilterTypeOmitDefaultLabel ? boolean : never; | |
/** | |
* Add checkbox next to filter to switch `regex`, `filter_match_mode` on the fly. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Only use with `text` filter. | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type RegexCheckBox<T> = T extends 'text' ? boolean : never; | |
/** | |
* Label above the regex checkbox. | |
* | |
* @since 0.0.1 | |
*/ | |
type RegexLabel = string; | |
/** | |
* String value which internally represents `null` option in select filters. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use with `exclude`. | |
*/ | |
type SelectNullOption = string | 'null'; | |
/** | |
* Turn basic `select` element into `Chose` or `Select2` drop down. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks When using `custom_select`, call `initSelectPluginCustomTriggers` before calling yadcf constructor / init. | |
*/ | |
type SelectType = 'chosen' | 'select2' | 'custom_select'; | |
/** | |
* Parameter to pass as is to `Chosen/Select` plugin. | |
* | |
* @since 0.0.1 | |
*/ | |
type SelectTypeOptions = Record<string, any>; | |
/** | |
* Defines how the values in the filter will be sorted. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use `none` to preserve the order of the data attribute as is. | |
*/ | |
type SortAs = 'alpha' | 'num' | 'alphaNum' | 'custom' | 'none'; | |
/** | |
* Allows user to provide a custom sorting function for the filtered elements. | |
* | |
* @since 0.0.1 | |
*/ | |
type SortAsCustomFunc = ( args?: any ) => boolean; | |
/** | |
* Defines the order in which the filtered values are sorted. | |
* | |
* @since 0.0.1 | |
*/ | |
type SortOrder = 'asc' | 'desc'; | |
/** | |
* Range data type. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Only use with `range_number`, `range_number_slider`, or `range_date`. | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type RangeDataType<T> = T extends Exclude<FilterTypeFilterDelay, 'text'> ? 'single' | 'range' | 'delimeter' : never; | |
/** | |
* Range data type delimeter. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Only use with `range_number`, `range_number_slider`, or `range_date`. | |
*/ | |
type RangeDataTypeDelimeter<T> = T extends Exclude<FilterTypeFilterDelay, 'text'> ? string : never; | |
/** | |
* Add additional classes to filter reset button. | |
* | |
* @since 0.0.1 | |
*/ | |
type ResetButtonStyleClass = string; | |
/** | |
* Add additional classes to filter. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use with `select`, `multi_select`, `text`, `custom_func`, `multi_select_custom_func`, `range_number`, | |
* `range_number_slider`, `range_date`. | |
* | |
* @typeParam `T` Generic type placeholder. | |
*/ | |
type StyleClass<T> = T extends FilterTypeStyleClass ? string : never; | |
// | |
// Table Parameters | |
// | |
/** | |
* Only filter when yadcf.exFilterExternallyTriggered(table_arg) is called. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Useful when you want to trigger a filter when clicking on or selecting from an input. | |
*/ | |
type ExternallyTriggered = boolean; | |
/** | |
* Populate options from filtered rows (aka only use the data that remains after filtering). | |
* | |
* @since 0.0.1 | |
*/ | |
type CumulativeFiltering = boolean; | |
/** | |
* Filters placed in the header `thead` or footer `tfoot`. | |
* | |
* @since 0.0.1 | |
*/ | |
type FiltersPosition = 'header' | 'footer'; | |
/** | |
* Enable control of the `tr` index inside the table header `thead`. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Useful when one `tr` is used for headers/sort and another is used for filters. | |
*/ | |
type FiltersTrIdx = number; | |
/** | |
* Calls the provided callback function in the end of the `yadcf.init()` method. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks This callback function will run before datatables fires its event (i.e. draw/xhr/etc). | |
* Useful for initializing third parties and/or loading code. | |
*/ | |
type OnInitComplete = ( args?: any ) => any; | |
/** | |
* ISO-2 locale countries. | |
* | |
* @since 0.0.1 | |
*/ | |
type ISO2Locales = 'af' | 'ar-DZ' | 'ar' | 'az' | 'be' | 'bg' | 'bs' | 'ca' | 'cs' | 'cy-GB' | | |
'da' | 'de' | 'el' | 'en-AU' | 'en-GB' | 'en-NZ' | 'eo' | 'es' | 'et' | 'eu' | | |
'fa' | 'fi' | 'fo' | 'fr-CA' | 'fr-CH' | 'fr' | 'gl' | 'he' | 'hi' | 'hr' | | |
'hu' | 'hy' | 'id' | 'is' | 'it-CH' | 'it' | 'ja' | 'ka' | 'kk' | 'km' | | |
'ko' | 'ky' | 'lb' | 'lt' | 'lv' | 'mk' | 'ml' | 'ms' | 'nb' | 'nl-BE' | | |
'nl' | 'nn' | 'no' | 'pl' | 'pt-BR' | 'pt' | 'rm' | 'ro' | 'ru' | 'sk' | | |
'sl' | 'sq' | 'sr-SR' | 'sr' | 'sv' | 'ta' | 'th' | 'tj' | 'tr' | 'uk' | | |
'vi' | 'zh-CN' | 'zh-HK' | 'zh-TW'; | |
/** | |
* Load localized jQuery UI `datepicker`. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Requires `jquery-ui-i18n` library. | |
*/ | |
type JQueryUIDatepickerLocale = '' | ISO2Locales; | |
/** | |
* Value represents ***null***, used as argument for `fnFilter` and sent to server. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use when `null_check_box` is true. | |
*/ | |
type NullApiCallValue = string | 'null'; | |
/** | |
* Value represents ***not null***, used as argument for `fnFilter` and sent to server. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use when `null_check_box` is true. | |
*/ | |
type NotNullApiCallValue = string | '!^@'; | |
// | |
// Export the YADCF module. | |
// | |
export module yadcf { | |
/** | |
* Default options. | |
* | |
* @since 0.0.1 | |
* | |
* @property `case_insensitive` | |
* @property `checkbox_position_after` | |
* @property `column_data_type` | |
* @property `custom_range_delimiter` | |
* @property `date_format` | |
* @property `datepicker_type` | |
* @property `exclude_label` | |
* @property `externally_triggered_checkboxes_button_style_class` | |
* @property `externally_triggered_checkboxes_function` | |
* @property `externally_triggered_checkboxes_text` | |
* @property `filter_match_mode` | |
* @property `filter_type` | |
* @property `html_data_type` | |
* @property `ignore_char` | |
* @property `language` | |
* @property `null_label` | |
* @property `omit_default_label` | |
* @property `range_data_type` | |
* @property `range_data_type_delim` | |
* @property `regex_label` | |
* @property `reset_button_style_class` | |
* @property `select_null_option` | |
* @property `select_type` | |
* @property `select_type_options` | |
* @property `sort_as` | |
* @property `sort_order` | |
* @property `style_class` | |
*/ | |
interface DefaultOptions { | |
case_insensitive?: CaseInsensitive<DefaultOptions['filter_type']>; | |
checkbox_position_after?: CheckboxPositionAfter<DefaultOptions['filter_type']>; | |
column_data_type?: ColumnDataType; | |
custom_range_delimiter?: CustomRangeDelimeter; | |
date_format?: DateFormat; | |
datepicker_type?: DatepickerType; | |
exclude_label?: ExcludeLabel; | |
externally_triggered_checkboxes_button_style_class?: ExtTriggeredCheckboxesButtonStyleClass; | |
externally_triggered_checkboxes_function?: ExtTriggeredCheckboxesFunction; | |
externally_triggered_checkboxes_text?: ExtTriggeredCheckboxesText; | |
filter_match_mode?: FilterMatchMode<DefaultOptions['filter_type']>; | |
filter_type?: FilterType; | |
html_data_type?: HTMLDataType; | |
ignore_char?: IgnoreChar; | |
language?: Language; | |
null_label?: NullLabel; | |
omit_default_label?: OmitDefaultLabel<DefaultOptions['filter_type']>; | |
range_data_type?: RangeDataType<DefaultOptions['filter_type']>; | |
range_data_type_delim?: RangeDataTypeDelimeter<DefaultOptions['filter_type']>; | |
regex_label?: RegexLabel; | |
reset_button_style_class?: ResetButtonStyleClass; | |
select_null_option?: SelectNullOption; | |
select_type?: SelectType; | |
select_type_options?: SelectTypeOptions; | |
sort_as?: SortAs; | |
sort_order?: SortOrder; | |
style_class?: StyleClass<DefaultOptions['filter_type']>; | |
} | |
/** | |
* The remaining missing default options. | |
* | |
* @since 0.0.1 | |
* | |
* @property `append_data_to_table_data` | |
* @property `column_data_render` | |
* @property `custom_func` | |
* @property `data` | |
* @property `data_as_is` | |
* @property `exclude` | |
* @property `filter_container_id` | |
* @property `filter_container_selector` | |
* @property `filter_default_label` | |
* @property `filter_delay` | |
* @property `filter_plugin_options` | |
* @property `filter_reset_button_text` | |
* @property `html_data_selector` | |
* @property `html5_data` | |
* @property `moment_date_format` | |
* @property `null_check_box` | |
* @property `regex_check_box` | |
* @property `sort_as_custom_func` | |
* @property `text_data_delimiter` | |
*/ | |
interface MissingDefaults { | |
append_data_to_table_data?: AppendDataToTableData; | |
column_data_render?: ColumnDataRender; | |
custom_func?: CustomFunc<DefaultOptions['filter_type']>; | |
data?: Data; | |
data_as_is?: DataAsIs<DefaultOptions['filter_type']>; | |
exclude?: ExcludeCheckbox<DefaultOptions['filter_type']>; | |
filter_container_id?: FilterContainerID; | |
filter_container_selector?: FilterContainerSelector; | |
filter_default_label?: FilterDefaultLabel<DefaultOptions['filter_type']>; | |
filter_delay?: FilterDelay<DefaultOptions['filter_type']>; | |
filter_plugin_options?: FilterPluginOptions; | |
filter_reset_button_text?: FilterResetButtonText; | |
html_data_selector?: HTMLDataSelector<DefaultOptions['filter_type']>; | |
html5_data?: HTML5Data; | |
moment_date_format?: DateFormatMoment; | |
null_check_box?: NullCheckBox<DefaultOptions['filter_type']>; | |
regex_check_box?: RegexCheckBox<DefaultOptions['filter_type']>; | |
sort_as_custom_func?: SortAsCustomFunc; | |
text_data_delimiter?: DataTextDelimeter; | |
} | |
/** | |
* All column parameters together. | |
* | |
* @since 0.0.1 | |
*/ | |
type ColumnParameters = ({ 'column_number': ColumnIdx; } | { 'column_selector': ColumnSelector }) & DefaultOptions & MissingDefaults; | |
/** | |
* Table parameters. | |
* | |
* @since 0.0.1 | |
* | |
* @property `externally_triggered` — See {@link ExternallyTriggered} for details. | |
* @property `cumulative_filtering` — See {@link CumulativeFiltering} for details. | |
* @property `filters_position` — See {@link FiltersPosition} for details. | |
* @property `filters_tr_index` — See {@link FiltersTrIdx} for details. | |
* @property `onInitComplete` — See {@link OnInitComplete} for details. | |
* @property `jquery_ui_datepicker_locale` — See {@link JQueryUIDatepickerLocale} for details. | |
* @property `null_api_call_value` — See {@link NullApiCallValue} for details. | |
* @property `not_null_api_call_value` — See {@link NotNullApiCallValue} for details. | |
*/ | |
interface TableParameters { | |
externally_triggered?: ExternallyTriggered; | |
cumulative_filtering?: CumulativeFiltering; | |
filters_position?: FiltersPosition; | |
filters_tr_index?: FiltersTrIdx; | |
onInitComplete?: OnInitComplete; | |
jquery_ui_datepicker_locale?: JQueryUIDatepickerLocale; | |
null_api_call_value?: NullApiCallValue; | |
not_null_api_call_value?: NotNullApiCallValue; | |
} | |
/** | |
* Multiple table filter parameters. | |
* | |
* @since 0.0.1 | |
* | |
* @property `column_number` | |
* @property `filter_container_id` | |
* | |
*/ | |
type MultiTableFilterParams = { | |
column_number?: [ number ] | Array<number>; | |
filter_container_id: string; | |
filter_type: Extract<FilterTypeStyleClass, 'text' | 'select' | 'multi_select'>; | |
} & ColumnParameters; | |
/** | |
* The `exFilterColumn` function accepts an array of tuples for arguments. | |
* | |
* @since 0.0.1 | |
*/ | |
type ExFilterColArgs<T = number | string> = [ number, string ] | [ number, string, string ] | [ number, { from: T, to: T }]; | |
/** | |
* Primary initialization method. | |
* | |
* @since 0.0.1 | |
* @static | |
* | |
* @param oTable DataTables instance. | |
* @param options_arg Array of objects found in {@link ColumnParameters}. | |
* @param params Optional. Global {@link TableParameters}. | |
*/ | |
function init( oTable: DataTables<any>, options_arg: Array<ColumnParameters>, params?: TableParameters | string ): void; | |
function autocompleteKeyUP( table_selector_jq_friendly: string, event: Event ): void; | |
/** | |
* Reset all filters. | |
* | |
* @since 0.0.1 | |
* | |
* @param table_arg DataTable variable instance. | |
* @param noRedraw True if you don't want your table reloaded after resetting filter. Otherwise false. | |
*/ | |
function dateKeyUP( table_selector_jq_friendly: string, date_format: DateFormat, event: Event ): void; | |
function dateSelectSingle( pDate: Record<string, any> | string, pEvent: Event | string, clear?: 'clear' ): void; | |
function doFilter( arg: 'clear' | 'exclude', table_selector_jq_friendly: string, column_number: ColumnIdx, filter_match_mode: FilterMatchMode<DefaultOptions['filter_type']> ): void; | |
function doFilterAutocomplete( arg: 'clear' | Record<string, any>, table_selector_jq_friendly: string, column_number: ColumnIdx, filter_match_mode: FilterMatchMode<DefaultOptions['filter_type']> ): void; | |
function doFilterCustomDateFunc( arg: 'clear' | Record<string, any>, table_selector_jq_friendly: string , column_number: ColumnIdx ): void; | |
function doFilterMultiSelect( arg: string, table_selector_jq_friendly: string, column_number: ColumnIdx, filter_match_mode: FilterMatchMode<DefaultOptions['filter_type']> ): void; | |
function doFilterMultiTables( tablesSelectors: string, event: Event, column_number_str: string, clear?: 'clear' ): void; | |
function doFilterMultiTablesMultiSelect( tablesSelectors: string, event: Event, column_number_str: string, clear?: 'clear' ): void; | |
function eventTargetFixUp( pEvent: Event ): void; | |
/** | |
* Trigger filters externally and/or programmatically. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use to show table with pre-filtered columns. | |
* | |
* @param table_arg DataTable variable instance. | |
* @param col_filter_arr Array of tuples contain column index and what to filter by. | |
* @param ajaxSource True if using AJAX-sourced data. False if not. | |
*/ | |
function exFilterColumn( table_arg: DataTables<any>, col_filter_arr: Array<ExFilterColArgs>, ajaxSource: boolean ): void; | |
/** | |
* Trigger all available filters. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Use only when `externally_triggered` is set to true. | |
* | |
* @param table_arg DataTable variable instance. | |
*/ | |
function exFilterExternallyTriggered( table_arg: DataTables<any> ): void; | |
/** | |
* Retrieve current column's filtered value. | |
* | |
* @since 0.0.1 | |
* | |
* @param table_arg DataTable variable instance. | |
* @param column_number Column index number. | |
*/ | |
function exGetColumnFilterVal<T = FilterTypeRange | 'multi_select'>( table_arg: DataTables<any>, column_number: ColumnIdx ): T extends FilterTypeRange ? object : T extends 'multi_select' ? Array<string> : string; | |
/** | |
* Update column filter with new data. | |
* | |
* @since 0.0.1 | |
* | |
* @param table_arg DataTable variable instance. | |
* @param column_num Column index number. | |
* @param updatedData Same-structured data to use as update. | |
*/ | |
function exRefreshColumnFilterWithDataProp( table_arg: DataTables<any>, column_num: ColumnIdx, updatedData: Array<Record<string, any> | string> ): void; | |
/** | |
* Reset all filters. | |
* | |
* @since 0.0.1 | |
* | |
* @param table_arg DataTable variable instance. | |
* @param noRedraw True if you don't your table reloaded after resetting filter. Otherwise false. | |
*/ | |
function exResetAllFilters( table_arg: DataTables<any>, noRedraw: boolean ): void; | |
/** | |
* Reset specific filters. | |
* | |
* @since 0.0.1 | |
* | |
* @param table_arg DataTable variable instance. | |
* @param columns Column index numbers to target. | |
* @param noRedraw True if you don't your table reloaded after resetting filter. Otherwise false. | |
*/ | |
function exResetFilters( table_arg: DataTables<any>, columns: Array<ColumnIdx>, noRedraw: boolean ): void; | |
function generateTableSelectorJQFriendlyNew( tmpStr: string ): string; | |
function generateTableSelectorJQFriendly2( obj: Api<any> ): void; | |
function getOptions<T = ColumnParameters>( table_selector_jq_friendly: string ): Record<keyof T, T[ keyof T ]>; | |
/** | |
* Initialize global defaults for all `yadcf` instances. | |
* | |
* @since 0.0.1 | |
* | |
* @param params See {@link DefaultOptions} for details. | |
*/ | |
function initDefaults<T = DefaultOptions>( params: T ): Record<keyof T, T[ keyof T ]>; | |
/** | |
* Creates a filter that will affect multiple tables and/or multiple columns in multiple tables. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks Each array **_must_** have the same length of items. | |
* | |
* @example | |
* // Notice there are 2 tables in the first array AND 2 filter objects in the second. | |
* yadcf.initMultipleTables( [ oTable1, oTable2 ], [ { ...filter1ArgsForTable1 }, { ...filter2ArgsForTable2 } ] ); | |
* | |
* @param tablesArray | |
* @param filtersOptions | |
*/ | |
function initMultipleTables<T = MultiTableFilterParams>( tablesArray: Array<DataTables<any>>, filtersOptions: Array<Record<keyof T, T[ keyof T ]>> ): void; | |
/** | |
* Creates a filter that will affect multiple tables and/or multiple columns in multiple tables. | |
* | |
* @since 0.0.1 | |
* | |
* @param tables DataTables instance. | |
* @param filtersOptions Array of {@link ColumnParameters}. | |
*/ | |
function initMultipleColumns<T = ColumnParameters>( table: DataTables<any>, filtersOptions: Array<Record<keyof T, T[ keyof T ]>> ): void; | |
/** | |
* Callback function to be fired after `dt.xhr` event finishes. | |
* | |
* @since 0.0.1 | |
*/ | |
function initOnDtXhrComplete(): any; | |
/** | |
* Set, initialize and refresh any jQuery select plugin with functions. | |
* | |
* @since 0.0.1 | |
* | |
* @remarks jQuery selector will be passed to the user defined function to initialize and refresh the plugin. | |
* | |
* @param initFunc Function to initialize plugin. | |
* @param refreshFunc Function to refresh plugin. | |
* @param destroyFunc Function to destroy plugin instance. | |
*/ | |
function initSelectPluginCustomTriggers( initFunc: ( $filterSelector: JQuery ) => any, refreshFunc: ( $filterSelector: JQuery ) => any, destroyFunc: ( $filterSelector: JQuery ) => any ): void; | |
function nullChecked( ev: Event, table_selector_jq_friendly: string, column_number: ColumnIdx ): void; | |
function preventDefaultForEnter( evt: Event ): void; | |
function rangeClear( table_selector_jq_friendly: string, event: Event, column_number: ColumnIdx ): void; | |
function rangeDateKeyUP( table_selector_jq_friendly: string, date_format: DateFormat, event: Event ): void; | |
function rangeNumberKeyUP( table_selector_jq_friendly: string, event: Event ): void; | |
function rangeNumberSliderClear( table_selector_jq_friendly: string, event: Event ): void; | |
function stopPropagation( evt: Event ): void; | |
function textKeyUP( ev: Event, table_selector_jq_friendly: string, column_number: ColumnIdx, clear?: 'clear' ): void; | |
function textKeyUpMultiTables( tablesSelectors: string, event: Event, column_number_str: string, clear?: 'clear' ): void; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment