guestbell-forms 2.0.298 → 2.0.299

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/build/components/InputHeader/InputHeader.js +258 -323
  2. package/build/components/InputHeader/InputHeader.js.map +1 -1
  3. package/build/components/InputHeader/InputHeaderContext.js +6 -8
  4. package/build/components/InputHeader/InputHeaderContext.js.map +1 -1
  5. package/build/components/InputHeader/index.js +4 -6
  6. package/build/components/InputHeader/index.js.map +1 -1
  7. package/build/components/InputHeader/withInputHeaderContext.js +9 -13
  8. package/build/components/InputHeader/withInputHeaderContext.js.map +1 -1
  9. package/build/components/base/input/BaseInput.js +334 -418
  10. package/build/components/base/input/BaseInput.js.map +1 -1
  11. package/build/components/base/input/index.js +1 -1
  12. package/build/components/base/input/index.js.map +1 -1
  13. package/build/components/bookingCalendar/BookingCalendar.js +68 -85
  14. package/build/components/bookingCalendar/BookingCalendar.js.map +1 -1
  15. package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js +40 -71
  16. package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js.map +1 -1
  17. package/build/components/bookingCalendar/bookingCalendarControls/classes.js +1 -1
  18. package/build/components/bookingCalendar/bookingCalendarControls/classes.js.map +1 -1
  19. package/build/components/bookingCalendar/bookingCalendarControls/index.js +2 -2
  20. package/build/components/bookingCalendar/bookingCalendarControls/index.js.map +1 -1
  21. package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js +22 -41
  22. package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js.map +1 -1
  23. package/build/components/bookingCalendar/bookingCalendarDatePicker/classes.js +1 -1
  24. package/build/components/bookingCalendar/bookingCalendarDatePicker/classes.js.map +1 -1
  25. package/build/components/bookingCalendar/bookingCalendarDatePicker/index.js +2 -2
  26. package/build/components/bookingCalendar/bookingCalendarDatePicker/index.js.map +1 -1
  27. package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.js +20 -24
  28. package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.js.map +1 -1
  29. package/build/components/bookingCalendar/bookingCalendarGrid/classes.js +1 -1
  30. package/build/components/bookingCalendar/bookingCalendarGrid/classes.js.map +1 -1
  31. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js +9 -12
  32. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js.map +1 -1
  33. package/build/components/bookingCalendar/bookingCalendarItem/classes.js +1 -1
  34. package/build/components/bookingCalendar/bookingCalendarItem/classes.js.map +1 -1
  35. package/build/components/bookingCalendar/bookingCalendarItem/index.js +2 -2
  36. package/build/components/bookingCalendar/bookingCalendarItem/index.js.map +1 -1
  37. package/build/components/bookingCalendar/bookingCalendarLane/BookingCalendarLane.js +23 -28
  38. package/build/components/bookingCalendar/bookingCalendarLane/BookingCalendarLane.js.map +1 -1
  39. package/build/components/bookingCalendar/bookingCalendarLane/classes.js +1 -1
  40. package/build/components/bookingCalendar/bookingCalendarLane/classes.js.map +1 -1
  41. package/build/components/bookingCalendar/bookingCalendarLane/index.js +2 -2
  42. package/build/components/bookingCalendar/bookingCalendarLane/index.js.map +1 -1
  43. package/build/components/bookingCalendar/bookingCalendarLaneHeader/BookingCalendarLaneHeader.js +6 -6
  44. package/build/components/bookingCalendar/bookingCalendarLaneHeader/BookingCalendarLaneHeader.js.map +1 -1
  45. package/build/components/bookingCalendar/bookingCalendarLaneHeader/classes.js +1 -1
  46. package/build/components/bookingCalendar/bookingCalendarLaneHeader/classes.js.map +1 -1
  47. package/build/components/bookingCalendar/bookingCalendarLaneHeader/index.js +1 -1
  48. package/build/components/bookingCalendar/bookingCalendarLaneHeader/index.js.map +1 -1
  49. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.js +12 -16
  50. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.js.map +1 -1
  51. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.js +27 -31
  52. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.js.map +1 -1
  53. package/build/components/bookingCalendar/bookingCalendarLanesHeader/classes.js +1 -1
  54. package/build/components/bookingCalendar/bookingCalendarLanesHeader/classes.js.map +1 -1
  55. package/build/components/bookingCalendar/bookingCalendarLanesHeader/index.js +2 -2
  56. package/build/components/bookingCalendar/bookingCalendarLanesHeader/index.js.map +1 -1
  57. package/build/components/bookingCalendar/bookingCalendarRenderItem/BookingCalendarRenderItem.js +19 -19
  58. package/build/components/bookingCalendar/bookingCalendarRenderItem/BookingCalendarRenderItem.js.map +1 -1
  59. package/build/components/bookingCalendar/bookingCalendarRenderItem/classes.js +1 -1
  60. package/build/components/bookingCalendar/bookingCalendarRenderItem/classes.js.map +1 -1
  61. package/build/components/bookingCalendar/bookingCalendarRenderItem/index.js +1 -1
  62. package/build/components/bookingCalendar/bookingCalendarRenderItem/index.js.map +1 -1
  63. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js +133 -175
  64. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js.map +1 -1
  65. package/build/components/bookingCalendar/bookingCalendarTimeAxis/BookingCalendarTimeAxis.js +17 -19
  66. package/build/components/bookingCalendar/bookingCalendarTimeAxis/BookingCalendarTimeAxis.js.map +1 -1
  67. package/build/components/bookingCalendar/bookingCalendarTimeAxis/classes.js +1 -1
  68. package/build/components/bookingCalendar/bookingCalendarTimeAxis/classes.js.map +1 -1
  69. package/build/components/bookingCalendar/classes.js +1 -1
  70. package/build/components/bookingCalendar/classes.js.map +1 -1
  71. package/build/components/bookingCalendar/common.js +5 -7
  72. package/build/components/bookingCalendar/common.js.map +1 -1
  73. package/build/components/bookingCalendar/index.js +3 -3
  74. package/build/components/bookingCalendar/index.js.map +1 -1
  75. package/build/components/bookingCalendar/utils.js +143 -205
  76. package/build/components/bookingCalendar/utils.js.map +1 -1
  77. package/build/components/button/Button.js +101 -123
  78. package/build/components/button/Button.js.map +1 -1
  79. package/build/components/button/index.js +4 -6
  80. package/build/components/button/index.js.map +1 -1
  81. package/build/components/checkbox/Checkbox.js +102 -145
  82. package/build/components/checkbox/Checkbox.js.map +1 -1
  83. package/build/components/checkbox/index.js +4 -6
  84. package/build/components/checkbox/index.js.map +1 -1
  85. package/build/components/dropdown/Dropdown.js +41 -57
  86. package/build/components/dropdown/Dropdown.js.map +1 -1
  87. package/build/components/dropdown/index.js +4 -6
  88. package/build/components/dropdown/index.js.map +1 -1
  89. package/build/components/dynamicSubmit/DynamicSubmit.js +81 -123
  90. package/build/components/dynamicSubmit/DynamicSubmit.js.map +1 -1
  91. package/build/components/dynamicSubmit/index.js +4 -6
  92. package/build/components/dynamicSubmit/index.js.map +1 -1
  93. package/build/components/form/Form.js +139 -193
  94. package/build/components/form/Form.js.map +1 -1
  95. package/build/components/form/FormContext.js +6 -8
  96. package/build/components/form/FormContext.js.map +1 -1
  97. package/build/components/form/FormValidationSummary.js +57 -105
  98. package/build/components/form/FormValidationSummary.js.map +1 -1
  99. package/build/components/form/index.js +5 -7
  100. package/build/components/form/index.js.map +1 -1
  101. package/build/components/form/withFormContext.js +9 -13
  102. package/build/components/form/withFormContext.js.map +1 -1
  103. package/build/components/inputGroup/InputGroup.js +16 -48
  104. package/build/components/inputGroup/InputGroup.js.map +1 -1
  105. package/build/components/inputGroup/index.js +4 -6
  106. package/build/components/inputGroup/index.js.map +1 -1
  107. package/build/components/money/Money.js +137 -211
  108. package/build/components/money/Money.js.map +1 -1
  109. package/build/components/money/index.js +4 -6
  110. package/build/components/money/index.js.map +1 -1
  111. package/build/components/numberInput/NumberInput.js +106 -144
  112. package/build/components/numberInput/NumberInput.js.map +1 -1
  113. package/build/components/numberInput/index.js +4 -6
  114. package/build/components/numberInput/index.js.map +1 -1
  115. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.js +162 -220
  116. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.js.map +1 -1
  117. package/build/components/openingHours/openingHoursDay/index.js +4 -6
  118. package/build/components/openingHours/openingHoursDay/index.js.map +1 -1
  119. package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.js +114 -191
  120. package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.js.map +1 -1
  121. package/build/components/openingHours/openingHoursSpecial/index.js +4 -6
  122. package/build/components/openingHours/openingHoursSpecial/index.js.map +1 -1
  123. package/build/components/openingHours/openingHoursWeek/OpeningHoursWeek.js +150 -209
  124. package/build/components/openingHours/openingHoursWeek/OpeningHoursWeek.js.map +1 -1
  125. package/build/components/openingHours/openingHoursWeek/index.js +4 -6
  126. package/build/components/openingHours/openingHoursWeek/index.js.map +1 -1
  127. package/build/components/openingHours/utils/OpeningHoursUtil.js +51 -76
  128. package/build/components/openingHours/utils/OpeningHoursUtil.js.map +1 -1
  129. package/build/components/radio/Radio.js +38 -75
  130. package/build/components/radio/Radio.js.map +1 -1
  131. package/build/components/radio/index.js +4 -6
  132. package/build/components/radio/index.js.map +1 -1
  133. package/build/components/radioContainer/RadioContainer.js +19 -49
  134. package/build/components/radioContainer/RadioContainer.js.map +1 -1
  135. package/build/components/radioContainer/index.js +4 -6
  136. package/build/components/radioContainer/index.js.map +1 -1
  137. package/build/components/select/Select.js +186 -264
  138. package/build/components/select/Select.js.map +1 -1
  139. package/build/components/select/index.js +4 -6
  140. package/build/components/select/index.js.map +1 -1
  141. package/build/components/submit/Submit.js +50 -87
  142. package/build/components/submit/Submit.js.map +1 -1
  143. package/build/components/submit/index.js +4 -6
  144. package/build/components/submit/index.js.map +1 -1
  145. package/build/components/submit/subComponents/SubmitValidationSummary.js +5 -7
  146. package/build/components/submit/subComponents/SubmitValidationSummary.js.map +1 -1
  147. package/build/components/tags/Tags.js +365 -565
  148. package/build/components/tags/Tags.js.map +1 -1
  149. package/build/components/tags/index.js +4 -6
  150. package/build/components/tags/index.js.map +1 -1
  151. package/build/components/tags/subComponents/TagsSuggestions.js +29 -30
  152. package/build/components/tags/subComponents/TagsSuggestions.js.map +1 -1
  153. package/build/components/text/Text.js +95 -138
  154. package/build/components/text/Text.js.map +1 -1
  155. package/build/components/text/index.js +4 -6
  156. package/build/components/text/index.js.map +1 -1
  157. package/build/components/textArea/TextArea.js +52 -91
  158. package/build/components/textArea/TextArea.js.map +1 -1
  159. package/build/components/textArea/index.js +4 -6
  160. package/build/components/textArea/index.js.map +1 -1
  161. package/build/components/themeProvider/ThemeContext.js +6 -8
  162. package/build/components/themeProvider/ThemeContext.js.map +1 -1
  163. package/build/components/themeProvider/ThemeProvider.js +3 -5
  164. package/build/components/themeProvider/ThemeProvider.js.map +1 -1
  165. package/build/components/themeProvider/index.js +4 -6
  166. package/build/components/themeProvider/index.js.map +1 -1
  167. package/build/components/themeProvider/withThemeContext.js +10 -14
  168. package/build/components/themeProvider/withThemeContext.js.map +1 -1
  169. package/build/components/time/Time.js +184 -228
  170. package/build/components/time/Time.js.map +1 -1
  171. package/build/components/time/index.js +4 -6
  172. package/build/components/time/index.js.map +1 -1
  173. package/build/components/timeSpan/TimeSpan.js +226 -280
  174. package/build/components/timeSpan/TimeSpan.js.map +1 -1
  175. package/build/components/timeSpan/index.js +4 -6
  176. package/build/components/timeSpan/index.js.map +1 -1
  177. package/build/components/utils/Guid.js +3 -5
  178. package/build/components/utils/Guid.js.map +1 -1
  179. package/build/components/utils/ShallowEqual.js +5 -11
  180. package/build/components/utils/ShallowEqual.js.map +1 -1
  181. package/build/components/utils/TimeUtil.js +8 -22
  182. package/build/components/utils/TimeUtil.js.map +1 -1
  183. package/build/components/utils/Typescript.js.map +1 -1
  184. package/build/dist/guestbell-forms.css +0 -6
  185. package/build/dist/guestbell-forms.css.map +1 -1
  186. package/build/dist/guestbell-forms.min.css +1 -1
  187. package/build/dist/guestbell-forms.min.js +1 -1
  188. package/build/dist/guestbell-forms.min.js.map +1 -1
  189. package/build/dist/report.html +2 -2
  190. package/build/index.js +23 -23
  191. package/build/index.js.map +1 -1
  192. package/build/types/ElementOverrideProp.js.map +1 -1
  193. package/build/types/Theme.js.map +1 -1
  194. package/build/types/ThemeOverrides.js.map +1 -1
  195. package/build/validators/EmailValidator.js +8 -22
  196. package/build/validators/EmailValidator.js.map +1 -1
  197. package/build/validators/LatitudeValidator.js +13 -27
  198. package/build/validators/LatitudeValidator.js.map +1 -1
  199. package/build/validators/LongitudeValidator.js +13 -27
  200. package/build/validators/LongitudeValidator.js.map +1 -1
  201. package/build/validators/NumberValidator.js +27 -39
  202. package/build/validators/NumberValidator.js.map +1 -1
  203. package/build/validators/UrlValidator.js +9 -23
  204. package/build/validators/UrlValidator.js.map +1 -1
  205. package/build/validators/base.js.map +1 -1
  206. package/build/validators/index.js +6 -6
  207. package/build/validators/index.js.map +1 -1
  208. package/package.json +8 -5
  209. package/tsconfig.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/components/tags/Tags.tsx"],"names":["PlusIcon","LeftArrowIcon","defaultTagsTranslations","defaultBaseTranslations","addNew","TagButtonComponent","p","className","id","onClick","children","TagsRaw","props","textErrors","setState","handleErrors","e","onFocus","state","suggestionsVisible","onSuggestionsOpened","textIsFocused","touched","fetchExistingTags","value","showMobileVersion","mobileVersionEnabled","isMobile","setTimeout","textRef","current","focus","suggestions","key","preselectedSuggestion","undefined","length","preventDefault","stopPropagation","existingTag","existingTags","find","et","name","onTagsChanged","tags","concat","allowNew","addNewTag","onNewTagAdded","newTag","closeSuggestionsAfterCreate","tag","lastSelected","newTags","isMax","maxTags","finalValue","onBlur","isValid","target","textIsValid","errors","getErrors","setInvalid","setValid","onTagClick","filter","sv","fetchingExistingTags","fetchedExistingTags","React","createRef","suggestionsRef","handleClickOutside","bind","handleLeaveMobileClick","require","oldProps","validators","customValidators","required","containerRef","querySelector","contains","onSuggestionsClosed","addNewOnBlur","getSuggestions","existing","s","onSuggestionSelected","document","addEventListener","removeEventListener","translations","getTranslations","textProps","LeaveMobileButton","showInput","Boolean","readOnly","body","title","tooltip","getValidationClass","placeholder","map","item","index","renderTag","readonlyEmptyPlaceholder","onKeyDown","onTextErrorsChanged","onTextChanged","showSuggestions","tagsSuggestionsClassName","isLoading","suggestionsLoadingComponent","suggestionsEmptyComponent","waitingForMoreInputComponent","minLettersToFetch","SuggestionTag","popperProps","renderDefaultValidation","label","renderLabel","valueNotAddedError","maxTagsSurpassedError","i","startsWith","timer","loadingDelayMs","then","clearTimeout","filteredTags","filterExistingTags","toLowerCase","allowSameTagMultipleTimes","some","t","slice","maxSuggestions","toString","tagRemoveClick","showChips","tagClick","BaseInput","defaultProps","disabled","newTagName","Promise","resolve","Date","getTime","text","Tags"],"mappings":"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","sourcesContent":["// Libs\r\nimport * as React from 'react';\r\nimport { InputGroup } from '../inputGroup/InputGroup';\r\nimport { Text, TextProps, TextRaw } from '../text/Text';\r\nimport * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_circle_outline_24px.svg';\r\nimport * as LeftArrowIcon from 'material-design-icons/navigation/svg/production/ic_arrow_back_24px.svg';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n ValidationError,\r\n defaultBaseTranslations,\r\n} from '../base/input/BaseInput';\r\nimport { Button, ButtonComponentProps } from '../button/Button';\r\nimport TagsSuggestions, {\r\n RenderSuggestionTagProps,\r\n} from './subComponents/TagsSuggestions';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport classNames from 'classnames';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport { PopperProps } from '@material-ui/core/Popper/Popper';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\nimport Portal from '@material-ui/core/Portal';\r\n\r\n// Misc\r\nexport type Tag = {\r\n id: number | string;\r\n name: string;\r\n};\r\n\r\nexport const defaultTagsTranslations = {\r\n ...defaultBaseTranslations,\r\n addNew: 'Add new',\r\n};\r\n\r\nexport type TagsTranslations = Partial<typeof defaultTagsTranslations>;\r\n\r\nexport type TagsProps<T extends Tag = Tag> = {\r\n className?: string;\r\n tagsSuggestionsClassName?: string;\r\n disabled?: boolean;\r\n tags: T[];\r\n existingTags?: T[];\r\n fetchExistingTags?: (text: string) => Promise<T[]>;\r\n onTagsChanged: (newTags: T[]) => void;\r\n onNewTagAdded?: (newTagName: string) => Promise<T>;\r\n onTagClick?: (tag: T) => void;\r\n showChips?: boolean;\r\n allowNew?: boolean;\r\n addNewOnBlur?: boolean;\r\n textProps?: TextProps;\r\n readOnly?: boolean;\r\n readonlyEmptyPlaceholder?: string;\r\n maxTags?: number;\r\n valueNotAddedError?: string | JSX.Element;\r\n maxTagsSurpassedError?: string | JSX.Element;\r\n showSuggestions?: boolean;\r\n suggestionsLoadingComponent?: string | JSX.Element;\r\n suggestionsEmptyComponent?: string | JSX.Element;\r\n waitingForMoreInputComponent?: string | JSX.Element;\r\n loadingDelayMs?: number;\r\n filterExistingTags?: (text: string, existingTags: T[]) => T[];\r\n allowSameTagMultipleTimes?: boolean;\r\n maxSuggestions?: number;\r\n popperProps?: Partial<PopperProps>;\r\n minLettersToFetch?: number;\r\n mobileVersionEnabled?: boolean;\r\n isLoading?: boolean;\r\n closeSuggestionsAfterCreate?: boolean;\r\n SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<T>>;\r\n} & BaseInputProps<HTMLInputElement, TagsTranslations>;\r\n\r\nexport interface TagsState<T extends Tag = Tag> extends BaseInputState {\r\n textIsFocused: boolean;\r\n textErrors: ValidationError[];\r\n textIsValid: boolean;\r\n suggestionsVisible: boolean;\r\n fetchedExistingTags: T[];\r\n fetchingExistingTags: boolean;\r\n preselectedSuggestion?: number;\r\n}\r\n\r\ntype InjectedProps = {};\r\n\r\nconst TagButtonComponent: React.FC<ButtonComponentProps> = p => (\r\n <a className={p.className} id={p.id} onClick={p.onClick}>\r\n {p.children}\r\n </a>\r\n);\r\n\r\nexport class TagsRaw<T extends Tag = Tag> extends BaseInput<\r\n TagsProps<T> & InjectedProps,\r\n TagsState<T>,\r\n HTMLInputElement,\r\n TagsTranslations\r\n> {\r\n public static defaultProps: TagsProps = {\r\n ...BaseInput.defaultProps,\r\n disabled: false,\r\n className: '',\r\n tags: [],\r\n existingTags: [],\r\n maxTags: 1000,\r\n onTagsChanged: () => undefined,\r\n onNewTagAdded: newTagName =>\r\n Promise.resolve({ name: newTagName, id: new Date().getTime() }),\r\n valueNotAddedError: <span>You forgot to add tag</span>,\r\n maxTagsSurpassedError: <span>Maximum number of tags surpassed</span>,\r\n waitingForMoreInputComponent: <span>Waiting for more input...</span>,\r\n showSuggestions: true,\r\n suggestionsLoadingComponent: (\r\n <LinearProgress className=\"tags-input__suggestions__defaultLoading\" />\r\n ),\r\n suggestionsEmptyComponent: 'No existing tags...',\r\n loadingDelayMs: 500,\r\n filterExistingTags: (text, tags) =>\r\n tags.filter(tag => tag.name && tag.name.toLowerCase().startsWith(text)),\r\n maxSuggestions: 5,\r\n addNewOnBlur: false,\r\n translations: defaultTagsTranslations,\r\n minLettersToFetch: 0,\r\n mobileVersionEnabled: true,\r\n closeSuggestionsAfterCreate: false,\r\n };\r\n\r\n private textRef: React.RefObject<TextRaw>;\r\n private suggestionsRef: React.RefObject<HTMLDivElement>;\r\n private isMobile: boolean = false;\r\n\r\n constructor(props: TagsProps<T> & InjectedProps) {\r\n super(props);\r\n this.state = {\r\n ...this.state,\r\n textErrors: [],\r\n textIsFocused: false,\r\n suggestionsVisible: false,\r\n fetchingExistingTags: false,\r\n textIsValid: false,\r\n fetchedExistingTags: [],\r\n };\r\n this.textRef = React.createRef();\r\n this.suggestionsRef = React.createRef();\r\n this.handleClickOutside = this.handleClickOutside.bind(this);\r\n this.handleLeaveMobileClick = this.handleLeaveMobileClick.bind(this);\r\n if (props.mobileVersionEnabled) {\r\n this.isMobile = require('react-device-detect')?.isMobile;\r\n }\r\n }\r\n\r\n public focus() {\r\n if (this.textRef.current) {\r\n this.textRef.current.focus();\r\n }\r\n }\r\n\r\n public componentDidUpdate(oldProps: TagsProps & InjectedProps) {\r\n if (\r\n oldProps.tags !== this.props.tags ||\r\n oldProps.validators !== this.props.validators ||\r\n oldProps.customValidators !== this.props.customValidators ||\r\n oldProps.required !== this.props.required\r\n ) {\r\n this.handleErrors(this.props.tags);\r\n }\r\n }\r\n\r\n public handleLeaveMobileClick() {\r\n this.setState({\r\n textIsFocused: false,\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n }\r\n\r\n public handleClickOutside(e: MouseEvent) {\r\n if (\r\n !this.containerRef.current ||\r\n this.containerRef.current\r\n .querySelector('.tags-input__tag__wrapper')\r\n ?.contains(e.target as HTMLDivElement) ||\r\n this.containerRef.current\r\n .querySelector('.tags-input__text-input')\r\n ?.contains(e.target as HTMLDivElement) ||\r\n !this.suggestionsRef.current ||\r\n this.suggestionsRef.current.contains(e.target as HTMLDivElement)\r\n ) {\r\n return;\r\n }\r\n if (this.state.suggestionsVisible) {\r\n this.props.onSuggestionsClosed?.();\r\n }\r\n this.setState({\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n if (this.props.addNewOnBlur && this.state.value) {\r\n const suggestions = this.getSuggestions();\r\n const existing = suggestions.find(s => s.name === this.state.value);\r\n if (existing) {\r\n this.onSuggestionSelected(existing, suggestions.length === 1);\r\n } else if (this.props.allowNew) {\r\n this.addNewTag();\r\n }\r\n } /* else if (this.state.value) {\r\n this.setState({ value: '' });\r\n }*/\r\n }\r\n\r\n public componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside);\r\n document.addEventListener('touchstart', this.handleClickOutside);\r\n this.handleErrors(this.props.tags);\r\n }\r\n\r\n public componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside);\r\n document.removeEventListener('touchstart', this.handleClickOutside);\r\n super.componentWillUnmount();\r\n }\r\n\r\n public render() {\r\n const translations = this.getTranslations(defaultTagsTranslations);\r\n const textProps = this.props.textProps ? this.props.textProps : {};\r\n const suggestions = this.getSuggestions();\r\n const showMobileVersion =\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile &&\r\n (this.state.textIsFocused || this.state.suggestionsVisible);\r\n const LeaveMobileButton = showMobileVersion ? (\r\n <Button\r\n className=\"tags-input__leaveMobileTagsButton line-height--0\"\r\n onClick={this.handleLeaveMobileClick}\r\n noShadow={true}\r\n unobtrusive={true}\r\n >\r\n <LeftArrowIcon />\r\n </Button>\r\n ) : (\r\n undefined\r\n );\r\n const showInput = Boolean(\r\n (!this.props.maxTags ||\r\n this.props.maxTags > (this.props.tags && this.props.tags.length)) &&\r\n !this.props.readOnly\r\n );\r\n return (\r\n <Portal container={document.body} disablePortal={!showMobileVersion}>\r\n <InputGroup title={this.props.title} tooltip={this.props.tooltip}>\r\n <div\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n className={classNames(\r\n 'input__base tags-input',\r\n this.getValidationClass(),\r\n this.props.className,\r\n {\r\n 'tags-input--readOnly': this.props.readOnly,\r\n 'tags-input--hasPlaceholder':\r\n this.props.textProps && this.props.textProps.placeholder,\r\n 'tags-input--mobile': showMobileVersion,\r\n }\r\n )}\r\n ref={this.containerRef}\r\n >\r\n {showMobileVersion && (\r\n <div className=\"tags-input__mobileBackdrop\" />\r\n )}\r\n <div className=\"tags-input__tags__wrapper\">\r\n {!showInput && showMobileVersion && LeaveMobileButton}\r\n {this.props.tags && this.props.tags.length > 0 ? (\r\n <div className=\"tags-input__tag__wrapper\">\r\n {this.props.tags.map((item, index) =>\r\n this.renderTag(item, index)\r\n )}\r\n </div>\r\n ) : (\r\n this.props.readOnly && (\r\n <div className=\"tags-input__tag__wrapper\">\r\n <div className=\"tags-input__tag\">\r\n {this.props.readonlyEmptyPlaceholder}\r\n </div>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n {showInput && (\r\n <div\r\n className={\r\n 'tags-input__tags__wrapper ' +\r\n (this.props.readOnly ? 'filled ' : '')\r\n }\r\n >\r\n <Text\r\n showClearButton={true}\r\n {...textProps}\r\n {...(this.props.id && {\r\n id: this.props.id + '-text-input',\r\n })}\r\n ref={this.textRef}\r\n required={\r\n this.props.tags.length > 0 ? false : this.props.required\r\n }\r\n className={\r\n 'tags-input__text-input ' +\r\n (textProps.className ? textProps.className : '')\r\n }\r\n onKeyDown={this.onKeyDown(suggestions)}\r\n onErrorsChanged={this.onTextErrorsChanged}\r\n onChange={this.onTextChanged}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n value={this.state.value}\r\n readOnly={this.props.readOnly}\r\n showValidation={false}\r\n ignoreContext={true}\r\n validators={this.props.validators}\r\n customValidators={this.props.customValidators}\r\n before={LeaveMobileButton}\r\n />\r\n {this.state.suggestionsVisible && this.props.showSuggestions && (\r\n <TagsSuggestions<T>\r\n {...(this.props.id && {\r\n id: this.props.id + '-text-input',\r\n })}\r\n className={classNames(this.props.tagsSuggestionsClassName)}\r\n innerRef={this.suggestionsRef}\r\n anchorEl={this.containerRef.current}\r\n allowNew={this.props.allowNew}\r\n preselectedSuggestion={this.state.preselectedSuggestion}\r\n loading={\r\n this.state.fetchingExistingTags || this.props.isLoading\r\n }\r\n LoadingComponent={this.props.suggestionsLoadingComponent}\r\n isVisible={this.state.suggestionsVisible}\r\n EmptyComponent={this.props.suggestionsEmptyComponent}\r\n WaitingForMoreInputComponent={\r\n this.props.waitingForMoreInputComponent\r\n }\r\n isWaitingForMoreInput={\r\n this.state.value.length < this.props.minLettersToFetch\r\n }\r\n tags={suggestions}\r\n onSelected={this.onSuggestionSelected}\r\n value={this.state.value}\r\n AddNewTagComponent={\r\n this.props.allowNew &&\r\n this.state.value !== '' &&\r\n (!this.props.existingTags ||\r\n !this.props.existingTags.find(\r\n e => e.name === this.state.value\r\n )) &&\r\n (!this.state.fetchedExistingTags ||\r\n !this.state.fetchedExistingTags.find(\r\n e => e.name === this.state.value\r\n )) &&\r\n this.state.textIsValid && (\r\n <Button\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-new-button',\r\n })}\r\n className=\"tags-input__suggestion tags-input__add-new\"\r\n dropdown={true}\r\n onClick={this.addNewTag}\r\n >\r\n {translations.addNew} \"{this.state.value}\"\r\n </Button>\r\n )\r\n }\r\n SuggestionTag={this.props.SuggestionTag}\r\n popperProps={this.props.popperProps}\r\n />\r\n )}\r\n </div>\r\n )}\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label\r\n className={\r\n this.state.value !== '' ||\r\n this.state.textIsFocused ||\r\n this.props.readOnly ||\r\n this.props.tags.length >= this.props.maxTags ||\r\n showMobileVersion\r\n ? 'label--focused'\r\n : ''\r\n }\r\n >\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n </Portal>\r\n );\r\n }\r\n\r\n private onTextErrorsChanged = (textErrors: ValidationError[]) =>\r\n this.setState(\r\n () => ({ textErrors }),\r\n () => this.handleErrors()\r\n );\r\n\r\n private onFocus = (e: React.SyntheticEvent<{}>) => {\r\n this.props.onFocus?.(e);\r\n if (!this.state.suggestionsVisible) {\r\n this.props.onSuggestionsOpened?.();\r\n }\r\n this.setState(\r\n () => ({ textIsFocused: true, suggestionsVisible: true, touched: true }),\r\n () => this.handleErrors()\r\n );\r\n this.fetchExistingTags(this.state.value);\r\n const showMobileVersion =\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile &&\r\n (this.state.textIsFocused || this.state.suggestionsVisible);\r\n if (\r\n !showMobileVersion &&\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile\r\n ) {\r\n setTimeout(() => this.textRef.current?.focus(), 100);\r\n }\r\n };\r\n\r\n private onKeyDown = (suggestions: T[]) => async (e: React.KeyboardEvent) => {\r\n if (e.key === 'Tab') {\r\n this.setState({\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n }\r\n if (\r\n e.key === 'Enter' &&\r\n (this.state.value !== '' ||\r\n this.state.preselectedSuggestion !== undefined) &&\r\n this.state.textErrors.length === 0\r\n ) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const existingTag =\r\n this.props.existingTags &&\r\n this.props.existingTags.find(et => et.name === this.state.value);\r\n if (this.state.preselectedSuggestion !== undefined) {\r\n this.props.onTagsChanged(\r\n this.props.tags.concat(suggestions[this.state.preselectedSuggestion])\r\n );\r\n this.setState({ value: '', preselectedSuggestion: undefined }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n } else if (existingTag) {\r\n this.props.onTagsChanged(this.props.tags.concat(existingTag));\r\n this.setState({ value: '' }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n } else if (this.props.allowNew) {\r\n await this.addNewTag();\r\n this.handleErrors();\r\n }\r\n }\r\n if (suggestions.length > 0 && this.state.suggestionsVisible) {\r\n if (e.key === 'ArrowUp') {\r\n const preselectedSuggestion =\r\n this.state.preselectedSuggestion === undefined\r\n ? suggestions.length - 1\r\n : this.state.preselectedSuggestion === 0\r\n ? suggestions.length - 1\r\n : this.state.preselectedSuggestion - 1;\r\n this.setState({ preselectedSuggestion });\r\n } else if (e.key === 'ArrowDown') {\r\n const preselectedSuggestion =\r\n this.state.preselectedSuggestion === undefined\r\n ? 0\r\n : this.state.preselectedSuggestion === suggestions.length - 1\r\n ? 0\r\n : this.state.preselectedSuggestion + 1;\r\n this.setState({ preselectedSuggestion });\r\n } else {\r\n this.setState({ preselectedSuggestion: undefined });\r\n }\r\n }\r\n };\r\n\r\n private addNewTag = async () => {\r\n const newTag = await this.props.onNewTagAdded(this.state.value);\r\n this.setState({\r\n suggestionsVisible: this.props.closeSuggestionsAfterCreate\r\n ? false\r\n : this.state.suggestionsVisible,\r\n });\r\n if (newTag) {\r\n this.props.onTagsChanged(\r\n this.props.tags ? this.props.tags.concat(newTag) : [newTag]\r\n );\r\n }\r\n this.setState({ value: '', textErrors: [] }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n };\r\n\r\n private onSuggestionSelected = (tag: T, lastSelected: boolean) => {\r\n const newTags = this.props.tags.concat(tag);\r\n this.props.onTagsChanged(newTags);\r\n const isMax = newTags.length === this.props.maxTags;\r\n const finalValue =\r\n !this.props.allowNew && !isMax && !lastSelected ? this.state.value : '';\r\n this.setState(\r\n {\r\n value: finalValue,\r\n suggestionsVisible:\r\n isMax || this.props.closeSuggestionsAfterCreate\r\n ? false\r\n : this.state.suggestionsVisible,\r\n preselectedSuggestion: undefined,\r\n textErrors: [],\r\n },\r\n () => {\r\n if (\r\n !this.props.maxTags ||\r\n this.props.tags.length + 1 < this.props.maxTags\r\n ) {\r\n this.fetchExistingTags(finalValue);\r\n }\r\n this.handleErrors();\r\n }\r\n );\r\n };\r\n\r\n private onBlur = () => {\r\n this.props.onBlur?.();\r\n this.setState(\r\n {\r\n textIsFocused: false,\r\n preselectedSuggestion: undefined,\r\n },\r\n () => this.handleErrors()\r\n );\r\n };\r\n\r\n private onTextChanged = (\r\n e: React.ChangeEvent<HTMLInputElement>,\r\n isValid: boolean\r\n ) => {\r\n const value = e.target.value;\r\n this.setState(\r\n () => ({\r\n value,\r\n isValid: isValid,\r\n textIsValid: isValid,\r\n suggestionsVisible: true,\r\n }),\r\n () => this.handleErrors()\r\n );\r\n this.fetchExistingTags(e.target.value);\r\n };\r\n\r\n private handleErrors = (tags: T[] = this.props.tags) => {\r\n let errors = this.getErrors(tags);\r\n if (errors.length > 0) {\r\n this.setInvalid(errors);\r\n } else {\r\n this.setValid();\r\n }\r\n };\r\n\r\n private getErrors(tags: T[]) {\r\n let errors = [];\r\n if (tags.length < this.props.maxTags) {\r\n errors = errors.concat(this.state.textErrors);\r\n }\r\n if (this.state.value !== '' && tags.length === 0 && this.props.required) {\r\n errors = errors.concat(\r\n this.getTranslations(this.props.translations).required\r\n );\r\n }\r\n if (this.state.value && this.props.allowNew && !this.state.textIsFocused) {\r\n errors = errors.concat(this.props.valueNotAddedError);\r\n }\r\n if (this.props.maxTags < (this.props.tags && this.props.tags.length)) {\r\n errors = errors.concat(this.props.maxTagsSurpassedError);\r\n }\r\n return errors.filter(i => i);\r\n }\r\n\r\n private fetchExistingTags(startsWith: string = '') {\r\n if (\r\n this.props.fetchExistingTags &&\r\n startsWith.length >= this.props.minLettersToFetch\r\n ) {\r\n const timer = setTimeout(\r\n () => this.setState(() => ({ fetchingExistingTags: true })),\r\n this.props.loadingDelayMs\r\n );\r\n this.props.fetchExistingTags(startsWith).then(fetchedExistingTags => {\r\n clearTimeout(timer);\r\n this.setState(() => ({\r\n fetchedExistingTags,\r\n fetchingExistingTags: false,\r\n }));\r\n });\r\n }\r\n }\r\n\r\n private getSuggestions() {\r\n const existingTags: T[] = []\r\n .concat(this.props.existingTags ? this.props.existingTags : [])\r\n .concat(\r\n this.state.fetchedExistingTags ? this.state.fetchedExistingTags : []\r\n );\r\n const filteredTags = this.props.filterExistingTags(\r\n this.state.value ? this.state.value.toLowerCase() : '',\r\n existingTags\r\n );\r\n let suggestions = filteredTags\r\n .filter(\r\n tag =>\r\n this.props.allowSameTagMultipleTimes ||\r\n !this.props.tags.some(t => t.id === tag.id)\r\n )\r\n .slice(0, this.props.maxSuggestions);\r\n return suggestions;\r\n }\r\n\r\n private renderTag(tag: T, index: number) {\r\n const body = (\r\n <>\r\n {tag.name}\r\n {!this.props.readOnly && (\r\n <Button\r\n {...(this.props.id && {\r\n id: this.props.id + '-tag-' + index.toString(),\r\n })}\r\n circular={true}\r\n blank={true}\r\n onClick={this.tagRemoveClick(tag)}\r\n className=\"ml-1 transform-rotate--45 line-height--0 p-0\"\r\n Component={TagButtonComponent}\r\n preventsDefault={false}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n )}\r\n </>\r\n );\r\n const className = classNames('tags-input__tag', {\r\n 'tags-input__tag-chip': this.props.showChips,\r\n });\r\n if (this.props.onTagClick) {\r\n return (\r\n <Button\r\n onClick={this.tagClick(tag)}\r\n small={true}\r\n className={className}\r\n key={index}\r\n >\r\n {body}\r\n </Button>\r\n );\r\n }\r\n return (\r\n <div onClick={this.tagClick(tag)} className={className} key={index}>\r\n {body}\r\n </div>\r\n );\r\n }\r\n\r\n private tagClick = (tag: T) => () => {\r\n this.props.onTagClick && this.props.onTagClick(tag);\r\n };\r\n\r\n private tagRemoveClick = (tag: T) => (e: React.MouseEvent<HTMLElement>) => {\r\n e.stopPropagation();\r\n const newTags = this.props.tags.filter(sv => sv.id !== tag.id);\r\n /*if (newTags.length === 0) {\r\n setTimeout(() => this.focus(), 50);\r\n }\r\n this.setState({\r\n suggestionsVisible: false,\r\n });*/\r\n this.props.onTagsChanged && this.props.onTagsChanged(newTags);\r\n this.handleErrors(newTags);\r\n // this.fetchExistingTags();\r\n };\r\n}\r\n\r\ninterface TagsFinal {\r\n <T extends Tag = Tag>(item: TagsProps<T>): React.ReactElement;\r\n defaultProps?: Partial<TagsProps>;\r\n}\r\n\r\nexport const Tags = (withThemeContext<TagsProps, InstanceType<typeof TagsRaw>>(\r\n // tslint:disable-next-line: no-any\r\n withFormContext<TagsProps>(TagsRaw),\r\n 'tags'\r\n) as unknown) as TagsFinal;\r\n\r\nexport default Tags;\r\n"],"file":"Tags.js"}
