@hortonstudio/main 1.2.5 → 1.2.7

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 (481) hide show
  1. package/attributes-master/.changeset/README.md +8 -0
  2. package/attributes-master/.changeset/config.json +11 -0
  3. package/attributes-master/.gitattributes +2 -0
  4. package/attributes-master/.github/ISSUE_TEMPLATE/bug_report.md +42 -0
  5. package/attributes-master/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  6. package/attributes-master/.github/workflows/ci.yml +66 -0
  7. package/attributes-master/.github/workflows/release.yml +40 -0
  8. package/attributes-master/.prettierignore +3 -0
  9. package/attributes-master/.prettierrc +8 -0
  10. package/attributes-master/.vscode/extensions.json +3 -0
  11. package/attributes-master/.vscode/settings.json +7 -0
  12. package/attributes-master/CONTRIBUTING.md +72 -0
  13. package/attributes-master/LICENSE.md +201 -0
  14. package/attributes-master/README.md +31 -0
  15. package/attributes-master/eslint.config.js +3 -0
  16. package/attributes-master/package.json +34 -0
  17. package/attributes-master/packages/accordion/CHANGELOG.md +89 -0
  18. package/attributes-master/packages/accordion/README.md +31 -0
  19. package/attributes-master/packages/accordion/package.json +25 -0
  20. package/attributes-master/packages/accordion/src/actions/a11y.ts +39 -0
  21. package/attributes-master/packages/accordion/src/actions/classes.ts +27 -0
  22. package/attributes-master/packages/accordion/src/actions/content.ts +42 -0
  23. package/attributes-master/packages/accordion/src/actions/list.ts +36 -0
  24. package/attributes-master/packages/accordion/src/actions/query.ts +27 -0
  25. package/attributes-master/packages/accordion/src/actions/settings.ts +61 -0
  26. package/attributes-master/packages/accordion/src/factory.ts +145 -0
  27. package/attributes-master/packages/accordion/src/index.ts +3 -0
  28. package/attributes-master/packages/accordion/src/init.ts +37 -0
  29. package/attributes-master/packages/accordion/src/utils/constants.ts +62 -0
  30. package/attributes-master/packages/accordion/src/utils/helpers.ts +5 -0
  31. package/attributes-master/packages/accordion/src/utils/selectors.ts +12 -0
  32. package/attributes-master/packages/accordion/src/utils/types.ts +23 -0
  33. package/attributes-master/packages/accordion/tsconfig.json +3 -0
  34. package/attributes-master/packages/attributes/CHANGELOG.md +564 -0
  35. package/attributes-master/packages/attributes/README.md +66 -0
  36. package/attributes-master/packages/attributes/bin/build.ts +107 -0
  37. package/attributes-master/packages/attributes/bin/live-reload.js +1 -0
  38. package/attributes-master/packages/attributes/package.json +77 -0
  39. package/attributes-master/packages/attributes/playwright.config.ts +89 -0
  40. package/attributes-master/packages/attributes/src/attributes.ts +153 -0
  41. package/attributes-master/packages/attributes/src/load.ts +125 -0
  42. package/attributes-master/packages/attributes/tests/accordion.spec.ts +137 -0
  43. package/attributes-master/packages/attributes/tests/codehighlight.spec.ts +23 -0
  44. package/attributes-master/packages/attributes/tests/combobox.spec.ts +321 -0
  45. package/attributes-master/packages/attributes/tests/copyclip.spec.ts +19 -0
  46. package/attributes-master/packages/attributes/tests/displayvalues.spec.ts +48 -0
  47. package/attributes-master/packages/attributes/tests/favcustom.spec.ts +23 -0
  48. package/attributes-master/packages/attributes/tests/inject.spec.ts +40 -0
  49. package/attributes-master/packages/attributes/tests/inputactive.spec.ts +77 -0
  50. package/attributes-master/packages/attributes/tests/inputcounter.spec.ts +83 -0
  51. package/attributes-master/packages/attributes/tests/list.spec.ts +800 -0
  52. package/attributes-master/packages/attributes/tests/mirrorclick.spec.ts +22 -0
  53. package/attributes-master/packages/attributes/tests/mirrorinput.spec.ts +37 -0
  54. package/attributes-master/packages/attributes/tests/modal.spec.ts +34 -0
  55. package/attributes-master/packages/attributes/tests/numbercount.spec.ts +40 -0
  56. package/attributes-master/packages/attributes/tests/readtime.spec.ts +19 -0
  57. package/attributes-master/packages/attributes/tests/selectcustom.spec.ts +51 -0
  58. package/attributes-master/packages/attributes/tests/socialshare.spec.ts +54 -0
  59. package/attributes-master/packages/attributes/tests/starrating.spec.ts +79 -0
  60. package/attributes-master/packages/attributes/tests/toc.spec.ts +38 -0
  61. package/attributes-master/packages/attributes/tests/utils/index.ts +16 -0
  62. package/attributes-master/packages/attributes/tsconfig.json +6 -0
  63. package/attributes-master/packages/autovideo/CHANGELOG.md +182 -0
  64. package/attributes-master/packages/autovideo/README.md +31 -0
  65. package/attributes-master/packages/autovideo/package.json +22 -0
  66. package/attributes-master/packages/autovideo/src/index.ts +3 -0
  67. package/attributes-master/packages/autovideo/src/init.ts +52 -0
  68. package/attributes-master/packages/autovideo/src/types.ts +5 -0
  69. package/attributes-master/packages/autovideo/src/utils/constants.ts +4 -0
  70. package/attributes-master/packages/autovideo/tsconfig.json +3 -0
  71. package/attributes-master/packages/codehighlight/CHANGELOG.md +185 -0
  72. package/attributes-master/packages/codehighlight/README.md +27 -0
  73. package/attributes-master/packages/codehighlight/package.json +23 -0
  74. package/attributes-master/packages/codehighlight/src/actions/import.ts +50 -0
  75. package/attributes-master/packages/codehighlight/src/index.ts +3 -0
  76. package/attributes-master/packages/codehighlight/src/init.ts +53 -0
  77. package/attributes-master/packages/codehighlight/src/utils/constants.ts +24 -0
  78. package/attributes-master/packages/codehighlight/src/utils/selectors.ts +5 -0
  79. package/attributes-master/packages/codehighlight/src/utils/themes.ts +202 -0
  80. package/attributes-master/packages/codehighlight/tsconfig.json +3 -0
  81. package/attributes-master/packages/combobox/CHANGELOG.md +99 -0
  82. package/attributes-master/packages/combobox/README.md +27 -0
  83. package/attributes-master/packages/combobox/package.json +23 -0
  84. package/attributes-master/packages/combobox/src/actions/a11y.ts +29 -0
  85. package/attributes-master/packages/combobox/src/actions/body/index.ts +12 -0
  86. package/attributes-master/packages/combobox/src/actions/clearDropdown/index.ts +37 -0
  87. package/attributes-master/packages/combobox/src/actions/dropdownList/index.ts +220 -0
  88. package/attributes-master/packages/combobox/src/actions/dropdownToggle/index.ts +34 -0
  89. package/attributes-master/packages/combobox/src/actions/events.ts +75 -0
  90. package/attributes-master/packages/combobox/src/actions/input/index.ts +235 -0
  91. package/attributes-master/packages/combobox/src/actions/observe.ts +158 -0
  92. package/attributes-master/packages/combobox/src/actions/populate.ts +97 -0
  93. package/attributes-master/packages/combobox/src/actions/selectElement/index.ts +23 -0
  94. package/attributes-master/packages/combobox/src/actions/settings.ts +134 -0
  95. package/attributes-master/packages/combobox/src/actions/state.ts +34 -0
  96. package/attributes-master/packages/combobox/src/index.ts +3 -0
  97. package/attributes-master/packages/combobox/src/init.ts +52 -0
  98. package/attributes-master/packages/combobox/src/utils/constants.ts +48 -0
  99. package/attributes-master/packages/combobox/src/utils/dropdowns.ts +120 -0
  100. package/attributes-master/packages/combobox/src/utils/index.ts +1 -0
  101. package/attributes-master/packages/combobox/src/utils/selectors.ts +9 -0
  102. package/attributes-master/packages/combobox/src/utils/types.ts +14 -0
  103. package/attributes-master/packages/combobox/tsconfig.json +3 -0
  104. package/attributes-master/packages/copyclip/CHANGELOG.md +213 -0
  105. package/attributes-master/packages/copyclip/README.md +27 -0
  106. package/attributes-master/packages/copyclip/package.json +23 -0
  107. package/attributes-master/packages/copyclip/src/factory.ts +67 -0
  108. package/attributes-master/packages/copyclip/src/index.ts +3 -0
  109. package/attributes-master/packages/copyclip/src/init.ts +68 -0
  110. package/attributes-master/packages/copyclip/src/utils/constants.ts +40 -0
  111. package/attributes-master/packages/copyclip/src/utils/selectors.ts +9 -0
  112. package/attributes-master/packages/copyclip/tsconfig.json +3 -0
  113. package/attributes-master/packages/displayvalues/CHANGELOG.md +164 -0
  114. package/attributes-master/packages/displayvalues/README.md +27 -0
  115. package/attributes-master/packages/displayvalues/package.json +22 -0
  116. package/attributes-master/packages/displayvalues/src/actions/collect.ts +17 -0
  117. package/attributes-master/packages/displayvalues/src/actions/events.ts +22 -0
  118. package/attributes-master/packages/displayvalues/src/actions/sync.ts +23 -0
  119. package/attributes-master/packages/displayvalues/src/index.ts +3 -0
  120. package/attributes-master/packages/displayvalues/src/init.ts +31 -0
  121. package/attributes-master/packages/displayvalues/src/utils/constants.ts +20 -0
  122. package/attributes-master/packages/displayvalues/src/utils/selectors.ts +9 -0
  123. package/attributes-master/packages/displayvalues/src/utils/stores.ts +3 -0
  124. package/attributes-master/packages/displayvalues/tsconfig.json +3 -0
  125. package/attributes-master/packages/docs/CHANGELOG.md +108 -0
  126. package/attributes-master/packages/docs/README.md +3 -0
  127. package/attributes-master/packages/docs/bin/build.js +92 -0
  128. package/attributes-master/packages/docs/bin/live-reload.js +1 -0
  129. package/attributes-master/packages/docs/package.json +40 -0
  130. package/attributes-master/packages/docs/src/copy.ts +260 -0
  131. package/attributes-master/packages/docs/src/x-ray.ts +377 -0
  132. package/attributes-master/packages/docs/tsconfig.json +3 -0
  133. package/attributes-master/packages/favcustom/CHANGELOG.md +194 -0
  134. package/attributes-master/packages/favcustom/README.md +27 -0
  135. package/attributes-master/packages/favcustom/package.json +22 -0
  136. package/attributes-master/packages/favcustom/src/index.ts +3 -0
  137. package/attributes-master/packages/favcustom/src/init.ts +30 -0
  138. package/attributes-master/packages/favcustom/src/utils/constants.ts +10 -0
  139. package/attributes-master/packages/favcustom/src/utils/selectors.ts +5 -0
  140. package/attributes-master/packages/favcustom/tsconfig.json +3 -0
  141. package/attributes-master/packages/formsubmit/CHANGELOG.md +161 -0
  142. package/attributes-master/packages/formsubmit/README.md +51 -0
  143. package/attributes-master/packages/formsubmit/package.json +22 -0
  144. package/attributes-master/packages/formsubmit/src/actions/redirect.ts +9 -0
  145. package/attributes-master/packages/formsubmit/src/actions/reset.ts +49 -0
  146. package/attributes-master/packages/formsubmit/src/actions/submit.ts +34 -0
  147. package/attributes-master/packages/formsubmit/src/components/Form.ts +231 -0
  148. package/attributes-master/packages/formsubmit/src/factory.ts +62 -0
  149. package/attributes-master/packages/formsubmit/src/index.ts +3 -0
  150. package/attributes-master/packages/formsubmit/src/init.ts +24 -0
  151. package/attributes-master/packages/formsubmit/src/utils/attributes.ts +19 -0
  152. package/attributes-master/packages/formsubmit/src/utils/constants.ts +89 -0
  153. package/attributes-master/packages/formsubmit/src/utils/dom.ts +76 -0
  154. package/attributes-master/packages/formsubmit/src/utils/selectors.ts +9 -0
  155. package/attributes-master/packages/formsubmit/src/utils/types.ts +7 -0
  156. package/attributes-master/packages/formsubmit/tsconfig.json +3 -0
  157. package/attributes-master/packages/inject/CHANGELOG.md +117 -0
  158. package/attributes-master/packages/inject/README.md +60 -0
  159. package/attributes-master/packages/inject/package.json +22 -0
  160. package/attributes-master/packages/inject/src/actions/collect.ts +125 -0
  161. package/attributes-master/packages/inject/src/actions/css.ts +27 -0
  162. package/attributes-master/packages/inject/src/actions/prefetch.ts +44 -0
  163. package/attributes-master/packages/inject/src/factory.ts +123 -0
  164. package/attributes-master/packages/inject/src/index.ts +3 -0
  165. package/attributes-master/packages/inject/src/init.ts +22 -0
  166. package/attributes-master/packages/inject/src/utils/constants.ts +89 -0
  167. package/attributes-master/packages/inject/src/utils/helpers.ts +36 -0
  168. package/attributes-master/packages/inject/src/utils/selectors.ts +9 -0
  169. package/attributes-master/packages/inject/src/utils/types.ts +16 -0
  170. package/attributes-master/packages/inject/tsconfig.json +3 -0
  171. package/attributes-master/packages/inputactive/CHANGELOG.md +58 -0
  172. package/attributes-master/packages/inputactive/README.md +25 -0
  173. package/attributes-master/packages/inputactive/package.json +22 -0
  174. package/attributes-master/packages/inputactive/src/actions/classes.ts +43 -0
  175. package/attributes-master/packages/inputactive/src/factory.ts +24 -0
  176. package/attributes-master/packages/inputactive/src/index.ts +3 -0
  177. package/attributes-master/packages/inputactive/src/init.ts +18 -0
  178. package/attributes-master/packages/inputactive/src/utils/constants.ts +13 -0
  179. package/attributes-master/packages/inputactive/src/utils/selectors.ts +5 -0
  180. package/attributes-master/packages/inputactive/tsconfig.json +3 -0
  181. package/attributes-master/packages/inputcounter/CHANGELOG.md +110 -0
  182. package/attributes-master/packages/inputcounter/README.md +25 -0
  183. package/attributes-master/packages/inputcounter/package.json +22 -0
  184. package/attributes-master/packages/inputcounter/src/actions/a11y.ts +23 -0
  185. package/attributes-master/packages/inputcounter/src/actions/buttons.ts +61 -0
  186. package/attributes-master/packages/inputcounter/src/actions/input.ts +31 -0
  187. package/attributes-master/packages/inputcounter/src/actions/style.ts +12 -0
  188. package/attributes-master/packages/inputcounter/src/factory.ts +51 -0
  189. package/attributes-master/packages/inputcounter/src/index.ts +3 -0
  190. package/attributes-master/packages/inputcounter/src/init.ts +22 -0
  191. package/attributes-master/packages/inputcounter/src/utils/constants.ts +59 -0
  192. package/attributes-master/packages/inputcounter/src/utils/selectors.ts +9 -0
  193. package/attributes-master/packages/inputcounter/tsconfig.json +3 -0
  194. package/attributes-master/packages/list/CHANGELOG.md +185 -0
  195. package/attributes-master/packages/list/README.md +331 -0
  196. package/attributes-master/packages/list/package.json +37 -0
  197. package/attributes-master/packages/list/src/combine/index.ts +38 -0
  198. package/attributes-master/packages/list/src/components/List.ts +861 -0
  199. package/attributes-master/packages/list/src/components/ListItem.ts +229 -0
  200. package/attributes-master/packages/list/src/components/index.ts +2 -0
  201. package/attributes-master/packages/list/src/factory.ts +130 -0
  202. package/attributes-master/packages/list/src/filter/dynamic/conditions.ts +639 -0
  203. package/attributes-master/packages/list/src/filter/dynamic/groups.ts +221 -0
  204. package/attributes-master/packages/list/src/filter/dynamic/index.ts +119 -0
  205. package/attributes-master/packages/list/src/filter/dynamic/utils.ts +44 -0
  206. package/attributes-master/packages/list/src/filter/elements.ts +93 -0
  207. package/attributes-master/packages/list/src/filter/filter.ts +118 -0
  208. package/attributes-master/packages/list/src/filter/filter.worker.ts +152 -0
  209. package/attributes-master/packages/list/src/filter/index.ts +94 -0
  210. package/attributes-master/packages/list/src/filter/standard/conditions.ts +123 -0
  211. package/attributes-master/packages/list/src/filter/standard/facets.ts +253 -0
  212. package/attributes-master/packages/list/src/filter/standard/index.ts +176 -0
  213. package/attributes-master/packages/list/src/filter/standard/query.ts +111 -0
  214. package/attributes-master/packages/list/src/filter/tags.ts +314 -0
  215. package/attributes-master/packages/list/src/filter/types.ts +62 -0
  216. package/attributes-master/packages/list/src/filter/utils.ts +126 -0
  217. package/attributes-master/packages/list/src/index.ts +4 -0
  218. package/attributes-master/packages/list/src/init.ts +38 -0
  219. package/attributes-master/packages/list/src/load/all.ts +27 -0
  220. package/attributes-master/packages/list/src/load/elements.ts +39 -0
  221. package/attributes-master/packages/list/src/load/index.ts +63 -0
  222. package/attributes-master/packages/list/src/load/infinite.ts +79 -0
  223. package/attributes-master/packages/list/src/load/load.ts +191 -0
  224. package/attributes-master/packages/list/src/load/more.ts +97 -0
  225. package/attributes-master/packages/list/src/load/pagination.ts +402 -0
  226. package/attributes-master/packages/list/src/nest/index.ts +198 -0
  227. package/attributes-master/packages/list/src/prevnext/index.ts +98 -0
  228. package/attributes-master/packages/list/src/select/index.ts +56 -0
  229. package/attributes-master/packages/list/src/slider/index.ts +62 -0
  230. package/attributes-master/packages/list/src/sort/buttons.ts +96 -0
  231. package/attributes-master/packages/list/src/sort/dropdown.ts +179 -0
  232. package/attributes-master/packages/list/src/sort/index.ts +81 -0
  233. package/attributes-master/packages/list/src/sort/query.ts +63 -0
  234. package/attributes-master/packages/list/src/sort/select.ts +67 -0
  235. package/attributes-master/packages/list/src/sort/sort.ts +79 -0
  236. package/attributes-master/packages/list/src/sort/types.ts +28 -0
  237. package/attributes-master/packages/list/src/static/index.ts +73 -0
  238. package/attributes-master/packages/list/src/tabs/index.ts +97 -0
  239. package/attributes-master/packages/list/src/utils/constants.ts +728 -0
  240. package/attributes-master/packages/list/src/utils/dom.ts +108 -0
  241. package/attributes-master/packages/list/src/utils/pagination.ts +14 -0
  242. package/attributes-master/packages/list/src/utils/selectors.ts +18 -0
  243. package/attributes-master/packages/list/src/utils/store.ts +5 -0
  244. package/attributes-master/packages/list/tsconfig.json +3 -0
  245. package/attributes-master/packages/mirrorclick/CHANGELOG.md +171 -0
  246. package/attributes-master/packages/mirrorclick/README.md +25 -0
  247. package/attributes-master/packages/mirrorclick/package.json +22 -0
  248. package/attributes-master/packages/mirrorclick/src/index.ts +3 -0
  249. package/attributes-master/packages/mirrorclick/src/init.ts +35 -0
  250. package/attributes-master/packages/mirrorclick/src/utils/constants.ts +20 -0
  251. package/attributes-master/packages/mirrorclick/src/utils/selectors.ts +9 -0
  252. package/attributes-master/packages/mirrorclick/tsconfig.json +3 -0
  253. package/attributes-master/packages/mirrorinput/CHANGELOG.md +172 -0
  254. package/attributes-master/packages/mirrorinput/README.md +25 -0
  255. package/attributes-master/packages/mirrorinput/package.json +22 -0
  256. package/attributes-master/packages/mirrorinput/src/index.ts +3 -0
  257. package/attributes-master/packages/mirrorinput/src/init.ts +48 -0
  258. package/attributes-master/packages/mirrorinput/src/utils/constants.ts +15 -0
  259. package/attributes-master/packages/mirrorinput/src/utils/selectors.ts +9 -0
  260. package/attributes-master/packages/mirrorinput/tsconfig.json +3 -0
  261. package/attributes-master/packages/modal/CHANGELOG.md +94 -0
  262. package/attributes-master/packages/modal/README.md +29 -0
  263. package/attributes-master/packages/modal/package.json +23 -0
  264. package/attributes-master/packages/modal/src/actions/a11y.ts +46 -0
  265. package/attributes-master/packages/modal/src/actions/modal.ts +164 -0
  266. package/attributes-master/packages/modal/src/actions/settings.ts +21 -0
  267. package/attributes-master/packages/modal/src/factory.ts +26 -0
  268. package/attributes-master/packages/modal/src/index.ts +3 -0
  269. package/attributes-master/packages/modal/src/init.ts +22 -0
  270. package/attributes-master/packages/modal/src/utils/constants.ts +54 -0
  271. package/attributes-master/packages/modal/src/utils/selectors.ts +9 -0
  272. package/attributes-master/packages/modal/src/utils/types.ts +12 -0
  273. package/attributes-master/packages/modal/tsconfig.json +3 -0
  274. package/attributes-master/packages/numbercount/CHANGELOG.md +90 -0
  275. package/attributes-master/packages/numbercount/README.md +27 -0
  276. package/attributes-master/packages/numbercount/package.json +23 -0
  277. package/attributes-master/packages/numbercount/src/actions/a11y.ts +26 -0
  278. package/attributes-master/packages/numbercount/src/actions/animate.ts +43 -0
  279. package/attributes-master/packages/numbercount/src/actions/observe.ts +44 -0
  280. package/attributes-master/packages/numbercount/src/factory.ts +31 -0
  281. package/attributes-master/packages/numbercount/src/index.ts +3 -0
  282. package/attributes-master/packages/numbercount/src/init.ts +22 -0
  283. package/attributes-master/packages/numbercount/src/utils/constants.ts +40 -0
  284. package/attributes-master/packages/numbercount/src/utils/helpers.ts +31 -0
  285. package/attributes-master/packages/numbercount/src/utils/selectors.ts +9 -0
  286. package/attributes-master/packages/numbercount/tsconfig.json +3 -0
  287. package/attributes-master/packages/queryparam/CHANGELOG.md +118 -0
  288. package/attributes-master/packages/queryparam/README.md +25 -0
  289. package/attributes-master/packages/queryparam/package.json +22 -0
  290. package/attributes-master/packages/queryparam/src/factory.ts +51 -0
  291. package/attributes-master/packages/queryparam/src/index.ts +3 -0
  292. package/attributes-master/packages/queryparam/src/init.ts +40 -0
  293. package/attributes-master/packages/queryparam/src/utils/constants.ts +18 -0
  294. package/attributes-master/packages/queryparam/src/utils/selectors.ts +5 -0
  295. package/attributes-master/packages/queryparam/tsconfig.json +3 -0
  296. package/attributes-master/packages/rangeslider/CHANGELOG.md +236 -0
  297. package/attributes-master/packages/rangeslider/README.md +95 -0
  298. package/attributes-master/packages/rangeslider/package.json +23 -0
  299. package/attributes-master/packages/rangeslider/src/actions/a11y.ts +21 -0
  300. package/attributes-master/packages/rangeslider/src/actions/events.ts +9 -0
  301. package/attributes-master/packages/rangeslider/src/actions/settings.ts +97 -0
  302. package/attributes-master/packages/rangeslider/src/actions/styles.ts +10 -0
  303. package/attributes-master/packages/rangeslider/src/actions/values.ts +47 -0
  304. package/attributes-master/packages/rangeslider/src/components/Fill.ts +70 -0
  305. package/attributes-master/packages/rangeslider/src/components/Handle.ts +281 -0
  306. package/attributes-master/packages/rangeslider/src/factory.ts +100 -0
  307. package/attributes-master/packages/rangeslider/src/index.ts +3 -0
  308. package/attributes-master/packages/rangeslider/src/init.ts +194 -0
  309. package/attributes-master/packages/rangeslider/src/utils/constants.ts +87 -0
  310. package/attributes-master/packages/rangeslider/src/utils/selectors.ts +9 -0
  311. package/attributes-master/packages/rangeslider/src/utils/types.ts +6 -0
  312. package/attributes-master/packages/rangeslider/tsconfig.json +3 -0
  313. package/attributes-master/packages/readtime/CHANGELOG.md +108 -0
  314. package/attributes-master/packages/readtime/README.md +25 -0
  315. package/attributes-master/packages/readtime/package.json +22 -0
  316. package/attributes-master/packages/readtime/src/factory.ts +21 -0
  317. package/attributes-master/packages/readtime/src/index.ts +3 -0
  318. package/attributes-master/packages/readtime/src/init.ts +19 -0
  319. package/attributes-master/packages/readtime/src/utils/constants.ts +33 -0
  320. package/attributes-master/packages/readtime/src/utils/selectors.ts +9 -0
  321. package/attributes-master/packages/readtime/tsconfig.json +3 -0
  322. package/attributes-master/packages/removequery/CHANGELOG.md +8 -0
  323. package/attributes-master/packages/removequery/README.md +25 -0
  324. package/attributes-master/packages/removequery/package.json +22 -0
  325. package/attributes-master/packages/removequery/src/index.ts +3 -0
  326. package/attributes-master/packages/removequery/src/init.ts +18 -0
  327. package/attributes-master/packages/removequery/src/utils/constants.ts +5 -0
  328. package/attributes-master/packages/removequery/tsconfig.json +3 -0
  329. package/attributes-master/packages/scrolldisable/CHANGELOG.md +164 -0
  330. package/attributes-master/packages/scrolldisable/README.md +29 -0
  331. package/attributes-master/packages/scrolldisable/package.json +27 -0
  332. package/attributes-master/packages/scrolldisable/src/click.ts +40 -0
  333. package/attributes-master/packages/scrolldisable/src/display.ts +117 -0
  334. package/attributes-master/packages/scrolldisable/src/index.ts +3 -0
  335. package/attributes-master/packages/scrolldisable/src/init.ts +36 -0
  336. package/attributes-master/packages/scrolldisable/src/scroll.ts +63 -0
  337. package/attributes-master/packages/scrolldisable/src/utils/constants.ts +56 -0
  338. package/attributes-master/packages/scrolldisable/src/utils/selectors.ts +6 -0
  339. package/attributes-master/packages/scrolldisable/tsconfig.json +3 -0
  340. package/attributes-master/packages/selectcustom/CHANGELOG.md +242 -0
  341. package/attributes-master/packages/selectcustom/README.md +25 -0
  342. package/attributes-master/packages/selectcustom/package.json +23 -0
  343. package/attributes-master/packages/selectcustom/src/actions/a11y.ts +29 -0
  344. package/attributes-master/packages/selectcustom/src/actions/events.ts +159 -0
  345. package/attributes-master/packages/selectcustom/src/actions/observe.ts +83 -0
  346. package/attributes-master/packages/selectcustom/src/actions/populate.ts +67 -0
  347. package/attributes-master/packages/selectcustom/src/actions/settings.ts +68 -0
  348. package/attributes-master/packages/selectcustom/src/actions/state.ts +41 -0
  349. package/attributes-master/packages/selectcustom/src/index.ts +3 -0
  350. package/attributes-master/packages/selectcustom/src/init.ts +51 -0
  351. package/attributes-master/packages/selectcustom/src/utils/constants.ts +34 -0
  352. package/attributes-master/packages/selectcustom/src/utils/selectors.ts +9 -0
  353. package/attributes-master/packages/selectcustom/src/utils/types.ts +14 -0
  354. package/attributes-master/packages/selectcustom/tsconfig.json +3 -0
  355. package/attributes-master/packages/sliderdots/CHANGELOG.md +220 -0
  356. package/attributes-master/packages/sliderdots/README.md +27 -0
  357. package/attributes-master/packages/sliderdots/package.json +22 -0
  358. package/attributes-master/packages/sliderdots/src/actions/events.ts +26 -0
  359. package/attributes-master/packages/sliderdots/src/actions/observe.ts +40 -0
  360. package/attributes-master/packages/sliderdots/src/actions/populate.ts +46 -0
  361. package/attributes-master/packages/sliderdots/src/actions/sync.ts +28 -0
  362. package/attributes-master/packages/sliderdots/src/actions/wait.ts +28 -0
  363. package/attributes-master/packages/sliderdots/src/factory.ts +57 -0
  364. package/attributes-master/packages/sliderdots/src/index.ts +3 -0
  365. package/attributes-master/packages/sliderdots/src/init.ts +30 -0
  366. package/attributes-master/packages/sliderdots/src/utils/constants.ts +33 -0
  367. package/attributes-master/packages/sliderdots/src/utils/selectors.ts +9 -0
  368. package/attributes-master/packages/sliderdots/src/utils/types.ts +7 -0
  369. package/attributes-master/packages/sliderdots/tsconfig.json +3 -0
  370. package/attributes-master/packages/smartlightbox/CHANGELOG.md +203 -0
  371. package/attributes-master/packages/smartlightbox/README.md +25 -0
  372. package/attributes-master/packages/smartlightbox/package.json +22 -0
  373. package/attributes-master/packages/smartlightbox/src/actions/collect.ts +15 -0
  374. package/attributes-master/packages/smartlightbox/src/actions/move.ts +25 -0
  375. package/attributes-master/packages/smartlightbox/src/index.ts +3 -0
  376. package/attributes-master/packages/smartlightbox/src/init.ts +61 -0
  377. package/attributes-master/packages/smartlightbox/src/utils/constants.ts +31 -0
  378. package/attributes-master/packages/smartlightbox/src/utils/selectors.ts +9 -0
  379. package/attributes-master/packages/smartlightbox/tsconfig.json +3 -0
  380. package/attributes-master/packages/socialshare/CHANGELOG.md +170 -0
  381. package/attributes-master/packages/socialshare/README.md +25 -0
  382. package/attributes-master/packages/socialshare/package.json +25 -0
  383. package/attributes-master/packages/socialshare/src/actions/collect.ts +93 -0
  384. package/attributes-master/packages/socialshare/src/actions/share.ts +91 -0
  385. package/attributes-master/packages/socialshare/src/actions/trigger.ts +46 -0
  386. package/attributes-master/packages/socialshare/src/factory.ts +149 -0
  387. package/attributes-master/packages/socialshare/src/index.ts +3 -0
  388. package/attributes-master/packages/socialshare/src/init.ts +35 -0
  389. package/attributes-master/packages/socialshare/src/utils/constants.ts +94 -0
  390. package/attributes-master/packages/socialshare/src/utils/dom.ts +8 -0
  391. package/attributes-master/packages/socialshare/src/utils/selectors.ts +6 -0
  392. package/attributes-master/packages/socialshare/src/utils/stores.ts +10 -0
  393. package/attributes-master/packages/socialshare/src/utils/types.ts +34 -0
  394. package/attributes-master/packages/socialshare/tsconfig.json +3 -0
  395. package/attributes-master/packages/starrating/CHANGELOG.md +70 -0
  396. package/attributes-master/packages/starrating/README.md +25 -0
  397. package/attributes-master/packages/starrating/package.json +22 -0
  398. package/attributes-master/packages/starrating/src/actions/classes.ts +41 -0
  399. package/attributes-master/packages/starrating/src/actions/events.ts +80 -0
  400. package/attributes-master/packages/starrating/src/factory.ts +24 -0
  401. package/attributes-master/packages/starrating/src/index.ts +3 -0
  402. package/attributes-master/packages/starrating/src/init.ts +24 -0
  403. package/attributes-master/packages/starrating/src/utils/constants.ts +20 -0
  404. package/attributes-master/packages/starrating/src/utils/helpers.ts +63 -0
  405. package/attributes-master/packages/starrating/src/utils/selectors.ts +9 -0
  406. package/attributes-master/packages/starrating/tsconfig.json +3 -0
  407. package/attributes-master/packages/template/README.md +25 -0
  408. package/attributes-master/packages/template/package.json +22 -0
  409. package/attributes-master/packages/template/src/actions/console.ts +4 -0
  410. package/attributes-master/packages/template/src/index.ts +3 -0
  411. package/attributes-master/packages/template/src/init.ts +14 -0
  412. package/attributes-master/packages/template/src/utils/constants.ts +18 -0
  413. package/attributes-master/packages/template/src/utils/selectors.ts +5 -0
  414. package/attributes-master/packages/template/tsconfig.json +3 -0
  415. package/attributes-master/packages/toc/CHANGELOG.md +192 -0
  416. package/attributes-master/packages/toc/README.md +25 -0
  417. package/attributes-master/packages/toc/package.json +23 -0
  418. package/attributes-master/packages/toc/src/actions/collect.ts +136 -0
  419. package/attributes-master/packages/toc/src/actions/create.ts +44 -0
  420. package/attributes-master/packages/toc/src/actions/events.ts +29 -0
  421. package/attributes-master/packages/toc/src/actions/observe.ts +31 -0
  422. package/attributes-master/packages/toc/src/actions/populate.ts +68 -0
  423. package/attributes-master/packages/toc/src/actions/prepare.ts +25 -0
  424. package/attributes-master/packages/toc/src/actions/scroll.ts +33 -0
  425. package/attributes-master/packages/toc/src/components/TOCItem.ts +88 -0
  426. package/attributes-master/packages/toc/src/factory.ts +47 -0
  427. package/attributes-master/packages/toc/src/index.ts +3 -0
  428. package/attributes-master/packages/toc/src/init.ts +37 -0
  429. package/attributes-master/packages/toc/src/utils/constants.ts +55 -0
  430. package/attributes-master/packages/toc/src/utils/helpers.ts +23 -0
  431. package/attributes-master/packages/toc/src/utils/selectors.ts +6 -0
  432. package/attributes-master/packages/toc/src/utils/types.ts +21 -0
  433. package/attributes-master/packages/toc/tsconfig.json +3 -0
  434. package/attributes-master/packages/utils/CHANGELOG.md +43 -0
  435. package/attributes-master/packages/utils/package.json +27 -0
  436. package/attributes-master/packages/utils/src/animations/factory.ts +100 -0
  437. package/attributes-master/packages/utils/src/animations/index.ts +73 -0
  438. package/attributes-master/packages/utils/src/animations/types.ts +37 -0
  439. package/attributes-master/packages/utils/src/components/Interaction.ts +79 -0
  440. package/attributes-master/packages/utils/src/components/Renderer.ts +59 -0
  441. package/attributes-master/packages/utils/src/components/index.ts +2 -0
  442. package/attributes-master/packages/utils/src/constants/a11y.ts +50 -0
  443. package/attributes-master/packages/utils/src/constants/attributes.ts +57 -0
  444. package/attributes-master/packages/utils/src/constants/index.ts +5 -0
  445. package/attributes-master/packages/utils/src/constants/keyboard.ts +10 -0
  446. package/attributes-master/packages/utils/src/constants/webflow.ts +74 -0
  447. package/attributes-master/packages/utils/src/helpers/dates.ts +17 -0
  448. package/attributes-master/packages/utils/src/helpers/dom.ts +82 -0
  449. package/attributes-master/packages/utils/src/helpers/events.ts +59 -0
  450. package/attributes-master/packages/utils/src/helpers/fetch.ts +217 -0
  451. package/attributes-master/packages/utils/src/helpers/forms.ts +238 -0
  452. package/attributes-master/packages/utils/src/helpers/guards.ts +138 -0
  453. package/attributes-master/packages/utils/src/helpers/index.ts +11 -0
  454. package/attributes-master/packages/utils/src/helpers/numbers.ts +86 -0
  455. package/attributes-master/packages/utils/src/helpers/selectors.ts +249 -0
  456. package/attributes-master/packages/utils/src/helpers/strings.ts +19 -0
  457. package/attributes-master/packages/utils/src/helpers/wait.ts +36 -0
  458. package/attributes-master/packages/utils/src/helpers/webflow.ts +117 -0
  459. package/attributes-master/packages/utils/src/index.ts +5 -0
  460. package/attributes-master/packages/utils/src/types/core.ts +100 -0
  461. package/attributes-master/packages/utils/src/types/dom.ts +31 -0
  462. package/attributes-master/packages/utils/src/types/index.ts +4 -0
  463. package/attributes-master/packages/utils/src/types/utils.ts +20 -0
  464. package/attributes-master/packages/utils/src/types/webflow.ts +147 -0
  465. package/attributes-master/packages/utils/tsconfig.json +3 -0
  466. package/attributes-master/packages/videohls/CHANGELOG.md +76 -0
  467. package/attributes-master/packages/videohls/README.md +27 -0
  468. package/attributes-master/packages/videohls/package.json +26 -0
  469. package/attributes-master/packages/videohls/src/actions/list.ts +23 -0
  470. package/attributes-master/packages/videohls/src/actions/video.ts +44 -0
  471. package/attributes-master/packages/videohls/src/index.ts +3 -0
  472. package/attributes-master/packages/videohls/src/init.ts +28 -0
  473. package/attributes-master/packages/videohls/src/utils/constants.ts +12 -0
  474. package/attributes-master/packages/videohls/src/utils/selectors.ts +5 -0
  475. package/attributes-master/packages/videohls/src/utils/stores.ts +3 -0
  476. package/attributes-master/packages/videohls/tsconfig.json +3 -0
  477. package/attributes-master/pnpm-lock.yaml +3317 -0
  478. package/attributes-master/pnpm-workspace.yaml +3 -0
  479. package/attributes-master/tsconfig.json +6 -0
  480. package/index.js +216 -312
  481. package/package.json +1 -1
