ihx_trigger.go 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package wtypes
  2. // IHxTrigger -- атрибут триггера HTMX (hx-trigger)
  3. //
  4. // # Список событий разделяется запятыми
  5. //
  6. // click -- простой щелчок
  7. //
  8. // click[ctrlKey] -- щелчок с удержанием CTRL
  9. //
  10. // click[ctrlKey&&shiftKey]
  11. //
  12. // click[checkGlobalState()]
  13. //
  14. // Модификаторы:
  15. //
  16. // once — событие будет срабатывать только один раз (например, при первом нажатии)
  17. //
  18. // changed — событие сработает только в том случае, если значение элемента изменилось.
  19. // Пожалуйста, обратите внимание, что change — это название события, а changed —
  20. // название модификатора.
  21. //
  22. // delay:<timing declaration> — перед тем как событие вызовет запрос, произойдёт
  23. // задержка. Если событие произойдёт снова, задержка сбросится.
  24. //
  25. // throttle:<timing declaration> — дросселирование произойдёт после того, как событие
  26. // вызовет запрос. Если событие произойдёт снова до завершения задержки, оно будет
  27. // проигнорировано, а элемент сработает в конце задержки.
  28. //
  29. // from:<Extended CSS selector> — позволяет событию, запускающему запрос, исходить от
  30. // другого элемента в документе (например, прослушивание события нажатия клавиши в теле
  31. // документа для поддержки горячих клавиш). Подробнее
  32. // https://htmx.org/attributes/hx-trigger/
  33. //
  34. // target:<CSS selector> — позволяет фильтровать события с помощью CSS-селектора по цели
  35. // события.
  36. //
  37. // queue:<queue option> — определяет, как события ставятся в очередь, если событие
  38. //
  39. // происходит во время выполнения запроса на другое событие. Возможные варианты:
  40. //
  41. // first - поставить в очередь первое событие
  42. //
  43. // last - поставить в очередь последнее событие (по умолчанию)
  44. //
  45. // all - поставить в очередь все события (отправить запрос для каждого события)
  46. //
  47. // none - не ставить в очередь новые события
  48. //
  49. // Основные события DOM
  50. //
  51. // click - Срабатывает при клике на элемент.
  52. //
  53. // dblclick - Срабатывает при двойном клике на элемент.
  54. //
  55. // mouseenter - Срабатывает, когда курсор мыши наводится на элемент.
  56. //
  57. // mousemove -- Срабатывает, когда мышь двигается по элементу
  58. //
  59. // mouseleave - Срабатывает, когда курсор мыши покидает элемент.
  60. //
  61. // mouseover - Срабатывает, когда курсор мыши наводится на элемент или его потомков.
  62. //
  63. // mouseout - Срабатывает, когда курсор мыши покидает элемент или его потомков.
  64. //
  65. // mousedown - Срабатывает при нажатии кнопки мыши на элементе.
  66. //
  67. // mouseup - Срабатывает при отпускании кнопки мыши на элементе.
  68. //
  69. // keydown - Срабатывает при нажатии клавиши на клавиатуре.
  70. //
  71. // keyup - Срабатывает при отпускании клавиши на клавиатуре.
  72. //
  73. // keypress - Срабатывает при нажатии и удержании клавиши на клавиатуре.
  74. //
  75. // focus - Срабатывает при фокусировке на элементе.
  76. //
  77. // blur - Срабатывает при потере фокуса элементом.
  78. //
  79. // change - Срабатывает при изменении значения элемента (например, в input или select).
  80. //
  81. // input - Срабатывает при вводе данных в элемент (например, в input или textarea).
  82. //
  83. // submit - Срабатывает при отправке формы.
  84. //
  85. // load - Срабатывает при загрузке элемента (например, изображения).
  86. //
  87. // scroll - Срабатывает при прокрутке элемента.
  88. //
  89. // resize - Срабатывает при изменении размеров окна.
  90. //
  91. // Нестандартные события
  92. //
  93. // load - срабатывает при загрузке (полезно для отложенной загрузки чего-либо)
  94. //
  95. // revealed - срабатывает при прокрутке элемента в область просмотра (также полезно
  96. // для отложенной загрузки). См. документацию.
  97. //
  98. // intersect — срабатывает один раз, когда элемент впервые пересекает область просмотра.
  99. //
  100. // Поддерживает два дополнительных параметра:
  101. //
  102. // root:<selector> - CSS-селектор корневого элемента для пересечения
  103. //
  104. // threshold:<float> — число с плавающей запятой от 0,0 до 1,0, указывающее,
  105. // при каком проценте пересечения должно срабатывать событие
  106. //
  107. // htmx:afterRequest - Срабатывает после завершения AJAX-запроса.
  108. //
  109. // htmx:beforeRequest - Срабатывает перед отправкой AJAX-запроса.
  110. //
  111. // htmx:configRequest - Срабатывает перед настройкой AJAX-запроса.
  112. //
  113. // htmx:afterSettle - Срабатывает после применения изменений в DOM.
  114. //
  115. // htmx:afterSwap - Срабатывает после замены содержимого в DOM.
  116. //
  117. // Примеры
  118. //
  119. // hx-trigger="every 1s">
  120. //
  121. // hx-trigger="load, click delay:1s"></div>
  122. //
  123. // В этом примере ресурс будет загружаться сразу после загрузки страницы, а затем
  124. // снова с задержкой в одну секунду после каждого нажатия.
  125. //
  126. // <div hx-trigger="mouseenter delay:500ms" hx-get="/example">Hover me</div>
  127. //
  128. // Указывает элемент, от которого будет считываться событие:
  129. //
  130. // <div hx-trigger="click from:#button" hx-get="/example">Click the button</div>
  131. //
  132. // <button id="button">Click me</button>
  133. //
  134. // Получение абсолютных координат курсора
  135. //
  136. // <div hx-trigger="mousemove" hx-get="/get-coordinates"
  137. //
  138. // hx-vals='js:{x: event.clientX, y: event.clientY}'
  139. //
  140. // style="width: 300px; height: 200px; border: 1px solid black;">
  141. //
  142. // Наведите курсор на меня
  143. //
  144. // </div>
  145. //
  146. // Для относительной позиции:
  147. //
  148. // hx-vals='js:{x: event.offsetX, y: event.offsetY}'
  149. type IHxTrigger interface {
  150. // Set -- устанавливает триггер атрибута
  151. Set(string)
  152. // Get -- возвращает триггер атрибута
  153. Get() string
  154. // String -- возвращает строковое значение тэга
  155. String() string
  156. }