{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":498774921,"defaultBranch":"main","name":"phlex","ownerLogin":"phlex-ruby","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-06-01T14:40:16.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/111233186?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1719259931.0","currentOid":""},"activityList":{"items":[{"before":"3958e9f1822f978629b479f74f29ec874f101005","after":"883bcafb6eeb0772dcf4d64dac7cce9b8a136f10","ref":"refs/heads/1.10","pushedAt":"2024-07-02T09:19:18.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"warn on non-symbolic and non-lowercase :id (#741)\n\n#740 but just warn","shortMessageHtmlLink":"warn on non-symbolic and non-lowercase :id (#741)"}},{"before":"d5fb7ea49112073a3c2b8f6196a1262a9efcf331","after":"82e4a4920399c1163463fdd2d35fb8fd487ca813","ref":"refs/heads/main","pushedAt":"2024-07-02T09:18:53.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"grab (#739)\n\nresolves #720","shortMessageHtmlLink":"grab (#739)"}},{"before":"de7e37cccc690cf7f8d99b7cadca88242f9e572d","after":"d5fb7ea49112073a3c2b8f6196a1262a9efcf331","ref":"refs/heads/main","pushedAt":"2024-07-02T09:18:17.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"raise on non-symbolic and non-lowercase :id (#740)\n\nresolves #695","shortMessageHtmlLink":"raise on non-symbolic and non-lowercase :id (#740)"}},{"before":"8f6cce1f77fd27d95639bd1bc855e02c8a80c670","after":null,"ref":"refs/heads/remove-tokens-helpers","pushedAt":"2024-06-24T20:12:11.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"}},{"before":"6635d218379cc9ec3fd9d290d015c9f3c44febc4","after":"de7e37cccc690cf7f8d99b7cadca88242f9e572d","ref":"refs/heads/main","pushedAt":"2024-06-24T20:12:10.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Remove `tokens` and `classes` helpers (#738)\n\nSince #737, we no longer need these helpers.","shortMessageHtmlLink":"Remove tokens and classes helpers (#738)"}},{"before":"7ab745f73f3f25ef8f10efc3c9f7b7b01524d393","after":"8f6cce1f77fd27d95639bd1bc855e02c8a80c670","ref":"refs/heads/remove-tokens-helpers","pushedAt":"2024-06-24T20:11:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Remove tokens helpers","shortMessageHtmlLink":"Remove tokens helpers"}},{"before":"4fcaec06879c07912c827d2a87eb7bd248bf4b28","after":null,"ref":"refs/heads/good-cop","pushedAt":"2024-06-24T19:18:51.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"}},{"before":"13c3a173afa49f88c86e9b6682a07871f0d2b681","after":"6635d218379cc9ec3fd9d290d015c9f3c44febc4","ref":"refs/heads/main","pushedAt":"2024-06-24T19:18:50.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Adopt new good cop rules (#730)\n\nThe good cop rules were recently updated to be opt-in. This PR adopts\r\nthose new rules.","shortMessageHtmlLink":"Adopt new good cop rules (#730)"}},{"before":"c3a8be66fb0da3c06c03f85f3039878203c1a975","after":"4fcaec06879c07912c827d2a87eb7bd248bf4b28","ref":"refs/heads/good-cop","pushedAt":"2024-06-24T19:16:14.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Use new good cop rules","shortMessageHtmlLink":"Use new good cop rules"}},{"before":"5d2bdd5c5a670abdff64742393f92d45b8852e5f","after":"c3a8be66fb0da3c06c03f85f3039878203c1a975","ref":"refs/heads/good-cop","pushedAt":"2024-06-24T19:14:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Use new good cop rules","shortMessageHtmlLink":"Use new good cop rules"}},{"before":"23fcd8593fd9380bd7ddf7dc5838b59e18ed000f","after":"5d2bdd5c5a670abdff64742393f92d45b8852e5f","ref":"refs/heads/good-cop","pushedAt":"2024-06-24T19:11:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Use new good cop rules","shortMessageHtmlLink":"Use new good cop rules"}},{"before":"6791262b2128759c7376a575c8a2bdd1c37709ed","after":"7ab745f73f3f25ef8f10efc3c9f7b7b01524d393","ref":"refs/heads/remove-tokens-helpers","pushedAt":"2024-06-24T19:07:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Update tests","shortMessageHtmlLink":"Update tests"}},{"before":null,"after":"6791262b2128759c7376a575c8a2bdd1c37709ed","ref":"refs/heads/remove-tokens-helpers","pushedAt":"2024-06-24T19:03:25.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Remove `tokens` and `classes` helpers","shortMessageHtmlLink":"Remove tokens and classes helpers"}},{"before":"c6880850180c0037db21a081efcfe42d791295de","after":"13c3a173afa49f88c86e9b6682a07871f0d2b681","ref":"refs/heads/main","pushedAt":"2024-06-24T18:58:41.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"feat: add Hash support for `class` and `style` attributes (#737)\n\n### Description :book:\r\n\r\nThis pull request adds support for passing `Hash` in `class` and `style`\r\nattributes in a way that feels idiomatic in Ruby and achieves\r\ncomposability.\r\n\r\n### Background 📜 \r\n\r\nWhen writing Phlex components, things usually start simple:\r\n\r\n```ruby\r\ndiv(id: \"hero\", class: \"section\")\r\n```\r\n\r\nbut when you need a conditional class, things get a bit awkward:\r\n\r\n```ruby\r\ndiv(id: \"hero\", **classes(\"section\", (\"active\" if active)))\r\n```\r\n\r\nThis proposal is meant to provide an alternative which is easier to\r\nunderstand, and easier to write:\r\n\r\n```ruby\r\ndiv(id: \"hero\", class: [\"section\", active:])\r\n```\r\n\r\n### Examples 🧪\r\n\r\n#### `class`\r\n\r\nA component such as:\r\n\r\n```ruby\r\ndef active = true\r\n\r\ndef inactive = false\r\n\r\ndef view_template\r\n div(class: [\"dropdown\", inactive:, active:])\r\nend\r\n```\r\n\r\nwould render:\r\n\r\n```erb\r\n
\r\n```\r\n\r\n#### `style`\r\n\r\nA component such as:\r\n\r\n```ruby\r\ndef view_template\r\n div(style: {font_size: \"16px\", opacity: 0})\r\nend\r\n```\r\n\r\nwould render:\r\n\r\n```erb\r\n
\r\n```\r\n\r\n### Precedents\r\n\r\nThis feels like the Ruby equivalent of what frameworks like\r\n[Vue](https://vuejs.org/guide/essentials/class-and-style.html) provide\r\nin their template system:\r\n\r\n- [Class and Style\r\nBindings](https://vuejs.org/guide/essentials/class-and-style.html)\r\n\r\nAs noted by @Spone, this behavior is consistent with the\r\n[`class_names`](https://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-token_list)\r\nhelper in Rails.","shortMessageHtmlLink":"feat: add Hash support for class and style attributes (#737)"}},{"before":"fe4979d488c1a16e0f8a0d4e70ac75d0af9c54ec","after":"c6880850180c0037db21a081efcfe42d791295de","ref":"refs/heads/main","pushedAt":"2024-06-24T08:30:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Update README.md\n\nSigned-off-by: Joel Drapper ","shortMessageHtmlLink":"Update README.md"}},{"before":"aae1fad1999da6bcfbb8ce5dc38f25e581998234","after":"3958e9f1822f978629b479f74f29ec874f101005","ref":"refs/heads/1.10","pushedAt":"2024-06-18T18:41:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Warn on double render (#735)\n\nwasn't sure if I should add tests for this. Adds a warning on double\r\nrender to 1.10 #607","shortMessageHtmlLink":"Warn on double render (#735)"}},{"before":"e4aecac723a5352b2bfb2b3ed4f7274fa13370cb","after":"fe4979d488c1a16e0f8a0d4e70ac75d0af9c54ec","ref":"refs/heads/main","pushedAt":"2024-06-14T08:29:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Double render (#734)\n\nshould resolve #607\r\n(last pr had some formatting issues)","shortMessageHtmlLink":"Double render (#734)"}},{"before":"570b5acf35fa334082e8304717a1faff8d3cba66","after":"23fcd8593fd9380bd7ddf7dc5838b59e18ed000f","ref":"refs/heads/good-cop","pushedAt":"2024-06-11T12:13:08.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Fixes for kit","shortMessageHtmlLink":"Fixes for kit"}},{"before":null,"after":"570b5acf35fa334082e8304717a1faff8d3cba66","ref":"refs/heads/good-cop","pushedAt":"2024-06-11T12:10:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Adopt new good cop rules","shortMessageHtmlLink":"Adopt new good cop rules"}},{"before":"f0784321d3093efb2785e0c918c0ff72b406657a","after":"e4aecac723a5352b2bfb2b3ed4f7274fa13370cb","ref":"refs/heads/main","pushedAt":"2024-06-11T02:32:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Fix component kit autoload order bug (#729)\n\nInstead of loading all the constants, now we use method missing to\nlazy-load them.\n\nI believe this fixes #727","shortMessageHtmlLink":"Fix component kit autoload order bug (#729)"}},{"before":"4a7eeec94beca85b8c6ac90331e7f503c31456b2","after":"aae1fad1999da6bcfbb8ce5dc38f25e581998234","ref":"refs/heads/1.10","pushedAt":"2024-06-11T02:21:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Fix component kit autoload order bug (#729)\n\nInstead of loading all the constants, now we use method missing to\r\nlazy-load them.\r\n\r\nI believe this fixes #727","shortMessageHtmlLink":"Fix component kit autoload order bug (#729)"}},{"before":"a0103084b9fb3409c5917f3f18bd489a1f75a882","after":null,"ref":"refs/heads/fix-component-kits-autoload-order","pushedAt":"2024-06-11T02:21:45.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"}},{"before":"ca9e0e52f72ef3b1d1ee7ac546a65064e7982423","after":"a0103084b9fb3409c5917f3f18bd489a1f75a882","ref":"refs/heads/fix-component-kits-autoload-order","pushedAt":"2024-06-10T12:03:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Improved lazy loading for kits","shortMessageHtmlLink":"Improved lazy loading for kits"}},{"before":"4fbf6eee31779716d78b08b32264554c2b1d6bcb","after":"ca9e0e52f72ef3b1d1ee7ac546a65064e7982423","ref":"refs/heads/fix-component-kits-autoload-order","pushedAt":"2024-06-09T00:10:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Fix component kit autoload order bug","shortMessageHtmlLink":"Fix component kit autoload order bug"}},{"before":null,"after":"4fbf6eee31779716d78b08b32264554c2b1d6bcb","ref":"refs/heads/fix-component-kits-autoload-order","pushedAt":"2024-06-09T00:08:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Fix component kit autoload order bug","shortMessageHtmlLink":"Fix component kit autoload order bug"}},{"before":"52ac32b96362a4b8cbd42c645edd7904d6efa849","after":"f0784321d3093efb2785e0c918c0ff72b406657a","ref":"refs/heads/main","pushedAt":"2024-06-04T23:30:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"Update README.md\n\nAdded to prior art\n\nSigned-off-by: Joel Drapper ","shortMessageHtmlLink":"Update README.md"}},{"before":"1fcbfd360d7bd19dcaf0118d52e156b6e09df4c6","after":"4a7eeec94beca85b8c6ac90331e7f503c31456b2","ref":"refs/heads/1.10","pushedAt":"2024-06-01T14:49:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"1.10.3","shortMessageHtmlLink":"1.10.3"}},{"before":"7cdd46864755388ae2b370486d04abd1a870e3cc","after":"52ac32b96362a4b8cbd42c645edd7904d6efa849","ref":"refs/heads/main","pushedAt":"2024-05-17T16:17:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"},"commit":{"message":"fix typo (#722)\n\nnot a native speaker but I think that it's written with an 'e'?","shortMessageHtmlLink":"fix typo (#722)"}},{"before":null,"after":"3f4360820b8129d77a814eae1fcf1626051a72e4","ref":"refs/heads/safe-attributes","pushedAt":"2024-05-15T18:45:50.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"bradgessler","name":"Brad Gessler","path":"/bradgessler","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4628?s=80&v=4"},"commit":{"message":"Add Phlex::SGML::SafeValue to require people to mark attribute values as 'safe' for use in attributes","shortMessageHtmlLink":"Add Phlex::SGML::SafeValue to require people to mark attribute values…"}},{"before":"0b412300f7aa012bf6f8c6c87c954b0ecfaab3a0","after":null,"ref":"refs/heads/keyword-class-binding","pushedAt":"2024-05-15T16:04:47.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"joeldrapper","name":"Joel Drapper","path":"/joeldrapper","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/246692?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEdJvQgwA","startCursor":null,"endCursor":null}},"title":"Activity · phlex-ruby/phlex"}