full-project-search-modifiers.tsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import React, { useRef, forwardRef, useImperativeHandle } from 'react'
  2. import { SearchQuery } from '@codemirror/search'
  3. import OLTooltip from '@/shared/components/ol/ol-tooltip'
  4. import { Form } from 'react-bootstrap'
  5. import { useTranslation } from 'react-i18next'
  6. export const FullProjectSearchModifiers = forwardRef(
  7. function FullProjectSearchModifiers(props, ref) {
  8. const { t } = useTranslation()
  9. const caseSensitiveRef = useRef<HTMLInputElement>(null)
  10. const regexpRef = useRef<HTMLInputElement>(null)
  11. const wholeWordRef = useRef<HTMLInputElement>(null)
  12. useImperativeHandle(ref, () => {
  13. return {
  14. setQuery(query: SearchQuery) {
  15. caseSensitiveRef.current!.checked = query.caseSensitive
  16. regexpRef.current!.checked = query.regexp
  17. wholeWordRef.current!.checked = query.wholeWord
  18. },
  19. }
  20. }, [])
  21. return (
  22. <div className="full-project-search-modifiers" role="group">
  23. <OLTooltip
  24. id="project-search-caseSensitive"
  25. description={t('search_match_case')}
  26. overlayProps={{ placement: 'bottom' }}
  27. >
  28. <span>
  29. <Form.Check
  30. inline
  31. label="Aa"
  32. name="caseSensitive"
  33. type="checkbox"
  34. id="project-search-caseSensitive"
  35. ref={caseSensitiveRef}
  36. />
  37. </span>
  38. </OLTooltip>
  39. <OLTooltip
  40. id="project-search-regexp"
  41. description={t('search_regexp')}
  42. overlayProps={{ placement: 'bottom' }}
  43. >
  44. <span>
  45. <Form.Check
  46. inline
  47. label="[.*]"
  48. name="regexp"
  49. type="checkbox"
  50. id="project-search-regexp"
  51. ref={regexpRef}
  52. />
  53. </span>
  54. </OLTooltip>
  55. <OLTooltip
  56. id="project-search-wholeWord"
  57. description={t('search_whole_word')}
  58. overlayProps={{ placement: 'bottom' }}
  59. >
  60. <span>
  61. <Form.Check
  62. inline
  63. label="W"
  64. name="wholeWord"
  65. type="checkbox"
  66. id="project-search-wholeWord"
  67. ref={wholeWordRef}
  68. />
  69. </span>
  70. </OLTooltip>
  71. </div>
  72. )
  73. }
  74. )