-
Notifications
You must be signed in to change notification settings - Fork 448
/
Copy pathdefaults.js
100 lines (93 loc) · 6.51 KB
/
defaults.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
export default {
delimiters : ",", // [RegEx] split tags by any of these delimiters ("null" to cancel) Example: ",| |."
pattern : null, // RegEx pattern to validate input by. Ex: /[1-9]/
tagTextProp : 'value', // tag data Object property which will be displayed as the tag's text
maxTags : Infinity, // Maximum number of tags
callbacks : {}, // Exposed callbacks object to be triggered on certain events
addTagOnBlur : true, // automatically adds the text which was inputed as a tag when blur event happens
addTagOn : ['blur', 'tab', 'enter'], // if the tagify field (in a normal mode) has any non-tag input in it, convert it to a tag on any of these events: blur away from the field, click "tab"/"enter" key
onChangeAfterBlur : true, // By default, the native way of inputs' onChange events is kept, and it only fires when the field is blured.
duplicates : false, // "true" - allow duplicate tags
whitelist : [], // Array of tags to suggest as the user types (can be used along with "enforceWhitelist" setting)
blacklist : [], // A list of non-allowed tags
enforceWhitelist : false, // Only allow tags from the whitelist
userInput : true, // disable manually typing/pasting/editing tags (tags may only be added from the whitelist)
focusable : true, // Allow the component as a whole to recieve focus. There are implementations of Tagify without external border and so 'focusability' causes unwanted behaviour
keepInvalidTags : false, // if true, do not remove tags which did not pass validation
createInvalidTags : true, // if false, do not create invalid tags from invalid user input
mixTagsAllowedAfter : /,|\.|\:|\s/, // RegEx - Define conditions in which mix-tags content allows a tag to be added after
mixTagsInterpolator : ['[[', ']]'], // Interpolation for mix mode. Everything between these will become a tag, if is a valid Object
backspace : true, // false / true / "edit"
skipInvalid : false, // If `true`, do not add invalid, temporary, tags before automatically removing them
pasteAsTags : true, // automatically converts pasted text into tags. if "false", allows for further text editing
editTags : {
clicks : 2, // clicks to enter "edit-mode": 1 for single click. any other value is considered as double-click
keepInvalid : true // keeps invalid edits as-is until `esc` is pressed while in focus
}, // 1 or 2 clicks to edit a tag. false/null for not allowing editing
transformTag : ()=>{}, // Takes a tag input string as argument and returns a transformed value
trim : true, // whether or not the value provided should be trimmed, before being added as a tag
a11y: {
focusableTags: false
},
mixMode: {
insertAfterTag : '\u00A0', // String/Node to inject after a tag has been added (see #588)
},
autoComplete: {
enabled: true, // Tries to suggest the input's value while typing (match from whitelist) by adding the rest of term as grayed-out text
rightKey: false, // If `true`, when Right key is pressed, use the suggested value to create a tag, else just auto-completes the input. in mixed-mode this is set to "true"
tabKey: false, // If 'true`, pressing `tab` key would only auto-complete but not also convert to a tag (like `rightKey` does).
},
classNames: {
namespace : 'tagify',
mixMode : 'tagify--mix',
selectMode : 'tagify--select',
input : 'tagify__input',
focus : 'tagify--focus',
tagNoAnimation : 'tagify--noAnim',
tagInvalid : 'tagify--invalid',
tagNotAllowed : 'tagify--notAllowed',
scopeLoading : 'tagify--loading',
hasMaxTags : 'tagify--hasMaxTags',
hasNoTags : 'tagify--noTags',
empty : 'tagify--empty',
inputInvalid : 'tagify__input--invalid',
dropdown : 'tagify__dropdown',
dropdownWrapper : 'tagify__dropdown__wrapper',
dropdownHeader : 'tagify__dropdown__header',
dropdownFooter : 'tagify__dropdown__footer',
dropdownItem : 'tagify__dropdown__item',
dropdownItemActive : 'tagify__dropdown__item--active',
dropdownItemHidden : 'tagify__dropdown__item--hidden',
dropdownItemSelected : 'tagify__dropdown__item--selected',
dropdownInital : 'tagify__dropdown--initial',
tag : 'tagify__tag',
tagText : 'tagify__tag-text',
tagX : 'tagify__tag__removeBtn',
tagLoading : 'tagify__tag--loading',
tagEditing : 'tagify__tag--editable',
tagFlash : 'tagify__tag--flash',
tagHide : 'tagify__tag--hide',
},
dropdown: {
classname : '',
enabled : 2, // minimum input characters to be typed for the suggestions dropdown to show
maxItems : 10,
searchKeys : ["value", "searchBy"],
fuzzySearch : true,
caseSensitive : false,
accentedSearch : true,
includeSelectedTags: false, // Should the suggestions list Include already-selected tags (after filtering)
escapeHTML : true, // escapes HTML entities in the suggestions' rendered text
highlightFirst : true, // highlights first-matched item in the list
closeOnSelect : true, // closes the dropdown after selecting an item, if `enabled:0` (which means always show dropdown)
clearOnSelect : true, // after selecting a suggetion, should the typed text input remain or be cleared
position : 'all', // 'manual' / 'text' / 'all'
appendTarget : null // defaults to document.body once DOM has been loaded
},
hooks: {
beforeRemoveTag: () => Promise.resolve(),
beforePaste: () => Promise.resolve(),
suggestionClick: () => Promise.resolve(),
beforeKeyDown: () => Promise.resolve(),
}
}