hx_target.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // package hx_target -- атрибут HTMX (цель замены).
  2. package hx_target
  3. import (
  4. "sync"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
  6. mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
  7. )
  8. // HxSwap -- атрибут HTMX (цель замены).
  9. type HxSwap struct {
  10. sync.RWMutex
  11. val defs.ATxt
  12. }
  13. // NewHxTarget -- возвращает новую цель замены.
  14. func NewHxTarget() *HxSwap {
  15. sf := &HxSwap{}
  16. _ = mWt.IHxTarget(sf)
  17. return sf
  18. }
  19. // String -- возвращает строковое представление тэга.
  20. func (sf *HxSwap) String() string {
  21. sf.RLock()
  22. defer sf.RUnlock()
  23. return `hx-target="` + string(sf.val) + `"`
  24. }
  25. // Get -- возвращает хранимое значение цели замена.
  26. func (sf *HxSwap) Get() defs.ATxt {
  27. sf.RLock()
  28. defer sf.RUnlock()
  29. return sf.val
  30. }
  31. // Set -- устанавливает значение цели обмена.
  32. func (sf *HxSwap) Set(val defs.ATxt) {
  33. sf.Lock()
  34. defer sf.Unlock()
  35. sf.val = val
  36. }