@@ -0,0 +1,231 @@
1
+ import {
2
+ addListener,
3
+ FORM_CSS_CLASSES,
4
+ type FormBlockElement,
5
+ type FormErrorElement,
6
+ type FormSuccessElement,
7
+ simulateEvent,
8
+ } from '@finsweet/attributes-utils';
9
+
10
+ import { redirectUser } from '../actions/redirect';
11
+ import { collectPreventResetFields, resetForm } from '../actions/reset';
12
+ import { enhancedSubmit } from '../actions/submit';
13
+ import {
14
+ checkFormSuccess,
15
+ displayFormSubmitWaitText,
16
+ hideFormError,
17
+ showFormError,
18
+ showFormSuccess,
19
+ } from '../utils/dom';
20
+
21
+ export class Form {
22
+ public readonly form;
23
+ public readonly formBlock;
24
+ public readonly successMessage;
25
+ public readonly errorMessage;
26
+ public readonly submitButtons;
27
+ public readonly destroy;
28
+
29
+ private redirect;
30
+ private redirectTimeout;
31
+ private redirectUrl;
32
+ private redirectToNewTab;
33
+ private reset;
34
+ private resetTimeout;
35
+ private reload;
36
+ private reloadTimeout;
37
+ private enhance;
38
+ private disabled;
39
+ private ixTriggers;
40
+ private resetButtons;
41
+ private currentRedirectTimeout?: number | ReturnType<typeof setTimeout>;
42
+ private currentResetTimeout?: number | ReturnType<typeof setTimeout>;
43
+ private currentReloadTimeout?: number | ReturnType<typeof setTimeout>;
44
+
45
+ constructor({
46
+ form,
47
+ formBlock,
48
+ reset,
49
+ resetTimeout,
50
+ reload,
51
+ reloadTimeout,
52
+ redirect,
53
+ redirectTimeout,
54
+ redirectUrl,
55
+ redirectToNewTab,
56
+ enhance,
57
+ disable,
58
+ ixTriggers,
59
+ resetButtons,
60
+ }: {
61
+ form: HTMLFormElement;
62
+ formBlock: FormBlockElement;
63
+ reset: boolean;
64
+ resetTimeout?: number;
65
+ reload: boolean;
66
+ reloadTimeout?: number;
67
+ redirect: boolean;
68
+ redirectTimeout?: number;
69
+ redirectUrl?: string | null;
70
+ redirectToNewTab?: boolean;
71
+ enhance: boolean;
72
+ disable: boolean;
73
+ ixTriggers: Element[];
74
+ resetButtons: Element[];
75
+ }) {
76
+ this.form = form;
77
+ this.formBlock = formBlock;
78
+ this.successMessage = formBlock.querySelector(`.${FORM_CSS_CLASSES.successMessage}`) as FormSuccessElement;
79
+ this.errorMessage = formBlock.querySelector(`.${FORM_CSS_CLASSES.errorMessage}`) as FormErrorElement;
80
+ this.submitButtons = [...form.querySelectorAll<HTMLInputElement>('input[type="submit"]')];
81
+
82
+ this.redirect = redirect;
83
+ this.redirectTimeout = redirectTimeout;
84
+ this.redirectUrl = redirectUrl;
85
+ this.redirectToNewTab = redirectToNewTab;
86
+ this.reset = reset;
87
+ this.resetTimeout = resetTimeout;
88
+ this.reload = reload;
89
+ this.reloadTimeout = reloadTimeout;
90
+ this.enhance = enhance;
91
+ this.disabled = disable;
92
+ this.ixTriggers = ixTriggers;
93
+ this.resetButtons = resetButtons;
94
+
95
+ this.destroy = this.listenEvents();
96
+ }
97
+
98
+ /**
99
+ * Listens for internal events.
100
+ */
101
+ private listenEvents() {
102
+ const { form, resetButtons } = this;
103
+
104
+ const submitCleanup = addListener(form, 'submit', (e) => this.handleSubmit(e));
105
+
106
+ const resetCleanups = resetButtons.map((resetButton) =>
107
+ addListener(resetButton, 'click', () => this.handleReset(false))
108
+ );
109
+
110
+ return () => {
111
+ submitCleanup();
112
+ for (const cleanup of resetCleanups) cleanup();
113
+ };
114
+ }
115
+
116
+ /**
117
+ * Handles form submissions.
118
+ * @param e The submit event.
119
+ */
120
+ private async handleSubmit(e: SubmitEvent) {
121
+ const { reset, redirect, reload, enhance, disabled } = this;
122
+
123
+ let success: boolean;
124
+
125
+ if (disabled || enhance) {
126
+ e.preventDefault();
127
+ e.stopImmediatePropagation();
128
+ }
129
+
130
+ if (disabled) return;
131
+
132
+ if (enhance) {
133
+ success = await this.handleEnhancedSubmit();
134
+ } else {
135
+ success = await checkFormSuccess(this);
136
+ }
137
+
138
+ if (!success) return;
139
+
140
+ if (reset) this.handleReset();
141
+ if (redirect) this.handleRedirect();
142
+ if (reload) this.handleReload();
143
+
144
+ this.triggerIx();
145
+ }
146
+
147
+ /**
148
+ * Resets the form.
149
+ * @param allowTimeout Defines if waiting for the `resetTimeout` is allowed.
150
+ */
151
+ public handleReset(allowTimeout = true) {
152
+ const { form, resetTimeout, currentResetTimeout } = this;
153
+
154
+ clearTimeout(currentResetTimeout);
155
+ this.currentResetTimeout = undefined;
156
+
157
+ const preventResetFields = collectPreventResetFields(form);
158
+
159
+ if (allowTimeout && resetTimeout) {
160
+ this.currentResetTimeout = setTimeout(() => resetForm(this, preventResetFields), resetTimeout);
161
+ } else {
162
+ resetForm(this, preventResetFields);
163
+ }
164
+ }
165
+
166
+ /**
167
+ * Redirects the user to the defined URL.
168
+ */
169
+ public handleRedirect() {
170
+ const { redirectUrl, redirectTimeout, redirectToNewTab, currentRedirectTimeout } = this;
171
+
172
+ if (!redirectUrl) return;
173
+
174
+ clearTimeout(currentRedirectTimeout);
175
+ this.currentRedirectTimeout = undefined;
176
+
177
+ if (redirectTimeout) {
178
+ this.currentRedirectTimeout = setTimeout(() => redirectUser(redirectUrl, redirectToNewTab), redirectTimeout);
179
+ } else {
180
+ redirectUser(redirectUrl, redirectToNewTab);
181
+ }
182
+ }
183
+
184
+ /**
185
+ * Reload the page.
186
+ */
187
+ public handleReload() {
188
+ const { reloadTimeout, currentReloadTimeout } = this;
189
+ const { location } = window;
190
+
191
+ clearTimeout(currentReloadTimeout);
192
+ this.currentReloadTimeout = undefined;
193
+
194
+ if (reloadTimeout) {
195
+ this.currentReloadTimeout = setTimeout(location.reload, reloadTimeout);
196
+ } else {
197
+ location.reload();
198
+ }
199
+ }
200
+
201
+ /**
202
+ * Submits the form data to a custom URL using the defined action and method in the form.
203
+ * @returns A boolean Promise. `true` if it was successful.
204
+ */
205
+ public async handleEnhancedSubmit(): Promise<boolean> {
206
+ const { form } = this;
207
+ const { action, method } = form;
208
+
209
+ if (!action) return false;
210
+
211
+ hideFormError(this);
212
+
213
+ const resetSubmitText = displayFormSubmitWaitText(this);
214
+
215
+ const success = await enhancedSubmit(form, action, method);
216
+
217
+ if (success) showFormSuccess(this);
218
+ else showFormError(this);
219
+
220
+ resetSubmitText();
221
+
222
+ return success;
223
+ }
224
+
225
+ /**
226
+ * Triggers all the `ix-trigger` interactions.
227
+ */
228
+ public triggerIx() {
229
+ for (const ixTrigger of this.ixTriggers) simulateEvent(ixTrigger, 'click');
230
+ }
231
+ }
@@ -0,0 +1,62 @@
1
+ import { FORM_CSS_CLASSES, type FormBlockElement } from '@finsweet/attributes-utils';
2
+
3
+ import { Form } from './components/Form';
4
+ import { parseActionAttribute } from './utils/attributes';
5
+ import { getAttribute, getInstance, hasAttributeValue, queryAllElements } from './utils/selectors';
6
+
7
+ /**
8
+ * Creates a new formsubmit instance.
9
+ * @param formElement
10
+ */
11
+ export const initFormInstance = (formElement: Element) => {
12
+ const formBlock = formElement.closest<FormBlockElement>(`.${FORM_CSS_CLASSES.formBlock}`);
13
+ if (!formBlock) return;
14
+
15
+ const form = formBlock.querySelector('form');
16
+ if (!form) return;
17
+
18
+ const instance = getInstance(formElement);
19
+
20
+ const ixTriggers = queryAllElements('ix-trigger', { instance });
21
+ const resetButtons = queryAllElements('reset', { instance });
22
+
23
+ // Reset
24
+ const rawReset = getAttribute(formElement, 'reset');
25
+ const [reset, resetTimeout] = parseActionAttribute(rawReset);
26
+
27
+ // Reload
28
+ const rawReload = getAttribute(formElement, 'reload');
29
+ const [reload, reloadTimeout] = parseActionAttribute(rawReload);
30
+
31
+ // Redirect
32
+ const rawRedirect = getAttribute(formElement, 'redirect');
33
+ const [redirect, redirectTimeout] = parseActionAttribute(rawRedirect);
34
+
35
+ const redirectUrl = getAttribute(formElement, 'redirecturl');
36
+ const redirectToNewTab = hasAttributeValue(formElement, 'redirectnewtab', 'true');
37
+
38
+ // Disable
39
+ const disable = hasAttributeValue(formElement, 'disable', 'true');
40
+
41
+ // Enhance
42
+ const enhance = hasAttributeValue(formElement, 'enhance', 'true');
43
+
44
+ const formInstance = new Form({
45
+ form,
46
+ formBlock,
47
+ reset,
48
+ resetTimeout,
49
+ reload,
50
+ reloadTimeout,
51
+ redirect,
52
+ redirectUrl,
53
+ redirectTimeout,
54
+ redirectToNewTab,
55
+ enhance,
56
+ disable,
57
+ ixTriggers,
58
+ resetButtons,
59
+ });
60
+
61
+ return formInstance;
62
+ };
@@ -0,0 +1,3 @@
1
+ export { version } from '../package.json';
2
+ export { init } from './init';
3
+ export { ELEMENTS, SETTINGS } from './utils/constants';
@@ -0,0 +1,24 @@
1
+ import { type FinsweetAttributeInit, isNotEmpty, waitWebflowReady } from '@finsweet/attributes-utils';
2
+
3
+ import { initFormInstance } from './factory';
4
+ import { queryAllElements } from './utils/selectors';
5
+
6
+ /**
7
+ * Inits the attribute.
8
+ */
9
+ export const init: FinsweetAttributeInit = async () => {
10
+ await waitWebflowReady();
11
+
12
+ const formElements = queryAllElements('form');
13
+
14
+ const formInstances = formElements.map(initFormInstance).filter(isNotEmpty);
15
+
16
+ return {
17
+ result: formInstances,
18
+ destroy() {
19
+ for (const formInstance of formInstances) {
20
+ formInstance.destroy();
21
+ }
22
+ },
23
+ };
24
+ };
@@ -0,0 +1,19 @@
1
+ import { isString } from '@finsweet/attributes-utils';
2
+
3
+ /**
4
+ * Parses the `redirect`, `reset` and `reload` attributes.
5
+ * @param attribute
6
+ * @returns A tuple.
7
+ */
8
+ export const parseActionAttribute = (attribute?: string) => {
9
+ const shouldAct = isString(attribute);
10
+
11
+ let actionTimeout: number | undefined;
12
+
13
+ if (shouldAct) {
14
+ const rawActionTimeout = parseInt(attribute);
15
+ if (!isNaN(rawActionTimeout)) actionTimeout = rawActionTimeout;
16
+ }
17
+
18
+ return [shouldAct, actionTimeout] as const;
19
+ };
@@ -0,0 +1,89 @@
1
+ import { type AttributeElements, type AttributeSettings } from '@finsweet/attributes-utils';
2
+
3
+ export const ELEMENTS = [
4
+ /**
5
+ * Defines a form element.
6
+ */
7
+ 'form',
8
+
9
+ /**
10
+ * Defines an element that, when clicked, should reset the form.
11
+ */
12
+ 'reset',
13
+
14
+ /**
15
+ * Defines an element that should be clicked after form submission, triggering a Mouse Click interaction.
16
+ */
17
+ 'ix-trigger',
18
+ ] as const satisfies AttributeElements;
19
+
20
+ export const SETTINGS = {
21
+ /**
22
+ * Defines if the form should reset all inputs after submission.
23
+ * If set to true, it resets automatically.
24
+ * If set to a number in miliseconds, it will timeout before resetting.
25
+ */
26
+ reset: {
27
+ key: 'reset',
28
+ values: ['true'],
29
+ },
30
+
31
+ /**
32
+ * Defines an element (or a wrapper of multiple elements) that should preserve the value when resetting the form.
33
+ */
34
+ preventreset: {
35
+ key: 'preventreset',
36
+ values: ['true'],
37
+ },
38
+
39
+ /**
40
+ * Defines if the form should reload the page after submission.
41
+ * If set to true, it reloads it automatically.
42
+ * If set to a number in miliseconds, it will timeout before reloading.
43
+ */
44
+ reload: {
45
+ key: 'reload',
46
+ values: ['true'],
47
+ },
48
+
49
+ /**
50
+ * Defines if the form should redirect after submission.
51
+ * If set to true, it redirects automatically.
52
+ * If set to a number in miliseconds, it will timeout before redirecting.
53
+ */
54
+ redirect: {
55
+ key: 'redirect',
56
+ values: ['true'],
57
+ },
58
+
59
+ /**
60
+ * Defines the URL to redirect the user.
61
+ */
62
+ redirecturl: {
63
+ key: 'redirecturl',
64
+ },
65
+
66
+ /**
67
+ * Defines the redirect target, either on place or on a new tab.
68
+ */
69
+ redirectnewtab: {
70
+ key: 'redirectnewtab',
71
+ values: ['true'],
72
+ },
73
+
74
+ /**
75
+ * Defines if the form should be disabled, preventing all submissions.
76
+ */
77
+ disable: {
78
+ key: 'disable',
79
+ values: ['true'],
80
+ },
81
+
82
+ /**
83
+ * Sends the data to the form action as a custom JavaScript Fetch instead of reloading the page.
84
+ */
85
+ enhance: {
86
+ key: 'enhance',
87
+ values: ['true'],
88
+ },
89
+ } as const satisfies AttributeSettings;
@@ -0,0 +1,76 @@
1
+ import type { Form } from '../components/Form';
2
+
3
+ /**
4
+ * Checks if a form submission was successful based on the focused element by Webflow.
5
+ * @param formInstance
6
+ * @returns A boolean Promise.
7
+ */
8
+ export const checkFormSuccess = ({ successMessage, errorMessage }: Form): Promise<boolean> =>
9
+ new Promise<boolean>((resolve) => {
10
+ const observer = new MutationObserver(([{ target }]) => {
11
+ const success = target === successMessage;
12
+ resolve(success);
13
+ });
14
+
15
+ const options: MutationObserverInit = {
16
+ attributes: true,
17
+ attributeFilter: ['style'],
18
+ };
19
+
20
+ observer.observe(successMessage, options);
21
+ observer.observe(errorMessage, options);
22
+ });
23
+
24
+ /**
25
+ * Displays the Error Message of a Webflow form.
26
+ * @param formInstance
27
+ */
28
+ export const showFormError = ({ errorMessage }: Form) => {
29
+ errorMessage.style.display = 'block';
30
+ };
31
+
32
+ /**
33
+ * Hides the Error Message of a Webflow form.
34
+ * @param formInstance
35
+ */
36
+ export const hideFormError = ({ errorMessage }: Form) => {
37
+ errorMessage.style.display = 'none';
38
+ };
39
+
40
+ /**
41
+ * Displays the Success Message of a Webflow form.
42
+ * Acts exactly like the native Webflow submission, the form is hidden and the success message is displayed.
43
+ * @param formInstance
44
+ */
45
+ export const showFormSuccess = ({ form, successMessage, errorMessage }: Form) => {
46
+ form.style.display = 'none';
47
+ errorMessage.style.display = 'none';
48
+ successMessage.style.display = 'block';
49
+ };
50
+
51
+ /**
52
+ * Displays the wait text of a Form's submit buttons.
53
+ *
54
+ * @param submitButtons
55
+ * @returns A callback to reset all texts back to original.
56
+ */
57
+ export const displayFormSubmitWaitText = ({ submitButtons }: Form) => {
58
+ const resetCallbacks = submitButtons.reduce<Array<() => void>>((acc, submitButton) => {
59
+ const { value, dataset } = submitButton;
60
+ const waitText = dataset.wait;
61
+
62
+ if (!value || !waitText) return acc;
63
+
64
+ submitButton.value = waitText;
65
+
66
+ acc.push(() => {
67
+ submitButton.value = value;
68
+ });
69
+
70
+ return acc;
71
+ }, []);
72
+
73
+ return () => {
74
+ for (const resetCallback of resetCallbacks) resetCallback();
75
+ };
76
+ };
@@ -0,0 +1,9 @@
1
+ import { FORM_SUBMIT_ATTRIBUTE, generateSelectors } from '@finsweet/attributes-utils';
2
+
3
+ import { ELEMENTS, SETTINGS } from './constants';
4
+
5
+ export const { getSettingSelector, getInstance, queryAllElements, getAttribute, hasAttributeValue } = generateSelectors(
6
+ FORM_SUBMIT_ATTRIBUTE,
7
+ ELEMENTS,
8
+ SETTINGS
9
+ );
@@ -0,0 +1,7 @@
1
+ import type { FormField } from '@finsweet/attributes-utils';
2
+
3
+ export interface FieldData {
4
+ element: FormField;
5
+ value: string;
6
+ checked?: boolean;
7
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": "../../tsconfig.json"
3
+ }
@@ -0,0 +1,117 @@
1
+ # @finsweet/attributes-inject
2
+
3
+ ## 2.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 21ad38a: feat: import CSS for same-site-other-page components to support Webflow's new per page CSS splitting
8
+
9
+ ## 2.3.1
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [2af0bad]
14
+ - @finsweet/attributes-utils@0.1.0
15
+
16
+ ## 2.3.0
17
+
18
+ ### Minor Changes
19
+
20
+ - 4c20f82: feat: support v1 richtext syntax OOO
21
+
22
+ ## 2.2.0
23
+
24
+ ### Minor Changes
25
+
26
+ - 31f4870: feat: `fs-inject-element="element"` as an alias for `fs-inject-element="component"`
27
+
28
+ ## 2.1.6
29
+
30
+ ### Patch Changes
31
+
32
+ - Updated dependencies [378d74d]
33
+ - @finsweet/attributes-utils@0.0.6
34
+
35
+ ## 2.1.5
36
+
37
+ ### Patch Changes
38
+
39
+ - Updated dependencies [01973d8]
40
+ - @finsweet/attributes-utils@0.0.5
41
+
42
+ ## 2.1.4
43
+
44
+ ### Patch Changes
45
+
46
+ - Updated dependencies [deef758]
47
+ - @finsweet/attributes-utils@0.0.4
48
+
49
+ ## 2.1.3
50
+
51
+ ### Patch Changes
52
+
53
+ - Updated dependencies [d21cbca]
54
+ - @finsweet/attributes-utils@0.0.3
55
+
56
+ ## 2.1.2
57
+
58
+ ### Patch Changes
59
+
60
+ - 87fef70: fix: resetix
61
+
62
+ ## 2.1.1
63
+
64
+ ### Patch Changes
65
+
66
+ - c7b544d: chore: updated dependencies
67
+ - Updated dependencies [c7b544d]
68
+ - @finsweet/attributes-utils@0.0.2
69
+
70
+ ## 2.1.0
71
+
72
+ ### Minor Changes
73
+
74
+ - fa746b6: feat: fs-inject
75
+
76
+ ## 2.0.1
77
+
78
+ ### Patch Changes
79
+
80
+ - b56e5e5: rename fsAttribute in places of usage to finsweetAttribute
81
+ - Updated dependencies [b56e5e5]
82
+ - @finsweet/attributes-utils@0.0.1
83
+
84
+ ## 2.0.0
85
+
86
+ ### Major Changes
87
+
88
+ - 0ccef15: component: prepared for v2 release
89
+
90
+ ## 1.2.0
91
+
92
+ ### Minor Changes
93
+
94
+ - a46aeb57: enhancement: wait until an external component's CSS has fully loaded before appending that component to the DOM. This avoids flashing the raw HTML without styles in slow connections.
95
+
96
+ ### Patch Changes
97
+
98
+ - 9d623872: enhancement: enabled external documents caching when fetching resources from non-Webflow projects.
99
+
100
+ ## 1.1.0
101
+
102
+ ### Minor Changes
103
+
104
+ - 5c40136c: feat: when importing an external component, automatically convert all the relative urls to absolute using the source origin as the base.
105
+ ie:
106
+
107
+ - Footer is imported from `https://attributes.finsweet.com/styleguides`.
108
+ - Contains relative links like `/agency`.
109
+ - Links are rewritten to be `https://wf.finsweet.com/agency`.
110
+
111
+ - 459e6f62: feat: use a [stale-while-revalidate](https://web.dev/stale-while-revalidate/) approach when serving components from external sources.
112
+
113
+ ## 1.0.0
114
+
115
+ ### Major Changes
116
+
117
+ - 3ee8cdfd: Initial release