1
+ {"version":3,"file":"Tags.js","names":["PlusIcon","LeftArrowIcon","defaultTagsTranslations","defaultBaseTranslations","addNew","TagButtonComponent","p","className","id","onClick","children","TagsRaw","BaseInput","constructor","props","textErrors","setState","handleErrors","e","onFocus","state","suggestionsVisible","onSuggestionsOpened","textIsFocused","touched","fetchExistingTags","value","showMobileVersion","mobileVersionEnabled","isMobile","setTimeout","textRef","current","focus","suggestions","key","preselectedSuggestion","undefined","length","preventDefault","stopPropagation","existingTag","existingTags","find","et","name","onTagsChanged","tags","concat","allowNew","addNewTag","newTag","onNewTagAdded","closeSuggestionsAfterCreate","tag","lastSelected","newTags","isMax","maxTags","finalValue","onBlur","isValid","target","textIsValid","errors","getErrors","setInvalid","setValid","onTagClick","filter","sv","fetchingExistingTags","fetchedExistingTags","React","createRef","suggestionsRef","handleClickOutside","bind","handleLeaveMobileClick","require","componentDidUpdate","oldProps","validators","customValidators","required","containerRef","querySelector","contains","onSuggestionsClosed","addNewOnBlur","getSuggestions","existing","s","onSuggestionSelected","componentDidMount","document","addEventListener","componentWillUnmount","removeEventListener","render","translations","getTranslations","textProps","LeaveMobileButton","showInput","Boolean","readOnly","body","title","tooltip","classNames","getValidationClass","placeholder","map","item","index","renderTag","readonlyEmptyPlaceholder","onKeyDown","onTextErrorsChanged","onTextChanged","showSuggestions","tagsSuggestionsClassName","isLoading","suggestionsLoadingComponent","suggestionsEmptyComponent","waitingForMoreInputComponent","minLettersToFetch","SuggestionTag","popperProps","renderDefaultValidation","label","renderLabel","valueNotAddedError","maxTagsSurpassedError","i","startsWith","timer","loadingDelayMs","then","clearTimeout","filteredTags","filterExistingTags","toLowerCase","allowSameTagMultipleTimes","some","t","slice","maxSuggestions","toString","tagRemoveClick","showChips","tagClick","defaultProps","disabled","newTagName","Promise","resolve","Date","getTime","text","Tags","withThemeContext","withFormContext"],"sources":["../../../src/lib/components/tags/Tags.tsx"],"sourcesContent":["// Libs\r\nimport * as React from 'react';\r\nimport { InputGroup } from '../inputGroup/InputGroup';\r\nimport { Text, TextProps, TextRaw } from '../text/Text';\r\nimport * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_circle_outline_24px.svg';\r\nimport * as LeftArrowIcon from 'material-design-icons/navigation/svg/production/ic_arrow_back_24px.svg';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n ValidationError,\r\n defaultBaseTranslations,\r\n} from '../base/input/BaseInput';\r\nimport { Button, ButtonComponentProps } from '../button/Button';\r\nimport TagsSuggestions, {\r\n RenderSuggestionTagProps,\r\n} from './subComponents/TagsSuggestions';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport classNames from 'classnames';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport { PopperProps } from '@material-ui/core/Popper/Popper';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\nimport Portal from '@material-ui/core/Portal';\r\n\r\n// Misc\r\nexport type Tag = {\r\n id: number | string;\r\n name: string;\r\n};\r\n\r\nexport const defaultTagsTranslations = {\r\n ...defaultBaseTranslations,\r\n addNew: 'Add new',\r\n};\r\n\r\nexport type TagsTranslations = Partial<typeof defaultTagsTranslations>;\r\n\r\nexport type TagsProps<T extends Tag = Tag> = {\r\n className?: string;\r\n tagsSuggestionsClassName?: string;\r\n disabled?: boolean;\r\n tags: T[];\r\n existingTags?: T[];\r\n fetchExistingTags?: (text: string) => Promise<T[]>;\r\n onTagsChanged: (newTags: T[]) => void;\r\n onNewTagAdded?: (newTagName: string) => Promise<T>;\r\n onTagClick?: (tag: T) => void;\r\n showChips?: boolean;\r\n allowNew?: boolean;\r\n addNewOnBlur?: boolean;\r\n textProps?: TextProps;\r\n readOnly?: boolean;\r\n readonlyEmptyPlaceholder?: string;\r\n maxTags?: number;\r\n valueNotAddedError?: string | JSX.Element;\r\n maxTagsSurpassedError?: string | JSX.Element;\r\n showSuggestions?: boolean;\r\n suggestionsLoadingComponent?: string | JSX.Element;\r\n suggestionsEmptyComponent?: string | JSX.Element;\r\n waitingForMoreInputComponent?: string | JSX.Element;\r\n loadingDelayMs?: number;\r\n filterExistingTags?: (text: string, existingTags: T[]) => T[];\r\n allowSameTagMultipleTimes?: boolean;\r\n maxSuggestions?: number;\r\n popperProps?: Partial<PopperProps>;\r\n minLettersToFetch?: number;\r\n mobileVersionEnabled?: boolean;\r\n isLoading?: boolean;\r\n closeSuggestionsAfterCreate?: boolean;\r\n SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<T>>;\r\n} & BaseInputProps<HTMLInputElement, TagsTranslations>;\r\n\r\nexport interface TagsState<T extends Tag = Tag> extends BaseInputState {\r\n textIsFocused: boolean;\r\n textErrors: ValidationError[];\r\n textIsValid: boolean;\r\n suggestionsVisible: boolean;\r\n fetchedExistingTags: T[];\r\n fetchingExistingTags: boolean;\r\n preselectedSuggestion?: number;\r\n}\r\n\r\ntype InjectedProps = {};\r\n\r\nconst TagButtonComponent: React.FC<ButtonComponentProps> = p => (\r\n <a className={p.className} id={p.id} onClick={p.onClick}>\r\n {p.children}\r\n </a>\r\n);\r\n\r\nexport class TagsRaw<T extends Tag = Tag> extends BaseInput<\r\n TagsProps<T> & InjectedProps,\r\n TagsState<T>,\r\n HTMLInputElement,\r\n TagsTranslations\r\n> {\r\n public static defaultProps: TagsProps = {\r\n ...BaseInput.defaultProps,\r\n disabled: false,\r\n className: '',\r\n tags: [],\r\n existingTags: [],\r\n maxTags: 1000,\r\n onTagsChanged: () => undefined,\r\n onNewTagAdded: newTagName =>\r\n Promise.resolve({ name: newTagName, id: new Date().getTime() }),\r\n valueNotAddedError: <span>You forgot to add tag</span>,\r\n maxTagsSurpassedError: <span>Maximum number of tags surpassed</span>,\r\n waitingForMoreInputComponent: <span>Waiting for more input...</span>,\r\n showSuggestions: true,\r\n suggestionsLoadingComponent: (\r\n <LinearProgress className=\"tags-input__suggestions__defaultLoading\" />\r\n ),\r\n suggestionsEmptyComponent: 'No existing tags...',\r\n loadingDelayMs: 500,\r\n filterExistingTags: (text, tags) =>\r\n tags.filter(tag => tag.name && tag.name.toLowerCase().startsWith(text)),\r\n maxSuggestions: 5,\r\n addNewOnBlur: false,\r\n translations: defaultTagsTranslations,\r\n minLettersToFetch: 0,\r\n mobileVersionEnabled: true,\r\n closeSuggestionsAfterCreate: false,\r\n };\r\n\r\n private textRef: React.RefObject<TextRaw>;\r\n private suggestionsRef: React.RefObject<HTMLDivElement>;\r\n private isMobile: boolean = false;\r\n\r\n constructor(props: TagsProps<T> & InjectedProps) {\r\n super(props);\r\n this.state = {\r\n ...this.state,\r\n textErrors: [],\r\n textIsFocused: false,\r\n suggestionsVisible: false,\r\n fetchingExistingTags: false,\r\n textIsValid: false,\r\n fetchedExistingTags: [],\r\n };\r\n this.textRef = React.createRef();\r\n this.suggestionsRef = React.createRef();\r\n this.handleClickOutside = this.handleClickOutside.bind(this);\r\n this.handleLeaveMobileClick = this.handleLeaveMobileClick.bind(this);\r\n if (props.mobileVersionEnabled) {\r\n this.isMobile = require('react-device-detect')?.isMobile;\r\n }\r\n }\r\n\r\n public focus() {\r\n if (this.textRef.current) {\r\n this.textRef.current.focus();\r\n }\r\n }\r\n\r\n public componentDidUpdate(oldProps: TagsProps & InjectedProps) {\r\n if (\r\n oldProps.tags !== this.props.tags ||\r\n oldProps.validators !== this.props.validators ||\r\n oldProps.customValidators !== this.props.customValidators ||\r\n oldProps.required !== this.props.required\r\n ) {\r\n this.handleErrors(this.props.tags);\r\n }\r\n }\r\n\r\n public handleLeaveMobileClick() {\r\n this.setState({\r\n textIsFocused: false,\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n }\r\n\r\n public handleClickOutside(e: MouseEvent) {\r\n if (\r\n !this.containerRef.current ||\r\n this.containerRef.current\r\n .querySelector('.tags-input__tag__wrapper')\r\n ?.contains(e.target as HTMLDivElement) ||\r\n this.containerRef.current\r\n .querySelector('.tags-input__text-input')\r\n ?.contains(e.target as HTMLDivElement) ||\r\n !this.suggestionsRef.current ||\r\n this.suggestionsRef.current.contains(e.target as HTMLDivElement)\r\n ) {\r\n return;\r\n }\r\n if (this.state.suggestionsVisible) {\r\n this.props.onSuggestionsClosed?.();\r\n }\r\n this.setState({\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n if (this.props.addNewOnBlur && this.state.value) {\r\n const suggestions = this.getSuggestions();\r\n const existing = suggestions.find(s => s.name === this.state.value);\r\n if (existing) {\r\n this.onSuggestionSelected(existing, suggestions.length === 1);\r\n } else if (this.props.allowNew) {\r\n this.addNewTag();\r\n }\r\n } /* else if (this.state.value) {\r\n this.setState({ value: '' });\r\n }*/\r\n }\r\n\r\n public componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside);\r\n document.addEventListener('touchstart', this.handleClickOutside);\r\n this.handleErrors(this.props.tags);\r\n }\r\n\r\n public componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside);\r\n document.removeEventListener('touchstart', this.handleClickOutside);\r\n super.componentWillUnmount();\r\n }\r\n\r\n public render() {\r\n const translations = this.getTranslations(defaultTagsTranslations);\r\n const textProps = this.props.textProps ? this.props.textProps : {};\r\n const suggestions = this.getSuggestions();\r\n const showMobileVersion =\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile &&\r\n (this.state.textIsFocused || this.state.suggestionsVisible);\r\n const LeaveMobileButton = showMobileVersion ? (\r\n <Button\r\n className=\"tags-input__leaveMobileTagsButton line-height--0\"\r\n onClick={this.handleLeaveMobileClick}\r\n noShadow={true}\r\n unobtrusive={true}\r\n >\r\n <LeftArrowIcon />\r\n </Button>\r\n ) : (\r\n undefined\r\n );\r\n const showInput = Boolean(\r\n (!this.props.maxTags ||\r\n this.props.maxTags > (this.props.tags && this.props.tags.length)) &&\r\n !this.props.readOnly\r\n );\r\n return (\r\n <Portal container={document.body} disablePortal={!showMobileVersion}>\r\n <InputGroup title={this.props.title} tooltip={this.props.tooltip}>\r\n <div\r\n {...(this.props.id && {\r\n id: this.props.id,\r\n })}\r\n className={classNames(\r\n 'input__base tags-input',\r\n this.getValidationClass(),\r\n this.props.className,\r\n {\r\n 'tags-input--readOnly': this.props.readOnly,\r\n 'tags-input--hasPlaceholder':\r\n this.props.textProps && this.props.textProps.placeholder,\r\n 'tags-input--mobile': showMobileVersion,\r\n }\r\n )}\r\n ref={this.containerRef}\r\n >\r\n {showMobileVersion && (\r\n <div className=\"tags-input__mobileBackdrop\" />\r\n )}\r\n <div className=\"tags-input__tags__wrapper\">\r\n {!showInput && showMobileVersion && LeaveMobileButton}\r\n {this.props.tags && this.props.tags.length > 0 ? (\r\n <div className=\"tags-input__tag__wrapper\">\r\n {this.props.tags.map((item, index) =>\r\n this.renderTag(item, index)\r\n )}\r\n </div>\r\n ) : (\r\n this.props.readOnly && (\r\n <div className=\"tags-input__tag__wrapper\">\r\n <div className=\"tags-input__tag\">\r\n {this.props.readonlyEmptyPlaceholder}\r\n </div>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n {showInput && (\r\n <div\r\n className={\r\n 'tags-input__tags__wrapper ' +\r\n (this.props.readOnly ? 'filled ' : '')\r\n }\r\n >\r\n <Text\r\n showClearButton={true}\r\n {...textProps}\r\n {...(this.props.id && {\r\n id: this.props.id + '-text-input',\r\n })}\r\n ref={this.textRef}\r\n required={\r\n this.props.tags.length > 0 ? false : this.props.required\r\n }\r\n className={\r\n 'tags-input__text-input ' +\r\n (textProps.className ? textProps.className : '')\r\n }\r\n onKeyDown={this.onKeyDown(suggestions)}\r\n onErrorsChanged={this.onTextErrorsChanged}\r\n onChange={this.onTextChanged}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n value={this.state.value}\r\n readOnly={this.props.readOnly}\r\n showValidation={false}\r\n ignoreContext={true}\r\n validators={this.props.validators}\r\n customValidators={this.props.customValidators}\r\n before={LeaveMobileButton}\r\n />\r\n {this.state.suggestionsVisible && this.props.showSuggestions && (\r\n <TagsSuggestions<T>\r\n {...(this.props.id && {\r\n id: this.props.id + '-text-input',\r\n })}\r\n className={classNames(this.props.tagsSuggestionsClassName)}\r\n innerRef={this.suggestionsRef}\r\n anchorEl={this.containerRef.current}\r\n allowNew={this.props.allowNew}\r\n preselectedSuggestion={this.state.preselectedSuggestion}\r\n loading={\r\n this.state.fetchingExistingTags || this.props.isLoading\r\n }\r\n LoadingComponent={this.props.suggestionsLoadingComponent}\r\n isVisible={this.state.suggestionsVisible}\r\n EmptyComponent={this.props.suggestionsEmptyComponent}\r\n WaitingForMoreInputComponent={\r\n this.props.waitingForMoreInputComponent\r\n }\r\n isWaitingForMoreInput={\r\n this.state.value.length < this.props.minLettersToFetch\r\n }\r\n tags={suggestions}\r\n onSelected={this.onSuggestionSelected}\r\n value={this.state.value}\r\n AddNewTagComponent={\r\n this.props.allowNew &&\r\n this.state.value !== '' &&\r\n (!this.props.existingTags ||\r\n !this.props.existingTags.find(\r\n e => e.name === this.state.value\r\n )) &&\r\n (!this.state.fetchedExistingTags ||\r\n !this.state.fetchedExistingTags.find(\r\n e => e.name === this.state.value\r\n )) &&\r\n this.state.textIsValid && (\r\n <Button\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-new-button',\r\n })}\r\n className=\"tags-input__suggestion tags-input__add-new\"\r\n dropdown={true}\r\n onClick={this.addNewTag}\r\n >\r\n {translations.addNew} \"{this.state.value}\"\r\n </Button>\r\n )\r\n }\r\n SuggestionTag={this.props.SuggestionTag}\r\n popperProps={this.props.popperProps}\r\n />\r\n )}\r\n </div>\r\n )}\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label\r\n className={\r\n this.state.value !== '' ||\r\n this.state.textIsFocused ||\r\n this.props.readOnly ||\r\n this.props.tags.length >= this.props.maxTags ||\r\n showMobileVersion\r\n ? 'label--focused'\r\n : ''\r\n }\r\n >\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n </Portal>\r\n );\r\n }\r\n\r\n private onTextErrorsChanged = (textErrors: ValidationError[]) =>\r\n this.setState(\r\n () => ({ textErrors }),\r\n () => this.handleErrors()\r\n );\r\n\r\n private onFocus = (e: React.SyntheticEvent<{}>) => {\r\n this.props.onFocus?.(e);\r\n if (!this.state.suggestionsVisible) {\r\n this.props.onSuggestionsOpened?.();\r\n }\r\n this.setState(\r\n () => ({ textIsFocused: true, suggestionsVisible: true, touched: true }),\r\n () => this.handleErrors()\r\n );\r\n this.fetchExistingTags(this.state.value);\r\n const showMobileVersion =\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile &&\r\n (this.state.textIsFocused || this.state.suggestionsVisible);\r\n if (\r\n !showMobileVersion &&\r\n this.props.mobileVersionEnabled &&\r\n this.isMobile\r\n ) {\r\n setTimeout(() => this.textRef.current?.focus(), 100);\r\n }\r\n };\r\n\r\n private onKeyDown = (suggestions: T[]) => async (e: React.KeyboardEvent) => {\r\n if (e.key === 'Tab') {\r\n this.setState({\r\n suggestionsVisible: false,\r\n preselectedSuggestion: undefined,\r\n });\r\n }\r\n if (\r\n e.key === 'Enter' &&\r\n (this.state.value !== '' ||\r\n this.state.preselectedSuggestion !== undefined) &&\r\n this.state.textErrors.length === 0\r\n ) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const existingTag =\r\n this.props.existingTags &&\r\n this.props.existingTags.find(et => et.name === this.state.value);\r\n if (this.state.preselectedSuggestion !== undefined) {\r\n this.props.onTagsChanged(\r\n this.props.tags.concat(suggestions[this.state.preselectedSuggestion])\r\n );\r\n this.setState({ value: '', preselectedSuggestion: undefined }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n } else if (existingTag) {\r\n this.props.onTagsChanged(this.props.tags.concat(existingTag));\r\n this.setState({ value: '' }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n } else if (this.props.allowNew) {\r\n await this.addNewTag();\r\n this.handleErrors();\r\n }\r\n }\r\n if (suggestions.length > 0 && this.state.suggestionsVisible) {\r\n if (e.key === 'ArrowUp') {\r\n const preselectedSuggestion =\r\n this.state.preselectedSuggestion === undefined\r\n ? suggestions.length - 1\r\n : this.state.preselectedSuggestion === 0\r\n ? suggestions.length - 1\r\n : this.state.preselectedSuggestion - 1;\r\n this.setState({ preselectedSuggestion });\r\n } else if (e.key === 'ArrowDown') {\r\n const preselectedSuggestion =\r\n this.state.preselectedSuggestion === undefined\r\n ? 0\r\n : this.state.preselectedSuggestion === suggestions.length - 1\r\n ? 0\r\n : this.state.preselectedSuggestion + 1;\r\n this.setState({ preselectedSuggestion });\r\n } else {\r\n this.setState({ preselectedSuggestion: undefined });\r\n }\r\n }\r\n };\r\n\r\n private addNewTag = async () => {\r\n const newTag = await this.props.onNewTagAdded(this.state.value);\r\n this.setState({\r\n suggestionsVisible: this.props.closeSuggestionsAfterCreate\r\n ? false\r\n : this.state.suggestionsVisible,\r\n });\r\n if (newTag) {\r\n this.props.onTagsChanged(\r\n this.props.tags ? this.props.tags.concat(newTag) : [newTag]\r\n );\r\n }\r\n this.setState({ value: '', textErrors: [] }, () => {\r\n this.fetchExistingTags();\r\n this.handleErrors();\r\n });\r\n };\r\n\r\n private onSuggestionSelected = (tag: T, lastSelected: boolean) => {\r\n const newTags = this.props.tags.concat(tag);\r\n this.props.onTagsChanged(newTags);\r\n const isMax = newTags.length === this.props.maxTags;\r\n const finalValue =\r\n !this.props.allowNew && !isMax && !lastSelected ? this.state.value : '';\r\n this.setState(\r\n {\r\n value: finalValue,\r\n suggestionsVisible:\r\n isMax || this.props.closeSuggestionsAfterCreate\r\n ? false\r\n : this.state.suggestionsVisible,\r\n preselectedSuggestion: undefined,\r\n textErrors: [],\r\n },\r\n () => {\r\n if (\r\n !this.props.maxTags ||\r\n this.props.tags.length + 1 < this.props.maxTags\r\n ) {\r\n this.fetchExistingTags(finalValue);\r\n }\r\n this.handleErrors();\r\n }\r\n );\r\n };\r\n\r\n private onBlur = () => {\r\n this.props.onBlur?.();\r\n this.setState(\r\n {\r\n textIsFocused: false,\r\n preselectedSuggestion: undefined,\r\n },\r\n () => this.handleErrors()\r\n );\r\n };\r\n\r\n private onTextChanged = (\r\n e: React.ChangeEvent<HTMLInputElement>,\r\n isValid: boolean\r\n ) => {\r\n const value = e.target.value;\r\n this.setState(\r\n () => ({\r\n value,\r\n isValid: isValid,\r\n textIsValid: isValid,\r\n suggestionsVisible: true,\r\n }),\r\n () => this.handleErrors()\r\n );\r\n this.fetchExistingTags(e.target.value);\r\n };\r\n\r\n private handleErrors = (tags: T[] = this.props.tags) => {\r\n let errors = this.getErrors(tags);\r\n if (errors.length > 0) {\r\n this.setInvalid(errors);\r\n } else {\r\n this.setValid();\r\n }\r\n };\r\n\r\n private getErrors(tags: T[]) {\r\n let errors = [];\r\n if (tags.length < this.props.maxTags) {\r\n errors = errors.concat(this.state.textErrors);\r\n }\r\n if (this.state.value !== '' && tags.length === 0 && this.props.required) {\r\n errors = errors.concat(\r\n this.getTranslations(this.props.translations).required\r\n );\r\n }\r\n if (this.state.value && this.props.allowNew && !this.state.textIsFocused) {\r\n errors = errors.concat(this.props.valueNotAddedError);\r\n }\r\n if (this.props.maxTags < (this.props.tags && this.props.tags.length)) {\r\n errors = errors.concat(this.props.maxTagsSurpassedError);\r\n }\r\n return errors.filter(i => i);\r\n }\r\n\r\n private fetchExistingTags(startsWith: string = '') {\r\n if (\r\n this.props.fetchExistingTags &&\r\n startsWith.length >= this.props.minLettersToFetch\r\n ) {\r\n const timer = setTimeout(\r\n () => this.setState(() => ({ fetchingExistingTags: true })),\r\n this.props.loadingDelayMs\r\n );\r\n this.props.fetchExistingTags(startsWith).then(fetchedExistingTags => {\r\n clearTimeout(timer);\r\n this.setState(() => ({\r\n fetchedExistingTags,\r\n fetchingExistingTags: false,\r\n }));\r\n });\r\n }\r\n }\r\n\r\n private getSuggestions() {\r\n const existingTags: T[] = []\r\n .concat(this.props.existingTags ? this.props.existingTags : [])\r\n .concat(\r\n this.state.fetchedExistingTags ? this.state.fetchedExistingTags : []\r\n );\r\n const filteredTags = this.props.filterExistingTags(\r\n this.state.value ? this.state.value.toLowerCase() : '',\r\n existingTags\r\n );\r\n let suggestions = filteredTags\r\n .filter(\r\n tag =>\r\n this.props.allowSameTagMultipleTimes ||\r\n !this.props.tags.some(t => t.id === tag.id)\r\n )\r\n .slice(0, this.props.maxSuggestions);\r\n return suggestions;\r\n }\r\n\r\n private renderTag(tag: T, index: number) {\r\n const body = (\r\n <>\r\n {tag.name}\r\n {!this.props.readOnly && (\r\n <Button\r\n {...(this.props.id && {\r\n id: this.props.id + '-tag-' + index.toString(),\r\n })}\r\n circular={true}\r\n blank={true}\r\n onClick={this.tagRemoveClick(tag)}\r\n className=\"ml-1 transform-rotate--45 line-height--0 p-0\"\r\n Component={TagButtonComponent}\r\n preventsDefault={false}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n )}\r\n </>\r\n );\r\n const className = classNames('tags-input__tag', {\r\n 'tags-input__tag-chip': this.props.showChips,\r\n });\r\n if (this.props.onTagClick) {\r\n return (\r\n <Button\r\n onClick={this.tagClick(tag)}\r\n small={true}\r\n className={className}\r\n key={index}\r\n >\r\n {body}\r\n </Button>\r\n );\r\n }\r\n return (\r\n <div onClick={this.tagClick(tag)} className={className} key={index}>\r\n {body}\r\n </div>\r\n );\r\n }\r\n\r\n private tagClick = (tag: T) => () => {\r\n this.props.onTagClick && this.props.onTagClick(tag);\r\n };\r\n\r\n private tagRemoveClick = (tag: T) => (e: React.MouseEvent<HTMLElement>) => {\r\n e.stopPropagation();\r\n const newTags = this.props.tags.filter(sv => sv.id !== tag.id);\r\n /*if (newTags.length === 0) {\r\n setTimeout(() => this.focus(), 50);\r\n }\r\n this.setState({\r\n suggestionsVisible: false,\r\n });*/\r\n this.props.onTagsChanged && this.props.onTagsChanged(newTags);\r\n this.handleErrors(newTags);\r\n // this.fetchExistingTags();\r\n };\r\n}\r\n\r\ninterface TagsFinal {\r\n <T extends Tag = Tag>(item: TagsProps<T>): React.ReactElement;\r\n defaultProps?: Partial<TagsProps>;\r\n}\r\n\r\nexport const Tags = (withThemeContext<TagsProps, InstanceType<typeof TagsRaw>>(\r\n // tslint:disable-next-line: no-any\r\n withFormContext<TagsProps>(TagsRaw),\r\n 'tags'\r\n) as unknown) as TagsFinal;\r\n\r\nexport default Tags;\r\n"],"mappings":"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"}
@@ -1,14 +1,12 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  var _exportNames = {};
9
7
  Object.defineProperty(exports, "default", {
10
8
  enumerable: true,
11
- get: function get() {
9
+ get: function () {
12
10
  return _Tags.default;
13
11
  }
14
12
  });
@@ -21,13 +19,13 @@ Object.keys(_Tags).forEach(function (key) {
21
19
  if (key in exports && exports[key] === _Tags[key]) return;
22
20
  Object.defineProperty(exports, key, {
23
21
  enumerable: true,
24
- get: function get() {
22
+ get: function () {
25
23
  return _Tags[key];
26
24
  }
27
25
  });
28
26
  });
29
27
 
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
29
 
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
30
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/components/tags/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './Tags';\r\nexport { default } from './Tags';\r\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/lib/components/tags/index.tsx"],"sourcesContent":["export * from './Tags';\r\nexport { default } from './Tags';\r\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -17,24 +15,26 @@ var _classnames = _interopRequireDefault(require("classnames"));
17
15
 
18
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
17
 
20
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
19
 
22
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
21
 
24
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
22
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
25
23
 
26
- var popperModifiers = {
24
+ const popperModifiers = {
27
25
  flip: {
28
26
  enabled: false
29
27
  }
30
28
  };
31
29
 
32
30
  function DefaultSuggestionTag(_ref) {
33
- var index = _ref.index,
34
- tag = _ref.tag,
35
- id = _ref.id,
36
- onClick = _ref.onClick,
37
- isPreselected = _ref.isPreselected;
31
+ let {
32
+ index,
33
+ tag,
34
+ id,
35
+ onClick,
36
+ isPreselected
37
+ } = _ref;
38
38
  return /*#__PURE__*/React.createElement("li", {
39
39
  key: index
40
40
  }, /*#__PURE__*/React.createElement(_.Button, _extends({}, id && {
@@ -49,13 +49,13 @@ function DefaultSuggestionTag(_ref) {
49
49
  function Suggestions(props) {
50
50
  var _props$anchorEl2;
51
51
 
52
- var onSelected = props.onSelected;
53
- var onSelectedFactory = React.useCallback(function (tag, lastSelected) {
54
- return function (e) {
55
- onSelected(tag, lastSelected);
56
- };
52
+ const {
53
+ onSelected
54
+ } = props;
55
+ const onSelectedFactory = React.useCallback((tag, lastSelected) => e => {
56
+ onSelected(tag, lastSelected);
57
57
  }, [onSelected]);
58
- var popperStyle = React.useMemo(function () {
58
+ const popperStyle = React.useMemo(() => {
59
59
  var _props$anchorEl;
60
60
 
61
61
  return {
@@ -63,8 +63,9 @@ function Suggestions(props) {
63
63
  zIndex: 10000
64
64
  };
65
65
  }, [(_props$anchorEl2 = props.anchorEl) === null || _props$anchorEl2 === void 0 ? void 0 : _props$anchorEl2.scrollWidth]);
66
- var _props$SuggestionTag = props.SuggestionTag,
67
- SuggestionTag = _props$SuggestionTag === void 0 ? DefaultSuggestionTag : _props$SuggestionTag;
66
+ const {
67
+ SuggestionTag = DefaultSuggestionTag
68
+ } = props;
68
69
  return props.anchorEl && /*#__PURE__*/React.createElement(_Popper.default, _extends({
69
70
  open: props.isVisible,
70
71
  anchorEl: props.anchorEl,
@@ -80,21 +81,19 @@ function Suggestions(props) {
80
81
  ref: props.innerRef
81
82
  }), /*#__PURE__*/React.createElement("ul", null, props.AddNewTagComponent, props.loading && props.LoadingComponent, props.isWaitingForMoreInput && props.WaitingForMoreInputComponent && /*#__PURE__*/React.createElement("li", {
82
83
  className: "w-100 text-center p-2"
83
- }, props.WaitingForMoreInputComponent), !props.isWaitingForMoreInput && props.tags.map(function (tag, index) {
84
- return /*#__PURE__*/React.createElement(SuggestionTag, {
85
- key: tag.id,
86
- index: index,
87
- tag: tag,
88
- onClick: onSelectedFactory(tag, props.tags.length === 1),
89
- id: props.id,
90
- isPreselected: props.preselectedSuggestion !== undefined && props.preselectedSuggestion === index
91
- });
92
- }), props.EmptyComponent && props.tags.length === 0 && !props.allowNew && !props.isWaitingForMoreInput && /*#__PURE__*/React.createElement("li", {
84
+ }, props.WaitingForMoreInputComponent), !props.isWaitingForMoreInput && props.tags.map((tag, index) => /*#__PURE__*/React.createElement(SuggestionTag, {
85
+ key: tag.id,
86
+ index: index,
87
+ tag: tag,
88
+ onClick: onSelectedFactory(tag, props.tags.length === 1),
89
+ id: props.id,
90
+ isPreselected: props.preselectedSuggestion !== undefined && props.preselectedSuggestion === index
91
+ })), props.EmptyComponent && props.tags.length === 0 && !props.allowNew && !props.isWaitingForMoreInput && /*#__PURE__*/React.createElement("li", {
93
92
  className: "w-100 text-center p-2"
94
93
  }, props.EmptyComponent))));
95
94
  }
96
95
 
97
- var SuggestionsWrapped = Suggestions;
96
+ const SuggestionsWrapped = Suggestions;
98
97
  var _default = SuggestionsWrapped;
99
98
  exports.default = _default;
100
99
  //# sourceMappingURL=TagsSuggestions.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/components/tags/subComponents/TagsSuggestions.tsx"],"names":["popperModifiers","flip","enabled","DefaultSuggestionTag","index","tag","id","onClick","isPreselected","toString","name","Suggestions","props","onSelected","onSelectedFactory","React","useCallback","lastSelected","e","popperStyle","useMemo","width","anchorEl","scrollWidth","zIndex","SuggestionTag","isVisible","popperProps","className","loading","innerRef","AddNewTagComponent","LoadingComponent","isWaitingForMoreInput","WaitingForMoreInputComponent","tags","map","length","preselectedSuggestion","undefined","EmptyComponent","allowNew","SuggestionsWrapped"],"mappings":"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","sourcesContent":["import * as React from 'react';\r\nimport { Tag } from '..';\r\nimport { Button } from '../../..';\r\nimport Popper, { PopperProps } from '@material-ui/core/Popper';\r\nimport classNames from 'classnames';\r\n\r\nexport type RenderSuggestionTagProps<T extends Tag = Tag> = {\r\n tag: T;\r\n index: number;\r\n id?: string;\r\n onClick: (e: React.MouseEvent<HTMLElement>) => void;\r\n isPreselected: boolean;\r\n};\r\n\r\nexport type SuggestionsProps<T extends Tag = Tag> = {\r\n className?: string;\r\n innerRef: React.RefObject<HTMLDivElement>;\r\n anchorEl: HTMLElement;\r\n id?: string;\r\n preselectedSuggestion?: number;\r\n isVisible: boolean;\r\n isWaitingForMoreInput: boolean;\r\n tags: T[];\r\n onSelected: (tag: T, lastSelected: boolean) => void;\r\n value: string;\r\n loading: boolean;\r\n LoadingComponent?: string | JSX.Element;\r\n EmptyComponent?: string | JSX.Element;\r\n AddNewTagComponent?: JSX.Element;\r\n WaitingForMoreInputComponent?: string | JSX.Element;\r\n allowNew: boolean;\r\n popperProps?: Partial<PopperProps>;\r\n SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<T>>;\r\n};\r\n\r\ntype InjectedProps = {};\r\n\r\nconst popperModifiers = { flip: { enabled: false } };\r\n\r\nfunction DefaultSuggestionTag<T extends Tag = Tag>({\r\n index,\r\n tag,\r\n id,\r\n onClick,\r\n isPreselected,\r\n}: RenderSuggestionTagProps<T>) {\r\n return (\r\n <li key={index}>\r\n <Button\r\n {...(id && {\r\n id: id + '-suggestion-' + index.toString(),\r\n })}\r\n className={\r\n 'w-100 tags-input__suggestion ' +\r\n (isPreselected ? 'tags-input__suggestion--preselected' : '')\r\n }\r\n onClick={onClick}\r\n dropdown={true}\r\n >\r\n {tag.name}\r\n </Button>\r\n </li>\r\n );\r\n}\r\n\r\nfunction Suggestions<T extends Tag = Tag>(\r\n props: SuggestionsProps<T> & InjectedProps\r\n) {\r\n const { onSelected } = props;\r\n const onSelectedFactory = React.useCallback(\r\n (tag: T, lastSelected: boolean) => (e: React.MouseEvent) => {\r\n onSelected(tag, lastSelected);\r\n },\r\n [onSelected]\r\n );\r\n const popperStyle = React.useMemo(\r\n () => ({ width: props.anchorEl?.scrollWidth, zIndex: 10000 }),\r\n [props.anchorEl?.scrollWidth]\r\n );\r\n\r\n const { SuggestionTag = DefaultSuggestionTag } = props;\r\n return (\r\n props.anchorEl && (\r\n <Popper\r\n open={props.isVisible}\r\n anchorEl={props.anchorEl}\r\n style={popperStyle}\r\n placement=\"bottom-start\"\r\n modifiers={popperModifiers}\r\n {...props.popperProps}\r\n >\r\n <div\r\n {...(props.id && {\r\n id: props.id,\r\n })}\r\n className={classNames('tags-input__suggestions', props.className, {\r\n 'tags-input__suggestions--loading': props.loading,\r\n })}\r\n ref={props.innerRef}\r\n >\r\n <ul>\r\n {props.AddNewTagComponent}\r\n {props.loading && props.LoadingComponent}\r\n {props.isWaitingForMoreInput &&\r\n props.WaitingForMoreInputComponent && (\r\n <li className=\"w-100 text-center p-2\">\r\n {props.WaitingForMoreInputComponent}\r\n </li>\r\n )}\r\n {!props.isWaitingForMoreInput &&\r\n props.tags.map((tag, index) => (\r\n <SuggestionTag\r\n key={tag.id}\r\n index={index}\r\n tag={tag}\r\n onClick={onSelectedFactory(tag, props.tags.length === 1)}\r\n id={props.id}\r\n isPreselected={\r\n props.preselectedSuggestion !== undefined &&\r\n props.preselectedSuggestion === index\r\n }\r\n />\r\n ))}\r\n {props.EmptyComponent &&\r\n props.tags.length === 0 &&\r\n !props.allowNew &&\r\n !props.isWaitingForMoreInput && (\r\n <li className=\"w-100 text-center p-2\">\r\n {props.EmptyComponent}\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n </Popper>\r\n )\r\n );\r\n}\r\n\r\nconst SuggestionsWrapped = Suggestions;\r\n\r\nexport default SuggestionsWrapped;\r\n"],"file":"TagsSuggestions.js"}
1
+ {"version":3,"file":"TagsSuggestions.js","names":["popperModifiers","flip","enabled","DefaultSuggestionTag","index","tag","id","onClick","isPreselected","toString","name","Suggestions","props","onSelected","onSelectedFactory","React","useCallback","lastSelected","e","popperStyle","useMemo","width","anchorEl","scrollWidth","zIndex","SuggestionTag","isVisible","popperProps","classNames","className","loading","innerRef","AddNewTagComponent","LoadingComponent","isWaitingForMoreInput","WaitingForMoreInputComponent","tags","map","length","preselectedSuggestion","undefined","EmptyComponent","allowNew","SuggestionsWrapped"],"sources":["../../../../src/lib/components/tags/subComponents/TagsSuggestions.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { Tag } from '..';\r\nimport { Button } from '../../..';\r\nimport Popper, { PopperProps } from '@material-ui/core/Popper';\r\nimport classNames from 'classnames';\r\n\r\nexport type RenderSuggestionTagProps<T extends Tag = Tag> = {\r\n tag: T;\r\n index: number;\r\n id?: string;\r\n onClick: (e: React.MouseEvent<HTMLElement>) => void;\r\n isPreselected: boolean;\r\n};\r\n\r\nexport type SuggestionsProps<T extends Tag = Tag> = {\r\n className?: string;\r\n innerRef: React.RefObject<HTMLDivElement>;\r\n anchorEl: HTMLElement;\r\n id?: string;\r\n preselectedSuggestion?: number;\r\n isVisible: boolean;\r\n isWaitingForMoreInput: boolean;\r\n tags: T[];\r\n onSelected: (tag: T, lastSelected: boolean) => void;\r\n value: string;\r\n loading: boolean;\r\n LoadingComponent?: string | JSX.Element;\r\n EmptyComponent?: string | JSX.Element;\r\n AddNewTagComponent?: JSX.Element;\r\n WaitingForMoreInputComponent?: string | JSX.Element;\r\n allowNew: boolean;\r\n popperProps?: Partial<PopperProps>;\r\n SuggestionTag?: React.ComponentType<RenderSuggestionTagProps<T>>;\r\n};\r\n\r\ntype InjectedProps = {};\r\n\r\nconst popperModifiers = { flip: { enabled: false } };\r\n\r\nfunction DefaultSuggestionTag<T extends Tag = Tag>({\r\n index,\r\n tag,\r\n id,\r\n onClick,\r\n isPreselected,\r\n}: RenderSuggestionTagProps<T>) {\r\n return (\r\n <li key={index}>\r\n <Button\r\n {...(id && {\r\n id: id + '-suggestion-' + index.toString(),\r\n })}\r\n className={\r\n 'w-100 tags-input__suggestion ' +\r\n (isPreselected ? 'tags-input__suggestion--preselected' : '')\r\n }\r\n onClick={onClick}\r\n dropdown={true}\r\n >\r\n {tag.name}\r\n </Button>\r\n </li>\r\n );\r\n}\r\n\r\nfunction Suggestions<T extends Tag = Tag>(\r\n props: SuggestionsProps<T> & InjectedProps\r\n) {\r\n const { onSelected } = props;\r\n const onSelectedFactory = React.useCallback(\r\n (tag: T, lastSelected: boolean) => (e: React.MouseEvent) => {\r\n onSelected(tag, lastSelected);\r\n },\r\n [onSelected]\r\n );\r\n const popperStyle = React.useMemo(\r\n () => ({ width: props.anchorEl?.scrollWidth, zIndex: 10000 }),\r\n [props.anchorEl?.scrollWidth]\r\n );\r\n\r\n const { SuggestionTag = DefaultSuggestionTag } = props;\r\n return (\r\n props.anchorEl && (\r\n <Popper\r\n open={props.isVisible}\r\n anchorEl={props.anchorEl}\r\n style={popperStyle}\r\n placement=\"bottom-start\"\r\n modifiers={popperModifiers}\r\n {...props.popperProps}\r\n >\r\n <div\r\n {...(props.id && {\r\n id: props.id,\r\n })}\r\n className={classNames('tags-input__suggestions', props.className, {\r\n 'tags-input__suggestions--loading': props.loading,\r\n })}\r\n ref={props.innerRef}\r\n >\r\n <ul>\r\n {props.AddNewTagComponent}\r\n {props.loading && props.LoadingComponent}\r\n {props.isWaitingForMoreInput &&\r\n props.WaitingForMoreInputComponent && (\r\n <li className=\"w-100 text-center p-2\">\r\n {props.WaitingForMoreInputComponent}\r\n </li>\r\n )}\r\n {!props.isWaitingForMoreInput &&\r\n props.tags.map((tag, index) => (\r\n <SuggestionTag\r\n key={tag.id}\r\n index={index}\r\n tag={tag}\r\n onClick={onSelectedFactory(tag, props.tags.length === 1)}\r\n id={props.id}\r\n isPreselected={\r\n props.preselectedSuggestion !== undefined &&\r\n props.preselectedSuggestion === index\r\n }\r\n />\r\n ))}\r\n {props.EmptyComponent &&\r\n props.tags.length === 0 &&\r\n !props.allowNew &&\r\n !props.isWaitingForMoreInput && (\r\n <li className=\"w-100 text-center p-2\">\r\n {props.EmptyComponent}\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n </Popper>\r\n )\r\n );\r\n}\r\n\r\nconst SuggestionsWrapped = Suggestions;\r\n\r\nexport default SuggestionsWrapped;\r\n"],"mappings":"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"}