From 77ec06095eacd212c9ac7502e6c9253da6ad04ac Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Mon, 18 Aug 2025 19:10:20 -0400 Subject: [PATCH 01/10] Don't have extra left margin when module name wraps --- app/styles/app.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/styles/app.css b/app/styles/app.css index 11a96d24..699f2836 100644 --- a/app/styles/app.css +++ b/app/styles/app.css @@ -11,14 +11,16 @@ html { } .module-name { - display: inline-block; + display: inline-flex; + align-items: center; + flex-wrap: wrap; + gap: var(--spacing-1); margin-bottom: 0; } .access { color: #fff; background-color: var(--color-gray-600); - margin-left: var(--spacing-1); padding: 0.25rem var(--spacing-1); font-size: var(--font-size-md); border-radius: var(--radius); From 260e712318a7d8c2f0d11a0192f1d1a33744e0ed Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Mon, 18 Aug 2025 19:21:40 -0400 Subject: [PATCH 02/10] Add ember-router-scroll to have correct scroll behavior ala static sites --- package.json | 1 + pnpm-lock.yaml | 177 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+) diff --git a/package.json b/package.json index 04636935..225a2d73 100644 --- a/package.json +++ b/package.json @@ -98,6 +98,7 @@ "ember-qunit": "^6.2.0", "ember-resolver": "^10.0.0", "ember-rfc176-data": "^0.3.17", + "ember-router-scroll": "^4.1.2", "ember-showdown-shiki": "^1.2.1", "ember-sinon": "^4.1.1", "ember-source": "~4.12.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e5bda57..d97c7e83 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -218,6 +218,9 @@ importers: ember-rfc176-data: specifier: ^0.3.17 version: 0.3.18 + ember-router-scroll: + specifier: ^4.1.2 + version: 4.1.2(@babel/core@7.28.3) ember-showdown-shiki: specifier: ^1.2.1 version: 1.2.1(@babel/core@7.28.3)(showdown@2.1.0) @@ -1583,51 +1586,96 @@ packages: '@types/ember-resolver@5.0.13': resolution: {integrity: sha512-pO964cAPhAaFJoS28M8+b5MzAhQ/tVuNM4GDUIAexheQat36axG2WTG8LQ5ea07MSFPesrRFk2T3z88pfvdYKA==} + '@types/ember@3.16.14': + resolution: {integrity: sha512-m3fM87W1J75ri9Uu79hzKimiAhxdAF3dZyzmwGrf4OPPQp3yt2L9uHAkwmMIxstk4F1rBWG/SHJOnvlqif23Rw==} + '@types/ember@4.0.11': resolution: {integrity: sha512-v7VIex0YILK8fP87LkIfzeeYKNnu74+xwf6U56v6MUDDGfSs9q/6NCxiUfwkxD+z5nQiUcwvfKVokX8qzZFRLw==} + '@types/ember__application@3.16.10': + resolution: {integrity: sha512-KWmS3neq1ktBn59XSUxILQPyf8jKEzIYlyFi6b4xRBQd3l+sdIOUbp2+THiXgkAS9Zx9goZAcaMjP5UF78FQJA==} + '@types/ember__application@4.0.11': resolution: {integrity: sha512-U1S7XW0V70nTWbFckWoraJbYGBJK69muP/CsPFLeAuUYHfkkDiwh1SfqgAUN9aHtrEJM5SuSYVYp2YsTI2yLuA==} + '@types/ember__array@3.16.11': + resolution: {integrity: sha512-Izdn9iHa/9Iqn3fNf3GzQYXws6cfSvpmb0IgQE29EVhm99hzexa5ngvcTpU+6717TVuf+XJ+eIwjrrnNPcZ6Gg==} + '@types/ember__array@4.0.10': resolution: {integrity: sha512-UrhDbopLI3jB0MqV14y8yji2IuPNmeDrtT1PRYJL4CThLHrRkfeYyFvxqvrxWxn0wXKjbbjfH1gOe7BU57QrLQ==} + '@types/ember__component@3.16.14': + resolution: {integrity: sha512-1xLPlder9ez16ajMk0+HWDsZ85I4y9K0uLOglNtfxuUOQi5Jb7jakwyj49dN5P62suwjtDEfhsvToZORT5pOtw==} + '@types/ember__component@4.0.22': resolution: {integrity: sha512-m72EtmBN/RxOChXqRsyOg4RR5+AiB4LQ8s1CEKNYAfvANt18m4hjqxtA7QZYLTq2ZjEVJGpdMsrdDuONWjwRSQ==} + '@types/ember__controller@3.16.14': + resolution: {integrity: sha512-VDb3B1Yc6mPMafYKW/CsQubGRLp6UTgBMXzfdHIKMQbtyUcfXvnvJWZ2aWtfCZBNTgwb14zvzVQti2GYgQFjGg==} + '@types/ember__controller@4.0.12': resolution: {integrity: sha512-80rdnSC0UJBqoUX5/vkQcM2xkRdTPTvY0dPXEfY5cC5OZITbcSeRo5qa7ZGhgNBfH6XYyh55Lo/b811LwU3N9w==} + '@types/ember__debug@3.16.12': + resolution: {integrity: sha512-+k+9qNmTaLw6xQCvcZm1DrQ6D2n9uob/8RVAK6jxFkxyPNbdt66z3fn7V/NHIURcBVhGVgf1qr5x62bHW0PIdg==} + '@types/ember__debug@4.0.8': resolution: {integrity: sha512-9wF7STmDHDsUxSjyCq2lpMq/03QOPkBQMGJnV8yOBnVZxB6f+FJH/kxaCprdMkUe7iwAPNEC2zrFFx1tzH75Kg==} + '@types/ember__engine@3.16.9': + resolution: {integrity: sha512-Dab779R+nuGoprrOV1qzomUSEGM9eqXxFB1q5ArK00IDf+B6qkws2rJg6pB7PBSdiBhnhAq8tAJ/WNy4eC/jwQ==} + '@types/ember__engine@4.0.11': resolution: {integrity: sha512-ryR4Q1Xm3kQ3Ap58w10CxV3+vb3hs1cJqi7UZ5IlSdLRql7AbpS6hIjxSQ3EQ4zadeeJ6/D8JJcSwqR7eX3PFA==} + '@types/ember__error@3.16.6': + resolution: {integrity: sha512-I40H4hr+Ma/CNF2xCFvSMMb/qn72p+SlM3GR/97EW+3LSy9iLu44e6eZZhAO6BgqmqEArqMNI6wSjps3FfDKiA==} + '@types/ember__error@4.0.6': resolution: {integrity: sha512-vYrLaGGjHkN14K89Vm8yqB2mkpJQefE5w7QJkkgYyV+smzns1vKlPbvuFevRtoeYNn4u4yY0JyF7HceNkm3H0Q==} + '@types/ember__object@3.12.13': + resolution: {integrity: sha512-xK8KeVG3lsQGIhZGcOW+MpNaDYRygICr4gkZ6RkWqWb98pGmajsvGJcMia1WFa/K4eyEG6dFsDVaKED1No8wow==} + '@types/ember__object@4.0.12': resolution: {integrity: sha512-ZEpikPjZ02m1QCBiTPTayMJwVwF4UBlHlGDoScRB3IP/SUS1O5mmn1/CnSQDxzzF3ctfmhNuTZzVBBc1Y8OC1A==} '@types/ember__owner@4.0.9': resolution: {integrity: sha512-iyBda4aUIjBmeiKTKmPow/EJO7xWn8m85CnQTOCqQzTWJyJpgfObbXSHahOHXOfMm279Oa5NlbmS/EontB+XiQ==} + '@types/ember__polyfills@3.12.7': + resolution: {integrity: sha512-aSNyzBkQU3CQKYVed0AIGivS4BUxp1+EDZTlJCguDgtMDAgAJSIHibLnz37iXUET5COCzyyFfgi1WsQpsupGcA==} + '@types/ember__polyfills@4.0.6': resolution: {integrity: sha512-hbds3Qv+oVm/QKIaY1E6atvrCoJTH/MPSl4swOhX6P0RiMB2fOfFCrFSD1mP1KrU1LqpHJ2Rzs7XLe53SWVzgw==} + '@types/ember__routing@3.16.23': + resolution: {integrity: sha512-hztI4bZcPQjU3E8Tt7gWEOEQhNmT6HLmGn2YzzlQ3gFkGYdcSnj+h+Gh3pVI+AB/sB9i9jD088pLr48weKzd3g==} + '@types/ember__routing@4.0.22': resolution: {integrity: sha512-qLk9Vd2GMxdlGmX9xbzg4Farths+AQGzYDH901Wo2Nsre+Cwv1Tk1rbCiay2V3ICYZYufytdWT6V++DISF3nvw==} + '@types/ember__runloop@3.16.10': + resolution: {integrity: sha512-abhXy3pikiQsQJKZhJXVW6BbIOM0E2+GlEJ63ZA/yKJLmcY9vuwCWLieaXXKyTyBolSOPLyofLVRJ/L/C2rp0A==} + '@types/ember__runloop@4.0.10': resolution: {integrity: sha512-9MZfOJBXuUP7RqLjovmzy1yY2xKTxVpqHMapqy6QJ8mjAekRmq9IJ+ni2zJ5CWftyb3Lqu3Eks05CL7fnbhcJA==} + '@types/ember__service@3.16.9': + resolution: {integrity: sha512-U3jhGybrSSqkZDpeF6v5y74GHMlPcfuhwhwXVR8M3YV8A8hsDkT4tiV4Ul7pHwh/HoYdw8giF9p8J0RXpmhPsg==} + '@types/ember__service@4.0.9': resolution: {integrity: sha512-DrepocL/4hH5YxbDWbxEKMDcAchBPSGGa4g+LEINW1Po81RmSdKw5GZV4UO0mvRWgkdu3EbWUxbTzB4gmbDSeQ==} + '@types/ember__string@2.0.7': + resolution: {integrity: sha512-N8ersNizusKO6mDylmxgS3IQQawyAJQQdb7/W/ZDBIIx9G/yxoTvgMOSjbR6V+wQYngnG3NeSh+DdK4RZj/cJw==} + '@types/ember__string@3.0.15': resolution: {integrity: sha512-SxoaweAJUJKSIt82clIwpi/Fm0IfeisozLnXthnBp/hE2JyVcnOb1wMIbw0CCfzercmyWG1njV45VBqy8SrLDQ==} + '@types/ember__template@3.16.7': + resolution: {integrity: sha512-Mj3BzTzXKrS2cX9rkUpsqnyCNnVUUJh6juhuJW9KleJNtrUdfGPPGkOonn+oXFKcWfxiRB15jx8Ypi668vDDQw==} + '@types/ember__template@4.0.7': resolution: {integrity: sha512-jv4hhG+8d1zdma+jhbCdJ3Ak7C22YNatGyWWvB3N9zbXq358AAPXaJoyNY8QTDbD/RIR9P6yoRk4u9vLbF6zfA==} @@ -1635,9 +1683,15 @@ packages: resolution: {integrity: sha512-GTucagS2Yqla9EkCe478DvF0n3SYaiJMf4v27SKw0DNm3JRoDGxfHp5guIKfoyeLH8yASl3RtsBwD5jNwM4qmw==} deprecated: This is a stub types definition. @ember/test-helpers provides its own type definitions, so you do not need this installed. + '@types/ember__test@3.16.7': + resolution: {integrity: sha512-xB74tYOxokbMnSP6RFlFscQ9M1o9vi0aI1SClwyviz9c6u7qVhJhJWzctad1aAY3gRwFh25CbKpXEw5KkOk88w==} + '@types/ember__test@4.0.6': resolution: {integrity: sha512-Nswm/epfTepXknT8scZvWyyop1aqJcZcyzY4THGHFcXvYQQfA9rgmgrx6vo9vCJmYHh3jm0TTAIAIfoCvGaX5g==} + '@types/ember__utils@3.16.8': + resolution: {integrity: sha512-r5vtLdK352rgqA0nOFqvNETIwPnLOnCRlfdhEifRzltetyN9YAlAwFMzO3+ECuDBQWuBlWkt0xV1b8EWbN6XCg==} + '@types/ember__utils@4.0.7': resolution: {integrity: sha512-qQPBeWRyIPigKnZ68POlkqI5e6XA78Q4G3xHo687wQTcEtfoL/iZyPC4hn70mdijcZq8Hjch2Y3E5yhsEMzK+g==} @@ -1681,6 +1735,9 @@ packages: '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + '@types/jquery@3.5.32': + resolution: {integrity: sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1730,6 +1787,9 @@ packages: '@types/serve-static@1.15.8': resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + '@types/sizzle@2.3.9': + resolution: {integrity: sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==} + '@types/supports-color@8.1.3': resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==} @@ -3514,6 +3574,10 @@ packages: qunit: optional: true + ember-app-scheduler@7.0.1: + resolution: {integrity: sha512-7140A/4OJuYBlncfxmreZHX5S7FxO/4KX5NswowIrvGZpaLuoeULjBHgiKBWC1OUzsdHST4jwaDufniHEROajg==} + engines: {node: 12.* || 14.* || >= 16} + ember-arg-types@1.1.0: resolution: {integrity: sha512-hWpUz0eiNkWzi3FgHW5QU6LyCDyUlTWwuIROHluEKZoa9m6LJVXbb/EVFgIG3FkAib6a5Ie00WvkXEZFXxh3+A==} engines: {node: 14.* || >= 16} @@ -3852,6 +3916,10 @@ packages: resolution: {integrity: sha512-89oVHVJwmLDvGvAUWgS87KpBoRhy3aZ6U0Ql6HOmU4TrPkyaa8pM0W81wj9cIwjYprcQtN9EwzZMHnq46+oUyw==} engines: {node: 8.* || 10.* || >= 12} + ember-router-scroll@4.1.2: + resolution: {integrity: sha512-5AGRmbfhSx7kOu2U8caQkG8qOxlLnvJIoQgKRE9mc1isuYPdime6Qn061NSnnQukMMsSPlV8GAImiEk05BmfGA==} + engines: {node: 12.* || 14.* || >= 16} + ember-showdown-shiki@1.2.1: resolution: {integrity: sha512-h3WYvEVjK7R86SosU6Y9lA7kvlVff4Y/7KS/D79lJ828NReLW1CnQAcxRSoGVvu+S6A8uONzImzJhyDXwuZDZA==} peerDependencies: @@ -10084,6 +10152,26 @@ snapshots: - '@babel/core' - supports-color + '@types/ember@3.16.14': + dependencies: + '@types/ember__application': 3.16.10 + '@types/ember__array': 3.16.11 + '@types/ember__component': 3.16.14 + '@types/ember__controller': 3.16.14 + '@types/ember__debug': 3.16.12 + '@types/ember__engine': 3.16.9 + '@types/ember__error': 3.16.6 + '@types/ember__object': 3.12.13 + '@types/ember__polyfills': 3.12.7 + '@types/ember__routing': 3.16.23 + '@types/ember__runloop': 3.16.10 + '@types/ember__service': 3.16.9 + '@types/ember__string': 2.0.7 + '@types/ember__template': 3.16.7 + '@types/ember__test': 3.16.7 + '@types/ember__utils': 3.16.8 + '@types/rsvp': 4.0.9 + '@types/ember@4.0.11(@babel/core@7.28.3)': dependencies: '@types/ember__application': 4.0.11(@babel/core@7.28.3) @@ -10107,6 +10195,12 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__application@3.16.10': + dependencies: + '@types/ember__engine': 3.16.9 + '@types/ember__object': 3.12.13 + '@types/ember__routing': 3.16.23 + '@types/ember__application@4.0.11(@babel/core@7.28.3)': dependencies: '@glimmer/component': 1.1.2(@babel/core@7.28.3) @@ -10119,6 +10213,10 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__array@3.16.11': + dependencies: + '@types/ember__object': 3.12.13 + '@types/ember__array@4.0.10(@babel/core@7.28.3)': dependencies: '@types/ember': 4.0.11(@babel/core@7.28.3) @@ -10127,6 +10225,11 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__component@3.16.14': + dependencies: + '@types/ember__object': 3.12.13 + '@types/jquery': 3.5.32 + '@types/ember__component@4.0.22(@babel/core@7.28.3)': dependencies: '@types/ember': 4.0.11(@babel/core@7.28.3) @@ -10135,6 +10238,10 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__controller@3.16.14': + dependencies: + '@types/ember__object': 3.12.13 + '@types/ember__controller@4.0.12(@babel/core@7.28.3)': dependencies: '@types/ember__object': 4.0.12(@babel/core@7.28.3) @@ -10142,6 +10249,11 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__debug@3.16.12': + dependencies: + '@types/ember__engine': 3.16.9 + '@types/ember__object': 3.12.13 + '@types/ember__debug@4.0.8(@babel/core@7.28.3)': dependencies: '@types/ember__object': 4.0.12(@babel/core@7.28.3) @@ -10150,6 +10262,10 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__engine@3.16.9': + dependencies: + '@types/ember__object': 3.12.13 + '@types/ember__engine@4.0.11(@babel/core@7.28.3)': dependencies: '@types/ember__object': 4.0.12(@babel/core@7.28.3) @@ -10158,8 +10274,14 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__error@3.16.6': {} + '@types/ember__error@4.0.6': {} + '@types/ember__object@3.12.13': + dependencies: + '@types/rsvp': 4.0.9 + '@types/ember__object@4.0.12(@babel/core@7.28.3)': dependencies: '@types/ember': 4.0.11(@babel/core@7.28.3) @@ -10170,8 +10292,17 @@ snapshots: '@types/ember__owner@4.0.9': {} + '@types/ember__polyfills@3.12.7': {} + '@types/ember__polyfills@4.0.6': {} + '@types/ember__routing@3.16.23': + dependencies: + '@types/ember__component': 3.16.14 + '@types/ember__controller': 3.16.14 + '@types/ember__object': 3.12.13 + '@types/ember__service': 3.16.9 + '@types/ember__routing@4.0.22(@babel/core@7.28.3)': dependencies: '@types/ember': 4.0.11(@babel/core@7.28.3) @@ -10182,6 +10313,8 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__runloop@3.16.10': {} + '@types/ember__runloop@4.0.10(@babel/core@7.28.3)': dependencies: '@types/ember': 4.0.11(@babel/core@7.28.3) @@ -10189,6 +10322,10 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__service@3.16.9': + dependencies: + '@types/ember__object': 3.12.13 + '@types/ember__service@4.0.9(@babel/core@7.28.3)': dependencies: '@types/ember__object': 4.0.12(@babel/core@7.28.3) @@ -10196,8 +10333,14 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__string@2.0.7': + dependencies: + '@types/ember__template': 3.16.7 + '@types/ember__string@3.0.15': {} + '@types/ember__template@3.16.7': {} + '@types/ember__template@4.0.7': {} '@types/ember__test-helpers@2.9.3(@babel/core@7.28.3)(@glint/environment-ember-loose@0.9.7(@glimmer/component@1.1.2(@babel/core@7.28.3))(ember-cli-htmlbars@6.3.0)(ember-modifier@4.2.2(@babel/core@7.28.3)))(ember-source@4.12.4(@babel/core@7.28.3)(@glimmer/component@1.1.2(@babel/core@7.28.3))(webpack@5.101.2))': @@ -10210,6 +10353,10 @@ snapshots: - ember-source - supports-color + '@types/ember__test@3.16.7': + dependencies: + '@types/ember__application': 3.16.10 + '@types/ember__test@4.0.6(@babel/core@7.28.3)': dependencies: '@types/ember__application': 4.0.11(@babel/core@7.28.3) @@ -10217,6 +10364,8 @@ snapshots: - '@babel/core' - supports-color + '@types/ember__utils@3.16.8': {} + '@types/ember__utils@4.0.7(@babel/core@7.28.3)': dependencies: '@types/ember': 4.0.11(@babel/core@7.28.3) @@ -10282,6 +10431,10 @@ snapshots: '@types/http-errors@2.0.5': {} + '@types/jquery@3.5.32': + dependencies: + '@types/sizzle': 2.3.9 + '@types/json-schema@7.0.15': {} '@types/mdast@4.0.4': @@ -10330,6 +10483,8 @@ snapshots: '@types/node': 24.3.0 '@types/send': 0.17.5 + '@types/sizzle@2.3.9': {} + '@types/supports-color@8.1.3': {} '@types/symlink-or-copy@1.2.2': {} @@ -12581,6 +12736,19 @@ snapshots: - supports-color - webpack + ember-app-scheduler@7.0.1(@babel/core@7.28.3): + dependencies: + '@ember/test-waiters': 3.1.0 + '@types/ember': 3.16.14 + '@types/rsvp': 4.0.9 + ember-cli-babel: 7.26.11 + ember-cli-typescript: 4.2.1 + ember-compatibility-helpers: 1.2.7(@babel/core@7.28.3) + ember-destroyable-polyfill: 2.0.3(@babel/core@7.28.3) + transitivePeerDependencies: + - '@babel/core' + - supports-color + ember-arg-types@1.1.0(webpack@5.101.2): dependencies: '@embroider/macros': 1.18.1 @@ -13535,6 +13703,15 @@ snapshots: transitivePeerDependencies: - supports-color + ember-router-scroll@4.1.2(@babel/core@7.28.3): + dependencies: + ember-app-scheduler: 7.0.1(@babel/core@7.28.3) + ember-cli-babel: 7.26.11 + ember-compatibility-helpers: 1.2.7(@babel/core@7.28.3) + transitivePeerDependencies: + - '@babel/core' + - supports-color + ember-showdown-shiki@1.2.1(@babel/core@7.28.3)(showdown@2.1.0): dependencies: '@embroider/addon-shim': 1.10.0 From 7c92c36ece065e913feb1bc94bdcb5110c6eb9d4 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Mon, 18 Aug 2025 20:23:08 -0400 Subject: [PATCH 03/10] Fix so wrapped anchor links don't have extra left margin --- app/components/class-field-description.hbs | 4 ++-- app/styles/app.css | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/components/class-field-description.hbs b/app/components/class-field-description.hbs index 25bd66bd..3b6c70d9 100644 --- a/app/components/class-field-description.hbs +++ b/app/components/class-field-description.hbs @@ -1,6 +1,6 @@ {{! template-lint-disable no-invalid-interactive }} -
-

