Skip to content

Commit

Permalink
Add RecursivePartial for optional render settings. For #484
Browse files Browse the repository at this point in the history
  • Loading branch information
oyejorge committed Oct 3, 2022
1 parent d9f6708 commit 259fc58
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 7 deletions.
4 changes: 2 additions & 2 deletions src/getSettings.ts
@@ -1,11 +1,11 @@
import defaults from './defaults';
import { hash_key } from './utils';
import { TomOption, TomSettings } from './types/index';
import { TomOption, TomSettings, RecursivePartial } from './types/index';
import { iterate } from '@orchidjs/sifter/lib/utils';
import { TomInput } from './types/index';


export default function getSettings( input:TomInput, settings_user:Partial<TomSettings>):TomSettings{
export default function getSettings( input:TomInput, settings_user:RecursivePartial<TomSettings>):TomSettings{
var settings:TomSettings = Object.assign({}, defaults, settings_user);

var attr_data = settings.dataAttr;
Expand Down
10 changes: 5 additions & 5 deletions src/tom-select.ts
Expand Up @@ -3,7 +3,7 @@ import MicroEvent from './contrib/microevent';
import MicroPlugin from './contrib/microplugin';
import { Sifter, iterate } from '@orchidjs/sifter';
import { escape_regex } from '@orchidjs/unicode-variants';
import { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames, TomClearFilter } from './types/index';
import { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames, TomClearFilter, RecursivePartial } from './types/index';
import {highlight, removeHighlight} from './contrib/highlight';
import * as constants from './constants';
import getSettings from './getSettings';
Expand Down Expand Up @@ -89,7 +89,7 @@ export default class TomSelect extends MicroPlugin(MicroEvent){



constructor( input_arg: string|TomInput, user_settings:Partial<TomSettings> ){
constructor( input_arg: string|TomInput, user_settings:RecursivePartial<TomSettings> ){
super();

instance_i++;
Expand Down Expand Up @@ -539,7 +539,7 @@ export default class TomSelect extends MicroPlugin(MicroEvent){
*/
sync(get_settings:boolean=true):void{
const self = this;
const settings = get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as TomSettings ) : self.settings;
const settings = get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as RecursivePartial<TomSettings> ) : self.settings;

self.setupOptions(settings.options,settings.optgroups);

Expand Down Expand Up @@ -2605,8 +2605,8 @@ export default class TomSelect extends MicroPlugin(MicroEvent){
// render markup
html = self.settings.render[templateName].call(this, data, escape_html);

if( html == null ){
return html;
if( !html ){
return null;
}

html = getDom( html );
Expand Down
4 changes: 4 additions & 0 deletions src/types/core.ts
Expand Up @@ -55,3 +55,7 @@ export type TomTemplates = {
export type TomTemplateNames = keyof TomTemplates;

export type TomClearFilter = (option:TomOption,value:string) => boolean;

export type RecursivePartial<T> = {
[P in keyof T]?: RecursivePartial<T[P]>;
};

0 comments on commit 259fc58

Please sign in to comment.