+
+

{{@field.name}} {{#if @field.params}} diff --git a/app/styles/app.css b/app/styles/app.css index 699f2836..c1ccad5d 100644 --- a/app/styles/app.css +++ b/app/styles/app.css @@ -105,8 +105,15 @@ li.toc-heading:first-child { margin-top: var(--spacing-2); } +.class-field-description--header { + display: flex; + align-items: center; + flex-wrap: wrap; + column-gap: var(--spacing-1); +} + a.class-field-description--link { - margin-left: 12px; + margin-left: 0; vertical-align: middle; background: none; cursor: pointer; @@ -139,6 +146,7 @@ dd { } .parameter-type, +.class-field-description .return-type, .return .return-type { font-style: italic; color: var(--color-gray-600); From 198e7b78440be21b1c2bd0532ec199d23a2a1d45 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Mon, 18 Aug 2025 20:23:24 -0400 Subject: [PATCH 04/10] Give the anchor link an aria-label --- app/components/class-field-description.hbs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/components/class-field-description.hbs b/app/components/class-field-description.hbs index 3b6c70d9..8f94a53c 100644 --- a/app/components/class-field-description.hbs +++ b/app/components/class-field-description.hbs @@ -16,9 +16,8 @@ {{#if @field.deprecated}} deprecated {{/if}} - {{!-- TODO: Fix this link for a11y --}} - - {{svg-jar 'link' width='20px' height='20px'}} + + {{svg-jar 'link' width='20px' height='20px' aria-hidden='true'}}

{{#if @model.module}} From fe4f2391b6a3e378b68722c2915f7857ee015eb9 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Tue, 19 Aug 2025 15:13:28 -0400 Subject: [PATCH 05/10] Restore missing module links (model was undefined) --- app/components/events.hbs | 2 +- app/components/methods.hbs | 2 +- app/components/properties.hbs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/components/events.hbs b/app/components/events.hbs index 60a374b3..48eea01e 100644 --- a/app/components/events.hbs +++ b/app/components/events.hbs @@ -1,5 +1,5 @@ {{#each filteredModel.events as |event|}} - + {{/each}} diff --git a/app/components/methods.hbs b/app/components/methods.hbs index f9d0c2c0..e60112c5 100644 --- a/app/components/methods.hbs +++ b/app/components/methods.hbs @@ -1,5 +1,5 @@ {{#each filteredModel.methods as |method|}} - + {{/each}} diff --git a/app/components/properties.hbs b/app/components/properties.hbs index 9929a619..54bc2cd8 100644 --- a/app/components/properties.hbs +++ b/app/components/properties.hbs @@ -1,5 +1,5 @@ {{#each filteredModel.properties as |property|}} - + {{/each}} From 0c4b0769129ed53da6ead5da4395d1253a10d8a3 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Mon, 25 Aug 2025 15:42:48 -0400 Subject: [PATCH 06/10] Make return types and args more distinguishable --- app/components/class-field-description.hbs | 16 ++++++++-------- app/styles/app.css | 4 ++++ tests/acceptance/function-test.js | 8 +++----- .../components/class-field-description-test.js | 2 +- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app/components/class-field-description.hbs b/app/components/class-field-description.hbs index 8f94a53c..4fcc7300 100644 --- a/app/components/class-field-description.hbs +++ b/app/components/class-field-description.hbs @@ -1,15 +1,15 @@ {{! template-lint-disable no-invalid-interactive }}

- {{@field.name}} - {{#if @field.params}} - - ({{join ', ' (map-by 'name' @field.params)}}) + + + {{@field.name}} - {{/if}} - {{#if @field.return}} - {{@field.return.type}} - {{/if}} + {{#if @field.params}}({{join ', ' (map-by 'name' @field.params)}}){{/if}} + {{#if @field.return}} + : {{@field.return.type}} + {{/if}} + {{#if @field.access}} {{@field.access}} {{/if}} diff --git a/app/styles/app.css b/app/styles/app.css index c1ccad5d..ffef6fcd 100644 --- a/app/styles/app.css +++ b/app/styles/app.css @@ -145,6 +145,10 @@ dd { margin: 0; } +.class-field-description .args { + font-weight: var(--font-weight-2); +} + .parameter-type, .class-field-description .return-type, .return .return-type { diff --git a/tests/acceptance/function-test.js b/tests/acceptance/function-test.js index df218328..fcb1e10f 100644 --- a/tests/acceptance/function-test.js +++ b/tests/acceptance/function-test.js @@ -21,10 +21,8 @@ module('Acceptance | Function', function (hooks) { await visit('ember/3.28/functions/@ember%2Fapplication/getOwner'); assert.dom('.method').exists({ count: 1 }, 'Single function per page'); - assert.equal( - find('.method .method-name').innerText, - 'getOwner', - 'Correct function is shown' - ); + assert + .dom('.method .method-name') + .hasText('getOwner', 'Correct function is shown'); }); }); diff --git a/tests/integration/components/class-field-description-test.js b/tests/integration/components/class-field-description-test.js index 42f1a501..94ddd68a 100644 --- a/tests/integration/components/class-field-description-test.js +++ b/tests/integration/components/class-field-description-test.js @@ -28,7 +28,7 @@ module('Integration | Component | class field description', function (hooks) { assert.dom('.method-name').hasText('concat'); assert.dom(findAll('.access')[0]).hasText('public'); assert.dom(findAll('.access')[1]).hasText('deprecated'); - assert.dom(findAll('.args')[0]).hasText('(param1, param2, param3)'); + assert.dom(findAll('.args')[0]).hasText('param1, param2, param3'); }); test('parameter props are displayed', async function (assert) { From 6ac7c2f84d15fd0f87f301f8f379012e4d2ffb61 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Mon, 25 Aug 2025 17:29:29 -0400 Subject: [PATCH 07/10] Add additional redirects for index pages as well as individual method and property and event routes --- public/_redirects | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/public/_redirects b/public/_redirects index 713119b0..ededb2ef 100644 --- a/public/_redirects +++ b/public/_redirects @@ -1,12 +1,46 @@ +# Old-style ?anchor=... URLs to new-style #:... URLs for classes /:project/:version/classes/:class/methods/* anchor=:anchor /:project/:version/classes/:class#:anchor 301! /:project/:version/classes/:class/properties/* anchor=:anchor /:project/:version/classes/:class#:anchor 301! /:project/:version/classes/:class/events/* anchor=:anchor /:project/:version/classes/:class#:anchor 301! +# Old-style classes/Application/methods/foo to new-style classes/Application#foo +/:project/:version/classes/:class/methods/:method /:project/:version/classes/:class#:method 301! +/:project/:version/classes/:class/properties/:property /:project/:version/classes/:class#:property 301! +/:project/:version/classes/:class/events/:event /:project/:version/classes/:class#:event 301! + +# Index page redirects for classes +/:project/:version/classes/:class/methods/ /:project/:version/classes/:class 301! +/:project/:version/classes/:class/properties/ /:project/:version/classes/:class 301! +/:project/:version/classes/:class/events/ /:project/:version/classes/:class 301! + +# Old-style ?anchor=... URLs to new-style #:... URLs for namespaces /:project/:version/namespaces/:namespace/methods/* anchor=:anchor /:project/:version/namespaces/:namespace#:anchor 301! /:project/:version/namespaces/:namespace/properties/* anchor=:anchor /:project/:version/namespaces/:namespace#:anchor 301! /:project/:version/namespaces/:namespace/events/* anchor=:anchor /:project/:version/namespaces/:namespace#:anchor 301! +# Old-style namespaces/Ember.FEATURES/methods/foo to new-style namespaces/Ember.FEATURES#foo +/:project/:version/namespaces/:namespace/methods/:method /:project/:version/namespaces/:namespace#:method 301! +/:project/:version/namespaces/:namespace/properties/:property /:project/:version/namespaces/:namespace#:property 301! +/:project/:version/namespaces/:namespace/events/:event /:project/:version/namespaces/:namespace#:event 301! + +# Index page redirects for namespaces +/:project/:version/namespaces/:namespace/methods/ /:project/:version/namespaces/:namespace 301! +/:project/:version/namespaces/:namespace/properties/ /:project/:version/namespaces/:namespace 301! +/:project/:version/namespaces/:namespace/events/ /:project/:version/namespaces/:namespace 301! + +# Old-style ?anchor=... URLs to new-style #:... URLs for modules (but not sure these were ever used) /:project/:version/modules/:module/methods/* anchor=:anchor /:project/:version/modules/:module#:anchor 301! /:project/:version/modules/:module/properties/* anchor=:anchor /:project/:version/modules/:module#:anchor 301! /:project/:version/modules/:module/events/* anchor=:anchor /:project/:version/modules/:module#:anchor 301! + +# Old-style modules/Ember.String/methods/foo to new-style modules/Ember.String#foo +/:project/:version/modules/:module/methods/:method /:project/:version/modules/:module#:method 301! +/:project/:version/modules/:module/properties/:property /:project/:version/modules/:module#:property 301! +/:project/:version/modules/:module/events/:event /:project/:version/modules/:module#:event 301! + +# Index page redirects for modules +/:project/:version/modules/:module/methods/ /:project/:version/modules/:module 301! +/:project/:version/modules/:module/properties/ /:project/:version/modules/:module 301! +/:project/:version/modules/:module/events/ /:project/:version/modules/:module 301! + /* /index.html 200 From 85f1b02d0c8c5f4b366847ab8f05911ffdc3b858 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Mon, 25 Aug 2025 19:19:12 -0400 Subject: [PATCH 08/10] Remove vestiges of routes that were removed --- app/controllers/events.js | 7 ---- app/controllers/methods.js | 7 ---- app/controllers/project-version.js | 36 ------------------- .../project-version/classes/class/events.js | 1 - .../project-version/classes/class/index.js | 16 --------- .../project-version/classes/class/methods.js | 1 - .../classes/class/properties.js | 1 - .../project-version/modules/module/events.js | 1 - .../project-version/modules/module/methods.js | 1 - .../modules/module/properties.js | 1 - .../namespaces/namespace/events.js | 1 - .../namespaces/namespace/index.js | 3 -- .../namespaces/namespace/methods.js | 1 - .../namespaces/namespace/properties.js | 1 - app/controllers/properties.js | 7 ---- app/router.js | 14 ++------ 16 files changed, 2 insertions(+), 97 deletions(-) delete mode 100644 app/controllers/events.js delete mode 100644 app/controllers/methods.js delete mode 100644 app/controllers/project-version/classes/class/events.js delete mode 100644 app/controllers/project-version/classes/class/index.js delete mode 100644 app/controllers/project-version/classes/class/methods.js delete mode 100644 app/controllers/project-version/classes/class/properties.js delete mode 100644 app/controllers/project-version/modules/module/events.js delete mode 100644 app/controllers/project-version/modules/module/methods.js delete mode 100644 app/controllers/project-version/modules/module/properties.js delete mode 100644 app/controllers/project-version/namespaces/namespace/events.js delete mode 100644 app/controllers/project-version/namespaces/namespace/index.js delete mode 100644 app/controllers/project-version/namespaces/namespace/methods.js delete mode 100644 app/controllers/project-version/namespaces/namespace/properties.js delete mode 100644 app/controllers/properties.js diff --git a/app/controllers/events.js b/app/controllers/events.js deleted file mode 100644 index d04378df..00000000 --- a/app/controllers/events.js +++ /dev/null @@ -1,7 +0,0 @@ -import { inject as service } from '@ember/service'; -import Controller from '@ember/controller'; - -export default class EventsController extends Controller { - @service - filterData; -} diff --git a/app/controllers/methods.js b/app/controllers/methods.js deleted file mode 100644 index 408cf282..00000000 --- a/app/controllers/methods.js +++ /dev/null @@ -1,7 +0,0 @@ -import { inject as service } from '@ember/service'; -import Controller from '@ember/controller'; - -export default class MethodsController extends Controller { - @service - filterData; -} diff --git a/app/controllers/project-version.js b/app/controllers/project-version.js index 12a0c59b..e32ac35d 100644 --- a/app/controllers/project-version.js +++ b/app/controllers/project-version.js @@ -25,9 +25,6 @@ export default class ProjectVersionController extends Controller { @controller('project-version.classes.class') classController; @controller('project-version.modules.module') moduleController; @controller('project-version.namespaces.namespace') namespaceController; - @controller('project-version.classes.class.methods') methodsController; - @controller('project-version.classes.class.events') eventsController; - @controller('project-version.classes.class.properties') propertiesController; @alias('filterData.sideNav.showPrivate') showPrivateClasses; @@ -159,39 +156,6 @@ export default class ProjectVersionController extends Controller { endingRoute = `namespaces/${namespaceName}`; break; } - case 'project-version.classes.class.methods': { - let className = this._getEncodedNameForCurrentClass(); - endingRoute = `classes/${className}/methods`; - break; - } - case 'project-version.classes.class.events': { - let className = this._getEncodedNameForCurrentClass(); - endingRoute = `classes/${className}/events`; - break; - } - case 'project-version.classes.class.properties': { - let className = this._getEncodedNameForCurrentClass(); - endingRoute = `classes/${className}/properties`; - break; - } - case 'project-version.classes.class.methods.method': { - let className = this._getEncodedNameForCurrentClass(); - let methodName = this.methodsController.anchor; - endingRoute = `classes/${className}/methods/${methodName}?anchor=${methodName}`; - break; - } - case 'project-version.classes.class.events.event': { - let className = this._getEncodedNameForCurrentClass(); - let eventName = this.eventsController.anchor; - endingRoute = `classes/${className}/events/${eventName}?anchor=${eventName}`; - break; - } - case 'project-version.classes.class.properties.property': { - let className = this._getEncodedNameForCurrentClass(); - let propertyName = this.propertiesController.anchor; - endingRoute = `classes/${className}/properties/${propertyName}?anchor=${propertyName}`; - break; - } default: endingRoute = ''; break; diff --git a/app/controllers/project-version/classes/class/events.js b/app/controllers/project-version/classes/class/events.js deleted file mode 100644 index bcb0e0f2..00000000 --- a/app/controllers/project-version/classes/class/events.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '../../../events'; diff --git a/app/controllers/project-version/classes/class/index.js b/app/controllers/project-version/classes/class/index.js deleted file mode 100644 index b47092db..00000000 --- a/app/controllers/project-version/classes/class/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import { inject as service } from '@ember/service'; -import Controller from '@ember/controller'; -import { parentName } from '../../../../utils/parent-name'; - -export default class IndexController extends Controller { - @service - filterData; - - /** @type {import('@ember/routing/router-service').default} */ - @service - router; - - get parentName() { - return parentName(this.router.currentRouteName); - } -} diff --git a/app/controllers/project-version/classes/class/methods.js b/app/controllers/project-version/classes/class/methods.js deleted file mode 100644 index 9b7c120e..00000000 --- a/app/controllers/project-version/classes/class/methods.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '../../../methods'; diff --git a/app/controllers/project-version/classes/class/properties.js b/app/controllers/project-version/classes/class/properties.js deleted file mode 100644 index 12104d58..00000000 --- a/app/controllers/project-version/classes/class/properties.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '../../../properties'; diff --git a/app/controllers/project-version/modules/module/events.js b/app/controllers/project-version/modules/module/events.js deleted file mode 100644 index bcb0e0f2..00000000 --- a/app/controllers/project-version/modules/module/events.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '../../../events'; diff --git a/app/controllers/project-version/modules/module/methods.js b/app/controllers/project-version/modules/module/methods.js deleted file mode 100644 index 9b7c120e..00000000 --- a/app/controllers/project-version/modules/module/methods.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '../../../methods'; diff --git a/app/controllers/project-version/modules/module/properties.js b/app/controllers/project-version/modules/module/properties.js deleted file mode 100644 index 12104d58..00000000 --- a/app/controllers/project-version/modules/module/properties.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '../../../properties'; diff --git a/app/controllers/project-version/namespaces/namespace/events.js b/app/controllers/project-version/namespaces/namespace/events.js deleted file mode 100644 index bcb0e0f2..00000000 --- a/app/controllers/project-version/namespaces/namespace/events.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '../../../events'; diff --git a/app/controllers/project-version/namespaces/namespace/index.js b/app/controllers/project-version/namespaces/namespace/index.js deleted file mode 100644 index ba6f71f5..00000000 --- a/app/controllers/project-version/namespaces/namespace/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import ClassIndexController from '../../classes/class/index'; - -export default class IndexController extends ClassIndexController {} diff --git a/app/controllers/project-version/namespaces/namespace/methods.js b/app/controllers/project-version/namespaces/namespace/methods.js deleted file mode 100644 index 9b7c120e..00000000 --- a/app/controllers/project-version/namespaces/namespace/methods.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '../../../methods'; diff --git a/app/controllers/project-version/namespaces/namespace/properties.js b/app/controllers/project-version/namespaces/namespace/properties.js deleted file mode 100644 index 12104d58..00000000 --- a/app/controllers/project-version/namespaces/namespace/properties.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '../../../properties'; diff --git a/app/controllers/properties.js b/app/controllers/properties.js deleted file mode 100644 index 18c3e2df..00000000 --- a/app/controllers/properties.js +++ /dev/null @@ -1,7 +0,0 @@ -import { inject as service } from '@ember/service'; -import Controller from '@ember/controller'; - -export default class PropertiesController extends Controller { - @service - filterData; -} diff --git a/app/router.js b/app/router.js index 7623462c..54b30dbf 100644 --- a/app/router.js +++ b/app/router.js @@ -41,35 +41,23 @@ AppRouter.map(function () { 'project-version', { path: '/:project/:project_version' }, function () { - // this.route('classes-redirect', {path: '/classes'}); - - // project-version.classes-redirect => project-version.classes.index - // project-version.class => project-version.classes.class this.route('classes', function () { this.route('class', { path: '/:class' }); }); - // this.route('class', {path: '/classes/:class'}, itemRoutes); this.route('functions', function () { this.route('function', { path: '/:module/:fn' }); }); // Namespace routes - // project-version.namespace => project-version.namespaces.namespace - // routes/project-version/namespace => routes/project-version/namespaces/namespace this.route('namespaces', function () { this.route('namespace', { path: '/:namespace' }); }); - // this.route('namespace', {path: '/namespaces/:namespace'}, itemRoutes); // Module routes - // project-version.module => project-version.modules.module - // routes/project-version/module => routes/project-version/modules/module - // routes/project-version/module/* => routes/project-version/modules/module/* this.route('modules', function () { this.route('module', { path: '/:module' }); }); - // this.route('module', {path: '/modules/:module'}, itemRoutes); } ); this.route('class', { path: '/classes/:class' }); @@ -94,6 +82,8 @@ MAYBE REDIRECTS /data/classes/:class /modules/:module /classes/:class + +See _redirects for netlify redirects */ export default AppRouter; From 9761236b810076247145d6e873a3c61e213e57c3 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Mon, 25 Aug 2025 19:50:16 -0400 Subject: [PATCH 09/10] Remove unused redirect code -- no evidence of `type` query param in use --- app/routes/project-version/classes/class.js | 23 +-------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/app/routes/project-version/classes/class.js b/app/routes/project-version/classes/class.js index 715f6f1f..9787c6b6 100644 --- a/app/routes/project-version/classes/class.js +++ b/app/routes/project-version/classes/class.js @@ -3,7 +3,6 @@ import { resolve, all } from 'rsvp'; import Route from '@ember/routing/route'; import { set } from '@ember/object'; -import { pluralize } from 'ember-inflector'; import getFullVersion from 'ember-api-docs/utils/get-full-version'; import createExcerpt from 'ember-api-docs/utils/create-excerpt'; @@ -60,27 +59,7 @@ export default class ClassRoute extends Route { }); } - redirect(model, transition) { - const lookupParams = (routeName) => { - let route = transition.routeInfos.find(({ name }) => name === routeName); - return route ? route.params : {}; - }; - - let { - to: { queryParams }, - } = transition; - - if (queryParams.anchor && queryParams.type) { - let type = queryParams.type; - this.router.transitionTo( - `project-version.classes.class.${pluralize(type)}.${type}`, - lookupParams('project-version').project, - lookupParams('project-version').project_version, - lookupParams('project-version.classes.class').class, - queryParams.anchor - ); - } - + redirect(model) { if (model.isError) { let error = new Error( 'Error retrieving model in routes/project-version/classes/class' From 9d74f33ac8ebb6d5af0724ac55ec5ae57a16a742 Mon Sep 17 00:00:00 2001 From: Katie Gengler Date: Tue, 26 Aug 2025 00:40:16 -0400 Subject: [PATCH 10/10] Force a full reload when a ?anchor ends up in the not found to get netlify redirects. This is an issue when links within the app still reference ?anchor (perhaps from markdown). Our alternatives are to return to ?anchor or to add support to redirecting to #anchors to the Ember Router. --- app/routes/not-found.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/routes/not-found.js b/app/routes/not-found.js index 969fad2b..09f96ec0 100644 --- a/app/routes/not-found.js +++ b/app/routes/not-found.js @@ -11,4 +11,23 @@ export default class NotFoundRoute extends Route { this.fastboot.response.statusCode = 404; } + + redirect() { + if (typeof window === 'undefined' || !window.location) { + return; + } + const url = new URL(window.location.href); + const anchor = url.searchParams.get('anchor'); + const redirected = url.searchParams.get('redirected'); + if (anchor && !redirected) { + url.searchParams.set('redirected', '1'); + // If we get here with an anchor query param, it means something in the + // api docs app is continuing to link to it (sometimes in the markdown) + // Force full reload to get netlify redirects + window.location.replace(url.toString()); + // A more elegant solution would be to restore the various routes that + // handled ?anchor previously and redirect from there but that would + // necessitate adding support to the Ember Router to redirect to #anchors + } + } }