@supersoniks/concorde 5.1.2 → 5.1.3-immutable.1
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.
- package/.agents/skills/concorde-docs/SKILL.md +1 -1
- package/.claude/skills +1 -0
- package/.github/workflows/ci.yml +21 -0
- package/.github-export-ignore +30 -0
- package/CONTRIBUTING.md +59 -0
- package/DEV.md +54 -0
- package/LICENSE +21 -0
- package/OPEN_SOURCE_CHECKPOINT.md +133 -0
- package/README.md +1 -1
- package/ai/README.md +29 -41
- package/ai/skills/concorde/SKILL.md +54 -324
- package/ai/skills/concorde/rules/composition.md +32 -0
- package/ai/skills/concorde/rules/data.md +47 -0
- package/ai/skills/concorde/rules/http.md +25 -0
- package/ai/skills/concorde/rules/lists-forms.md +35 -0
- package/ai/skills/concorde/rules/styling.md +46 -0
- package/ai/skills/concorde/rules/troubleshooting.md +45 -0
- package/build-infos.json +1 -1
- package/concorde-core.bundle.js +177 -177
- package/concorde-core.es.js +4993 -4833
- package/custom-elements-manifest.public.config.mjs +8 -0
- package/{.tmp-cem/custom-elements.json → custom-elements.json} +11722 -8868
- package/dist/concorde-core.bundle.js +177 -177
- package/dist/concorde-core.es.js +4993 -4833
- package/dist/docs-mock-api-sw.js +58 -223
- package/dist/docs-mock-api-sw.js.map +4 -4
- package/dist/img/og-concorde.jpg +0 -0
- package/dist/robots.txt +11 -10
- package/docs/assets/index-CD4WyL6o.css +1 -0
- package/docs/assets/index-D_alEsng.js +12122 -0
- package/docs/crawl/core/components/functional/date/date.html +190 -0
- package/docs/crawl/core/components/functional/fetch/fetch.html +109 -0
- package/docs/crawl/core/components/functional/if/if.html +27 -0
- package/docs/crawl/core/components/functional/jsonata/jsonata.html +79 -0
- package/docs/crawl/core/components/functional/list/list.html +70 -0
- package/docs/crawl/core/components/functional/mix/mix.html +45 -0
- package/docs/crawl/core/components/functional/queue/queue.html +96 -0
- package/docs/crawl/core/components/functional/router/router.html +106 -0
- package/docs/{core → crawl/core}/components/functional/sdui/sdui-extension-points.html +8 -9
- package/docs/crawl/core/components/functional/sdui/sdui.html +368 -0
- package/docs/crawl/core/components/functional/states/states.html +66 -0
- package/docs/crawl/core/components/functional/submit/submit.html +160 -0
- package/docs/{core → crawl/core}/components/functional/subscriber/subscriber.html +5 -6
- package/docs/crawl/core/components/functional/value/value.html +51 -0
- package/docs/{core → crawl/core}/components/ui/alert/alert.html +63 -53
- package/docs/{core → crawl/core}/components/ui/alert-messages/alert-messages.html +5 -6
- package/docs/{core → crawl/core}/components/ui/badge/badge.html +33 -33
- package/docs/crawl/core/components/ui/button/button.html +150 -0
- package/docs/crawl/core/components/ui/captcha/captcha.html +112 -0
- package/docs/{core → crawl/core}/components/ui/card/card.html +11 -12
- package/docs/{core → crawl/core}/components/ui/divider/divider.html +14 -14
- package/docs/crawl/core/components/ui/form/checkbox/checkbox.html +73 -0
- package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +266 -0
- package/docs/{core → crawl/core}/components/ui/form/form-actions/form-actions.html +23 -23
- package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +121 -0
- package/docs/crawl/core/components/ui/form/input/input.html +109 -0
- package/docs/crawl/core/components/ui/form/input-autocomplete/input-autocomplete.html +38 -0
- package/docs/crawl/core/components/ui/form/radio/radio.html +56 -0
- package/docs/crawl/core/components/ui/form/select/select.html +73 -0
- package/docs/crawl/core/components/ui/form/switch/switch.html +56 -0
- package/docs/crawl/core/components/ui/form/textarea/textarea.html +59 -0
- package/docs/crawl/core/components/ui/group/group.html +104 -0
- package/docs/{core → crawl/core}/components/ui/icon/icon.html +9 -10
- package/docs/crawl/core/components/ui/image/image.html +298 -0
- package/docs/{core → crawl/core}/components/ui/link/link.html +11 -12
- package/docs/crawl/core/components/ui/loader/loader.html +124 -0
- package/docs/{core → crawl/core}/components/ui/menu/menu.html +33 -34
- package/docs/crawl/core/components/ui/modal/modal.html +342 -0
- package/docs/crawl/core/components/ui/pop/pop.html +296 -0
- package/docs/{core → crawl/core}/components/ui/progress/progress.html +7 -8
- package/docs/crawl/core/components/ui/table/table.html +545 -0
- package/docs/crawl/core/components/ui/theme/theme.html +131 -0
- package/docs/crawl/core/components/ui/toast/toast.html +233 -0
- package/docs/crawl/core/components/ui/tooltip/tooltip.html +140 -0
- package/docs/{docs/getting-started → crawl/docs/_core-concept}/dataFlow.html +29 -26
- package/docs/crawl/docs/_core-concept/overview.html +66 -0
- package/docs/crawl/docs/_core-concept/subscriber.html +75 -0
- package/docs/crawl/docs/_decorators/ancestor-attribute.html +117 -0
- package/docs/crawl/docs/_decorators/auto-subscribe.html +202 -0
- package/docs/crawl/docs/_decorators/bind.html +141 -0
- package/docs/crawl/docs/_decorators/get.html +149 -0
- package/docs/crawl/docs/_decorators/handle.html +165 -0
- package/docs/crawl/docs/_decorators/on-assign.html +355 -0
- package/docs/crawl/docs/_decorators/patch.html +78 -0
- package/docs/crawl/docs/_decorators/post.html +139 -0
- package/docs/crawl/docs/_decorators/publish.html +61 -0
- package/docs/crawl/docs/_decorators/put.html +78 -0
- package/docs/crawl/docs/_decorators/subscribe.html +109 -0
- package/docs/crawl/docs/_decorators/wait-for-ancestors.html +137 -0
- package/docs/crawl/docs/_directives/sub.html +93 -0
- package/docs/{docs/getting-started → crawl/docs/_getting-started}/ai-agents.html +11 -12
- package/docs/crawl/docs/_getting-started/concorde-manual-install.html +100 -0
- package/docs/crawl/docs/_getting-started/concorde-outside.html +58 -0
- package/docs/{docs/getting-started → crawl/docs/_getting-started}/create-a-component.html +14 -11
- package/docs/{docs/getting-started → crawl/docs/_getting-started}/my-first-component.html +22 -13
- package/docs/crawl/docs/_getting-started/my-first-subscriber.html +110 -0
- package/docs/crawl/docs/_getting-started/pubsub.html +62 -0
- package/docs/crawl/docs/_getting-started/start.html +76 -0
- package/docs/{docs/getting-started → crawl/docs/_getting-started}/theming.html +9 -10
- package/docs/{docs/misc → crawl/docs/_misc}/api-configuration.html +18 -18
- package/docs/{docs/misc → crawl/docs/_misc}/dataProviderKey.html +11 -12
- package/docs/{docs/misc → crawl/docs/_misc}/docs-mock-api.html +28 -25
- package/docs/{docs/misc → crawl/docs/_misc}/dynamic-path.html +15 -16
- package/docs/{docs/misc → crawl/docs/_misc}/endpoint.html +15 -16
- package/docs/crawl/docs/_misc/formelement-subscriber-removal.html +138 -0
- package/docs/{docs/misc → crawl/docs/_misc}/html-integration.html +15 -12
- package/docs/crawl/hubs/decorators.html +547 -0
- package/docs/crawl/hubs/form-components.html +381 -0
- package/docs/crawl/hubs/remote-data.html +452 -0
- package/docs/crawl/index.html +103 -0
- package/docs/docs-mock-api-sw.js +223 -58
- package/docs/docs-mock-api-sw.js.map +4 -4
- package/docs/index.html +68 -95
- package/docs/llms-full.txt +3610 -2231
- package/docs/llms.txt +86 -94
- package/docs/robots.txt +10 -11
- package/docs/sitemap.xml +84 -78
- package/docs/src/core/components/functional/date/date.md +231 -91
- package/docs/src/core/components/functional/fetch/fetch.md +83 -66
- package/docs/src/core/components/functional/if/if.md +3 -28
- package/docs/src/core/components/functional/jsonata/jsonata.md +37 -42
- package/docs/src/core/components/functional/list/list.md +43 -99
- package/docs/src/core/components/functional/mix/mix.md +26 -31
- package/docs/src/core/components/functional/queue/queue.md +61 -40
- package/docs/src/core/components/functional/router/router.md +65 -64
- package/docs/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
- package/docs/src/core/components/functional/sdui/component-catalog.json +1 -1
- package/docs/src/core/components/functional/sdui/example.json +86 -19
- package/docs/src/core/components/functional/sdui/sdui-extension-points.md +1 -1
- package/docs/src/core/components/functional/sdui/sdui.md +358 -187
- package/docs/src/core/components/functional/states/states.md +61 -86
- package/docs/src/core/components/functional/submit/submit.md +72 -64
- package/docs/src/core/components/functional/value/value.md +22 -34
- package/docs/src/core/components/ui/alert/alert.md +58 -48
- package/docs/src/core/components/ui/badge/badge.md +34 -27
- package/docs/src/core/components/ui/button/button.md +106 -139
- package/docs/src/core/components/ui/captcha/captcha.md +32 -17
- package/docs/src/core/components/ui/card/card.md +6 -6
- package/docs/src/core/components/ui/divider/divider.md +11 -8
- package/docs/src/core/components/ui/form/checkbox/checkbox.md +42 -90
- package/docs/src/core/components/ui/form/fieldset/fieldset.md +75 -31
- package/docs/src/core/components/ui/form/form-actions/form-actions.md +16 -14
- package/docs/src/core/components/ui/form/form-layout/form-layout.md +29 -19
- package/docs/src/core/components/ui/form/input/input.md +95 -95
- package/docs/src/core/components/ui/form/input-autocomplete/input-autocomplete.md +29 -0
- package/docs/src/core/components/ui/form/radio/radio.md +34 -55
- package/docs/src/core/components/ui/form/select/select.md +45 -60
- package/docs/src/core/components/ui/form/switch/switch.md +34 -57
- package/docs/src/core/components/ui/form/textarea/textarea.md +38 -55
- package/docs/src/core/components/ui/group/group.md +33 -35
- package/docs/src/core/components/ui/icon/icon.md +4 -4
- package/docs/src/core/components/ui/image/image.md +107 -41
- package/docs/src/core/components/ui/link/link.md +6 -6
- package/docs/src/core/components/ui/loader/loader.md +55 -30
- package/docs/src/core/components/ui/menu/menu.md +27 -27
- package/docs/src/core/components/ui/modal/modal.md +96 -72
- package/docs/src/core/components/ui/pop/pop.md +158 -80
- package/docs/src/core/components/ui/progress/progress.md +2 -2
- package/docs/src/core/components/ui/table/table.md +255 -91
- package/docs/src/core/components/ui/theme/theme.md +36 -11
- package/docs/src/core/components/ui/toast/toast.md +117 -48
- package/docs/src/core/components/ui/tooltip/tooltip.md +62 -27
- package/docs/{docs/getting-started → src/docs/_core-concept}/dataFlow.md +18 -17
- package/docs/src/docs/_core-concept/overview.md +57 -0
- package/docs/src/docs/_core-concept/subscriber.md +75 -0
- package/docs/src/docs/_decorators/ancestor-attribute.md +128 -0
- package/docs/src/docs/_decorators/auto-subscribe.md +202 -0
- package/docs/src/docs/_decorators/bind.md +167 -0
- package/docs/src/docs/_decorators/get.md +162 -0
- package/docs/src/docs/_decorators/handle.md +175 -0
- package/docs/src/docs/_decorators/on-assign.md +390 -0
- package/docs/src/docs/_decorators/patch.md +70 -0
- package/docs/src/docs/_decorators/post.md +146 -0
- package/docs/src/docs/_decorators/publish.md +55 -0
- package/docs/src/docs/_decorators/put.md +70 -0
- package/docs/src/docs/_decorators/subscribe.md +100 -0
- package/docs/src/docs/_decorators/wait-for-ancestors.md +163 -0
- package/docs/src/docs/_directives/sub.md +91 -0
- package/docs/src/docs/{getting-started → _getting-started}/ai-agents.md +3 -3
- package/docs/src/docs/_getting-started/concorde-manual-install.md +133 -0
- package/docs/src/docs/_getting-started/concorde-outside.md +33 -0
- package/docs/{docs/getting-started → src/docs/_getting-started}/create-a-component.md +6 -3
- package/docs/src/docs/{getting-started → _getting-started}/my-first-component.md +14 -5
- package/docs/src/docs/_getting-started/my-first-subscriber.md +120 -0
- package/docs/src/docs/_getting-started/pubsub.md +37 -0
- package/docs/src/docs/{getting-started → _getting-started}/start.md +13 -1
- package/docs/src/docs/{getting-started → _getting-started}/theming.md +2 -2
- package/docs/src/docs/{misc → _misc}/api-configuration.md +12 -10
- package/docs/src/docs/{misc → _misc}/dataProviderKey.md +4 -4
- package/docs/{docs/misc → src/docs/_misc}/docs-mock-api.md +13 -12
- package/docs/{docs/misc → src/docs/_misc}/dynamic-path.md +8 -8
- package/docs/{docs/misc → src/docs/_misc}/endpoint.md +8 -8
- package/docs/src/docs/_misc/formelement-subscriber-removal.md +115 -0
- package/docs/{docs/misc → src/docs/_misc}/html-integration.md +5 -4
- package/docs/src/docs/search/docs-search.json +4375 -2420
- package/docs/src/tsconfig.declarations.json +22 -0
- package/docs/src/tsconfig.emit.json +23 -0
- package/docs/src/tsconfig.json +2 -23
- package/gitlab/job_github_mirror.sh +39 -0
- package/index.html +89 -0
- package/package.json +22 -4
- package/public/img/og-concorde.jpg +0 -0
- package/scripts/ai-init.mjs +104 -379
- package/scripts/ai-init.test.mjs +81 -239
- package/scripts/docs-markdown-vite-plugin.ts +11 -5
- package/scripts/docs-public-url.mjs +6 -0
- package/scripts/docs.htaccess +7 -0
- package/scripts/generate-cem.mjs +244 -0
- package/scripts/generate-cem.test.mjs +122 -0
- package/scripts/generate-crawl-docs.mjs +29 -5
- package/scripts/generate-sdui-catalog.mjs +11 -10
- package/scripts/github-export.mjs +150 -0
- package/scripts/post-build-docs.js +3 -0
- package/scripts/post-build.mjs +0 -0
- package/scripts/pre-publish.mjs +2 -1
- package/scripts/site-pages.mjs +212 -0
- package/scripts/site-pages.test.mjs +116 -0
- package/site-pages/about.md +22 -0
- package/site-pages/privacy.md +32 -0
- package/src/core/components/functional/date/date.md +1 -1
- package/src/core/components/functional/example/example.ts +3 -1
- package/src/core/components/functional/if/if.ts +0 -0
- package/src/core/components/functional/list/list.demo.ts +0 -0
- package/src/core/components/functional/list/list.md +6 -2
- package/src/core/components/functional/list/list.ts +17 -4
- package/src/core/components/functional/mix/mix.md +0 -0
- package/src/core/components/functional/router/router.demo.ts +0 -0
- package/src/core/components/functional/router/router.ts +0 -0
- package/src/core/components/functional/sdui/SDUIDescriptorTransformer.ts +0 -0
- package/src/core/components/functional/sdui/component-catalog.gaps.json +1 -1
- package/src/core/components/functional/sdui/component-catalog.json +2 -2
- package/src/core/components/functional/sdui/example.json +0 -0
- package/src/core/components/functional/sdui/sdui-immutable.spec.ts +74 -0
- package/src/core/components/functional/sdui/sdui.ts +33 -8
- package/src/core/components/functional/sdui/types.ts +0 -0
- package/src/core/components/functional/states/states.ts +0 -0
- package/src/core/components/functional/submit/submit.spec.ts +60 -0
- package/src/core/components/functional/submit/submit.ts +6 -3
- package/src/core/components/functional/subscriber/subscriber.ts +0 -0
- package/src/core/components/functional/value/value.md +0 -0
- package/src/core/components/functional/value/value.ts +0 -0
- package/src/core/components/ui/_css/size.ts +0 -0
- package/src/core/components/ui/captcha/altchaStyles.ts +0 -0
- package/src/core/components/ui/card/card.md +1 -1
- package/src/core/components/ui/form/input/input.md +19 -1
- package/src/core/components/ui/form/input/input.ts +8 -2
- package/src/core/components/ui/form/radio/radio.md +14 -0
- package/src/core/components/ui/image/image.md +17 -17
- package/src/core/components/ui/modal/modal.md +2 -2
- package/src/core/decorators/subscriber/bind.ts +9 -14
- package/src/core/decorators/subscriber/subscribe.ts +15 -9
- package/src/core/decorators/subscriber/subscribe.type-test.ts +14 -5
- package/src/core/mixins/Subscriber.ts +0 -0
- package/src/core/utils/DataBindObserver.ts +0 -0
- package/src/core/utils/Objects.ts +0 -0
- package/src/core/utils/PublisherProxy.ts +166 -125
- package/src/core/utils/deepReadonly.spec.ts +66 -0
- package/src/core/utils/deepReadonly.ts +71 -0
- package/src/core/utils/immutableValue.spec.ts +54 -0
- package/src/core/utils/immutableValue.ts +102 -0
- package/src/core/utils/nestedDotForm.spec.ts +88 -0
- package/src/core/utils/publisherImmutable.spec.ts +76 -0
- package/src/core/utils/route.ts +0 -0
- package/src/core/utils/strictGet.spec.ts +61 -0
- package/src/core/utils/strictGet.ts +102 -0
- package/src/css.d.ts +19 -0
- package/src/docs/components/docs-demo-sources.ts +3 -3
- package/src/docs/decorators/bind.md +23 -24
- package/src/docs/docs-location.spec.ts +10 -0
- package/src/docs/docs-location.ts +10 -0
- package/src/docs/example/decorators-demo-bind-demos.ts +11 -28
- package/src/docs/example/docs-toggle-demos.ts +1 -1
- package/src/docs/example/users.ts +0 -0
- package/src/docs/getting-started/ai-agents.md +29 -55
- package/src/docs/getting-started/dataFlow.md +2 -2
- package/src/docs/home/home.ts +3 -1
- package/src/docs/misc/publisher-get-immutability-docs-crawl.json +902 -0
- package/src/docs/misc/publisher-get-immutability-docs-recheck.json +13 -0
- package/src/docs/misc/publisher-get-immutability-study.md +229 -0
- package/src/docs/navigation/navigation.ts +5 -1
- package/src/docs/search/docs-search.json +358 -58
- package/src/docs/search/markdown-renderer.ts +6 -1
- package/src/docs/tailwind/css/docs/content.css +4 -5
- package/src/tsconfig.declarations.json +22 -0
- package/src/tsconfig.emit.json +23 -0
- package/src/tsconfig.json +53 -5
- package/src/tsconfig.tsbuildinfo +1 -1
- package/.taste-skill/after/desktop-fold.jpg +0 -0
- package/.taste-skill/after/desktop-page-01.jpg +0 -0
- package/.taste-skill/after/desktop-page-02.jpg +0 -0
- package/.taste-skill/after/desktop-page-03.jpg +0 -0
- package/.taste-skill/after/mobile-fold.jpg +0 -0
- package/.taste-skill/after/mobile-page-01.jpg +0 -0
- package/.taste-skill/after/report.json +0 -4103
- package/.taste-skill/after/tablet-fold.jpg +0 -0
- package/.taste-skill/after/tablet-page-01.jpg +0 -0
- package/.taste-skill/after/tablet-page-02.jpg +0 -0
- package/.taste-skill/before/desktop-fold.jpg +0 -0
- package/.taste-skill/before/desktop-page-01.jpg +0 -0
- package/.taste-skill/before/desktop-page-02.jpg +0 -0
- package/.taste-skill/before/mobile-fold.jpg +0 -0
- package/.taste-skill/before/mobile-page-01.jpg +0 -0
- package/.taste-skill/before/report.json +0 -2556
- package/.taste-skill/before/tablet-fold.jpg +0 -0
- package/.taste-skill/before/tablet-page-01.jpg +0 -0
- package/.taste-skill/direction.json +0 -510
- package/.taste-skill/notes.md +0 -84
- package/.taste-skill/prod/desktop-fold.jpg +0 -0
- package/.taste-skill/prod/desktop-page-01.jpg +0 -0
- package/.taste-skill/prod/desktop-page-02.jpg +0 -0
- package/.taste-skill/prod/desktop-page-03.jpg +0 -0
- package/.taste-skill/prod/mobile-fold.jpg +0 -0
- package/.taste-skill/prod/mobile-page-01.jpg +0 -0
- package/.taste-skill/prod/mobile-page-02.jpg +0 -0
- package/.taste-skill/prod/report.json +0 -1973
- package/.taste-skill/prod/tablet-fold.jpg +0 -0
- package/.taste-skill/prod/tablet-page-01.jpg +0 -0
- package/.taste-skill/prod/tablet-page-02.jpg +0 -0
- package/AUDIT.md +0 -228
- package/PLAN-AMELIORATION.md +0 -220
- package/PLAN-DOCS-AGENTS.md +0 -80
- package/ai/AGENTS.md +0 -56
- package/ai/cursor/rules/concorde-menu.mdc +0 -15
- package/ai/cursor/rules/concorde-scope.mdc +0 -14
- package/ai/cursor/rules/concorde-theme.mdc +0 -13
- package/ai/cursor/rules/concorde.mdc +0 -66
- package/ai/jetbrains/rules/concorde.md +0 -53
- package/ai/skills/concorde-get-set-dp/SKILL.md +0 -194
- package/ai/skills/concorde-imports/SKILL.md +0 -78
- package/ai/skills/concorde-menu/SKILL.md +0 -74
- package/ai/skills/concorde-scope/SKILL.md +0 -70
- package/ai/skills/concorde-theme/SKILL.md +0 -57
- package/docs/.htaccess +0 -75
- package/docs/404.html +0 -15
- package/docs/404.md +0 -5
- package/docs/assets/index-BgG6FFPt.js +0 -11765
- package/docs/assets/index-x89XINSG.css +0 -1
- package/docs/core/components/functional/date/date.html +0 -211
- package/docs/core/components/functional/date/date.md +0 -150
- package/docs/core/components/functional/fetch/fetch.html +0 -180
- package/docs/core/components/functional/fetch/fetch.md +0 -108
- package/docs/core/components/functional/if/if.html +0 -65
- package/docs/core/components/functional/if/if.md +0 -34
- package/docs/core/components/functional/jsonata/jsonata.html +0 -110
- package/docs/core/components/functional/jsonata/jsonata.md +0 -61
- package/docs/core/components/functional/list/list.html +0 -198
- package/docs/core/components/functional/list/list.md +0 -121
- package/docs/core/components/functional/mix/mix.html +0 -78
- package/docs/core/components/functional/mix/mix.md +0 -46
- package/docs/core/components/functional/queue/queue.html +0 -155
- package/docs/core/components/functional/queue/queue.md +0 -51
- package/docs/core/components/functional/router/router.html +0 -154
- package/docs/core/components/functional/router/router.md +0 -93
- package/docs/core/components/functional/sdui/sdui-extension-points.md +0 -94
- package/docs/core/components/functional/sdui/sdui.html +0 -397
- package/docs/core/components/functional/sdui/sdui.md +0 -307
- package/docs/core/components/functional/states/states.html +0 -141
- package/docs/core/components/functional/states/states.md +0 -112
- package/docs/core/components/functional/submit/submit.html +0 -178
- package/docs/core/components/functional/submit/submit.md +0 -106
- package/docs/core/components/functional/subscriber/subscriber.md +0 -91
- package/docs/core/components/functional/translation/translation.html +0 -60
- package/docs/core/components/functional/translation/translation.md +0 -38
- package/docs/core/components/functional/value/value.html +0 -81
- package/docs/core/components/functional/value/value.md +0 -47
- package/docs/core/components/ui/alert/alert.md +0 -186
- package/docs/core/components/ui/alert-messages/alert-messages.md +0 -85
- package/docs/core/components/ui/badge/badge.md +0 -181
- package/docs/core/components/ui/button/button.html +0 -309
- package/docs/core/components/ui/button/button.md +0 -216
- package/docs/core/components/ui/captcha/captcha.html +0 -80
- package/docs/core/components/ui/captcha/captcha.md +0 -56
- package/docs/core/components/ui/card/card.md +0 -215
- package/docs/core/components/ui/divider/divider.md +0 -126
- package/docs/core/components/ui/form/checkbox/checkbox.html +0 -200
- package/docs/core/components/ui/form/checkbox/checkbox.md +0 -125
- package/docs/core/components/ui/form/fieldset/fieldset.html +0 -238
- package/docs/core/components/ui/form/fieldset/fieldset.md +0 -161
- package/docs/core/components/ui/form/form-actions/form-actions.md +0 -98
- package/docs/core/components/ui/form/form-layout/form-layout.html +0 -115
- package/docs/core/components/ui/form/form-layout/form-layout.md +0 -109
- package/docs/core/components/ui/form/input/input.html +0 -235
- package/docs/core/components/ui/form/input/input.md +0 -142
- package/docs/core/components/ui/form/radio/radio.html +0 -144
- package/docs/core/components/ui/form/radio/radio.md +0 -78
- package/docs/core/components/ui/form/select/select.html +0 -178
- package/docs/core/components/ui/form/select/select.md +0 -86
- package/docs/core/components/ui/form/switch/switch.html +0 -146
- package/docs/core/components/ui/form/switch/switch.md +0 -80
- package/docs/core/components/ui/form/textarea/textarea.html +0 -162
- package/docs/core/components/ui/form/textarea/textarea.md +0 -82
- package/docs/core/components/ui/group/group.html +0 -113
- package/docs/core/components/ui/group/group.md +0 -77
- package/docs/core/components/ui/icon/icon.md +0 -214
- package/docs/core/components/ui/image/image.html +0 -194
- package/docs/core/components/ui/image/image.md +0 -167
- package/docs/core/components/ui/link/link.md +0 -81
- package/docs/core/components/ui/loader/loader.html +0 -114
- package/docs/core/components/ui/loader/loader.md +0 -87
- package/docs/core/components/ui/menu/menu.md +0 -370
- package/docs/core/components/ui/modal/modal.html +0 -324
- package/docs/core/components/ui/modal/modal.md +0 -211
- package/docs/core/components/ui/pop/pop.html +0 -250
- package/docs/core/components/ui/pop/pop.md +0 -216
- package/docs/core/components/ui/progress/progress.md +0 -109
- package/docs/core/components/ui/table/table.html +0 -333
- package/docs/core/components/ui/table/table.md +0 -267
- package/docs/core/components/ui/theme/theme.html +0 -116
- package/docs/core/components/ui/theme/theme.md +0 -97
- package/docs/core/components/ui/toast/toast.html +0 -185
- package/docs/core/components/ui/toast/toast.md +0 -147
- package/docs/core/components/ui/tooltip/tooltip.html +0 -112
- package/docs/core/components/ui/tooltip/tooltip.md +0 -89
- package/docs/docs/decorators/ancestor-attribute.html +0 -71
- package/docs/docs/decorators/ancestor-attribute.md +0 -59
- package/docs/docs/decorators/auto-subscribe.html +0 -61
- package/docs/docs/decorators/auto-subscribe.md +0 -40
- package/docs/docs/decorators/bind.html +0 -86
- package/docs/docs/decorators/bind.md +0 -77
- package/docs/docs/decorators/get.html +0 -166
- package/docs/docs/decorators/get.md +0 -160
- package/docs/docs/decorators/handle.html +0 -139
- package/docs/docs/decorators/handle.md +0 -119
- package/docs/docs/decorators/on-assign.html +0 -72
- package/docs/docs/decorators/on-assign.md +0 -63
- package/docs/docs/decorators/patch.html +0 -76
- package/docs/docs/decorators/patch.md +0 -44
- package/docs/docs/decorators/post.html +0 -150
- package/docs/docs/decorators/post.md +0 -134
- package/docs/docs/decorators/publish.html +0 -74
- package/docs/docs/decorators/publish.md +0 -56
- package/docs/docs/decorators/put.html +0 -83
- package/docs/docs/decorators/put.md +0 -51
- package/docs/docs/decorators/subscribe.html +0 -91
- package/docs/docs/decorators/subscribe.md +0 -87
- package/docs/docs/decorators/wait-for-ancestors.html +0 -82
- package/docs/docs/decorators/wait-for-ancestors.md +0 -76
- package/docs/docs/directives/sub.html +0 -79
- package/docs/docs/directives/sub.md +0 -75
- package/docs/docs/directives/t.html +0 -91
- package/docs/docs/directives/t.md +0 -73
- package/docs/docs/getting-started/ai-agents.md +0 -76
- package/docs/docs/getting-started/components.html +0 -27
- package/docs/docs/getting-started/components.md +0 -5
- package/docs/docs/getting-started/installation.html +0 -69
- package/docs/docs/getting-started/installation.md +0 -36
- package/docs/docs/getting-started/my-first-component.md +0 -227
- package/docs/docs/getting-started/start.html +0 -47
- package/docs/docs/getting-started/start.md +0 -35
- package/docs/docs/getting-started/theming.md +0 -253
- package/docs/docs/index.html +0 -99
- package/docs/docs/misc/api-configuration.md +0 -79
- package/docs/docs/misc/dataProviderKey.md +0 -168
- package/docs/hubs/decorators.html +0 -443
- package/docs/hubs/form-components.html +0 -404
- package/docs/hubs/remote-data.html +0 -371
- package/docs/img/archive/concorde-001-2cv.webp +0 -0
- package/docs/img/archive/concorde-red-arrows-2002-poster.jpg +0 -0
- package/docs/img/archive/concorde-red-arrows-2002.webm +0 -0
- package/docs/img/archive/credits.json +0 -28
- package/docs/index.md +0 -22
- package/docs/src/core/components/functional/translation/translation.md +0 -38
- package/docs/src/docs/decorators/ancestor-attribute.md +0 -59
- package/docs/src/docs/decorators/auto-subscribe.md +0 -40
- package/docs/src/docs/decorators/bind.md +0 -77
- package/docs/src/docs/decorators/get.md +0 -160
- package/docs/src/docs/decorators/handle.md +0 -119
- package/docs/src/docs/decorators/on-assign.md +0 -63
- package/docs/src/docs/decorators/patch.md +0 -44
- package/docs/src/docs/decorators/post.md +0 -134
- package/docs/src/docs/decorators/publish.md +0 -56
- package/docs/src/docs/decorators/put.md +0 -51
- package/docs/src/docs/decorators/subscribe.md +0 -87
- package/docs/src/docs/decorators/wait-for-ancestors.md +0 -76
- package/docs/src/docs/directives/sub.md +0 -75
- package/docs/src/docs/directives/t.md +0 -73
- package/docs/src/docs/getting-started/components.md +0 -5
- package/docs/src/docs/getting-started/create-a-component.md +0 -136
- package/docs/src/docs/getting-started/dataFlow.md +0 -87
- package/docs/src/docs/getting-started/installation.md +0 -36
- package/docs/src/docs/misc/docs-mock-api.md +0 -62
- package/docs/src/docs/misc/dynamic-path.md +0 -71
- package/docs/src/docs/misc/endpoint.md +0 -45
- package/docs/src/docs/misc/html-integration.md +0 -14
- /package/{docs → dist}/img/concorde/plane_01.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_02.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_03.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_04.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_05.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_06.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_07.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_08.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_09.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_10.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_11.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_12.jpg +0 -0
- /package/{docs → dist}/img/concorde/plane_13.jpg +0 -0
|
@@ -1,443 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" data-doc-url="https://concorde.supersoniks.org/hubs/decorators.html" data-doc-id="hubs/decorators">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Concorde decorators reference — Concorde by Supersoniks</title>
|
|
7
|
-
<meta name="description" content="Hub for all Concorde Lit decorators: @get @post @put @patch @subscribe @publish @bind @handle and related. Use this page when asking about any decorator.">
|
|
8
|
-
<meta name="keywords" content="decorator, @get, @post, @put, @patch, @subscribe, @publish, @bind, @handle, ApiResult, Endpoint, DataProviderKey">
|
|
9
|
-
<meta name="concorde-doc-id" content="hubs/decorators">
|
|
10
|
-
<link rel="canonical" href="https://concorde.supersoniks.org/hubs/decorators.html">
|
|
11
|
-
</head>
|
|
12
|
-
<body>
|
|
13
|
-
<header>
|
|
14
|
-
<p><a href="/docs/index.html">Concorde documentation</a></p>
|
|
15
|
-
</header>
|
|
16
|
-
<main>
|
|
17
|
-
<article>
|
|
18
|
-
<p class="doc-lead" id="doc-summary"><strong>Concorde documentation — Concorde decorators reference</strong>. Hub for all Concorde Lit decorators: @get @post @put @patch @subscribe @publish @bind @handle and related. Use this page when asking about any decorator. <span>Doc ID: <code>hubs/decorators</code>. Keywords: decorator, @get, @post, @put, @patch, @subscribe, @publish, @bind, @handle, ApiResult, Endpoint, DataProviderKey. URL: <a href="https://concorde.supersoniks.org/hubs/decorators.html">https://concorde.supersoniks.org/hubs/decorators.html</a>.</span></p>
|
|
19
|
-
<section id="docs-decorators-ancestor-attribute" data-doc-id="docs/decorators/ancestor-attribute">
|
|
20
|
-
<h2><a href="/docs/decorators/ancestor-attribute">@ancestorAttribute</a></h2>
|
|
21
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/ancestor-attribute</code> · <a href="/docs/decorators/ancestor-attribute">full page</a></p>
|
|
22
|
-
<p>Copies the value of an attribute from the nearest element that carries it (the host itself, then its ancestors, across shadow roots) into a class property. Use it to pick up a scope such as dataProvid</p>
|
|
23
|
-
<pre class="doc-excerpt">@ancestorAttribute
|
|
24
|
-
|
|
25
|
-
Copies the value of an attribute from the nearest element that carries it (the host itself, then its ancestors, across shadow roots) into a class property. Use it to pick up a scope such as dataProvider without passing it down by hand, typically to feed a dynamic key of @subscribe.
|
|
26
|
-
|
|
27
|
-
Import
|
|
28
|
-
|
|
29
|
-
import { ancestorAttribute } from "@supersoniks/concorde/decorators";
|
|
30
|
-
|
|
31
|
-
@ancestorAttribute("dataProvider")
|
|
32
|
-
dataProvider: string | null = null;
|
|
33
|
-
|
|
34
|
-
Read once at connect
|
|
35
|
-
|
|
36
|
-
By default the value is read once, just before the component's connectedCallback, and never updated. The closest element with the attribute wins. If no ancestor has it, the property keeps its initial value.
|
|
37
|
-
|
|
38
|
-
An attribute present without a value ( ) resolves to "". A camelCase name also matches its lowercase form (dataProvider and dataprovider).
|
|
39
|
-
|
|
40
|
-
Follow DOM changes
|
|
41
|
-
|
|
42
|
-
With { dynamic: true }, the property stays in sync while the component is connected: when an ancestor changes the attribute, when a closer ancestor gains or loses it, and when the component is moved. When no ancestor has the attribute, the property becomes null. Add @state() so Lit re-renders on each assignment.
|
|
43
|
-
|
|
44
|
-
@ancestorAttribute("dataProvider", { dyn</pre>
|
|
45
|
-
</section>
|
|
46
|
-
<section id="docs-decorators-auto-subscribe" data-doc-id="docs/decorators/auto-subscribe">
|
|
47
|
-
<h2><a href="/docs/decorators/auto-subscribe">@autoSubscribe</a></h2>
|
|
48
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/auto-subscribe</code> · <a href="/docs/decorators/auto-subscribe">full page</a></p>
|
|
49
|
-
<p>Legacy decorator that re-runs a method whenever one of the store values it reads is assigned. For new code, prefer @subscribe with a DataProviderKey: dependencies are explicit and typed.</p>
|
|
50
|
-
<pre class="doc-excerpt">@autoSubscribe
|
|
51
|
-
|
|
52
|
-
Legacy decorator that re-runs a method whenever one of the store values it reads is assigned. For new code, prefer @subscribe with a DataProviderKey: dependencies are explicit and typed.
|
|
53
|
-
|
|
54
|
-
Import
|
|
55
|
-
|
|
56
|
-
import { autoSubscribe } from "@supersoniks/concorde/decorators";
|
|
57
|
-
import { get } from "@supersoniks/concorde/utils";
|
|
58
|
-
|
|
59
|
-
@autoSubscribe()
|
|
60
|
-
updateDisplay() {
|
|
61
|
-
this.total = get(passengersKey) + get(crewKey);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
Tracked reads
|
|
65
|
-
|
|
66
|
-
The method runs once after connectedCallback. Every store value read during that run becomes a dependency; assigning any of them runs the method again. Write the result to a @state() property (or call requestUpdate()) so the component re-renders.
|
|
67
|
-
|
|
68
|
-
Notes
|
|
69
|
-
|
|
70
|
-
- Several assignments in the same task trigger a single re-run (batched with queueMicrotask).
|
|
71
|
-
- Keep reads unconditional: a value read only behind a condition becomes a dependency the first time that branch runs.
|
|
72
|
-
- Subscriptions are removed in disconnectedCallback.
|
|
73
|
-
|
|
74
|
-
API reference
|
|
75
|
-
|
|
76
|
-
| Argument | Type | Description |
|
|
77
|
-
|----------|------|-------------|
|
|
78
|
-
| none | | @autoSubscribe() takes no argument; apply it to a method of a custom element |</pre>
|
|
79
|
-
</section>
|
|
80
|
-
<section id="docs-decorators-bind" data-doc-id="docs/decorators/bind">
|
|
81
|
-
<h2><a href="/docs/decorators/bind">@bind</a></h2>
|
|
82
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/bind</code> · <a href="/docs/decorators/bind">full page</a></p>
|
|
83
|
-
<p>Keeps a class property in sync with a path of the DataProvider store, in both directions when needed. Pass a dot-notation string or a DataProviderKey; add { reflect: true } to push local writes back t</p>
|
|
84
|
-
<pre class="doc-excerpt">@bind
|
|
85
|
-
|
|
86
|
-
Keeps a class property in sync with a path of the DataProvider store, in both directions when needed. Pass a dot-notation string or a DataProviderKey; add { reflect: true } to push local writes back to the store. For read-only sync prefer @subscribe, and see Data flow for the overall model.
|
|
87
|
-
|
|
88
|
-
Import
|
|
89
|
-
|
|
90
|
-
import { bind } from "@supersoniks/concorde/decorators";
|
|
91
|
-
|
|
92
|
-
@bind("flight.gate")
|
|
93
|
-
@state()
|
|
94
|
-
gate = "";
|
|
95
|
-
|
|
96
|
-
Basic usage
|
|
97
|
-
|
|
98
|
-
The first path segment is the data provider id, the rest is dot notation (array items use a numeric index: passengers.0). The property updates each time the store value changes. Add @state() so Lit re-renders.
|
|
99
|
-
|
|
100
|
-
Typed key
|
|
101
|
-
|
|
102
|
-
With a DataProviderKey , TypeScript checks that the property type matches T at that path.
|
|
103
|
-
|
|
104
|
-
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
105
|
-
|
|
106
|
-
type Flight = { flight: string; gate: string; boarded: number };
|
|
107
|
-
const flightKey = new DataProviderKey&lt;Flight&gt;("flight");
|
|
108
|
-
|
|
109
|
-
@bind(flightKey.boarded, { reflect: true })
|
|
110
|
-
@state()
|
|
111
|
-
boarded = 0;
|
|
112
|
-
|
|
113
|
-
Reflect
|
|
114
|
-
|
|
115
|
-
By default (reflect: false) the binding is one-way: assigning the property does not touch the store. With reflect: true, each assignment calls set() on the publisher, so every other subsc</pre>
|
|
116
|
-
</section>
|
|
117
|
-
<section id="docs-decorators-get" data-doc-id="docs/decorators/get">
|
|
118
|
-
<h2><a href="/docs/decorators/get">@get</a></h2>
|
|
119
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/get</code> · <a href="/docs/decorators/get">full page</a></p>
|
|
120
|
-
<p>@get(endpoint) runs an HTTP GET on an Endpoint and stores the full ApiResult<T> in a property, or passes it to a method. It runs again when the endpoint's placeholders or the API configuration change,</p>
|
|
121
|
-
<pre class="doc-excerpt">@get
|
|
122
|
-
|
|
123
|
-
@get(endpoint) runs an HTTP GET on an Endpoint and stores the full ApiResult in a property, or passes it to a method. It runs again when the endpoint's placeholders or the API configuration change, and on demand through refetch. For writes, see @post, @put and @patch.
|
|
124
|
-
|
|
125
|
-
Import
|
|
126
|
-
|
|
127
|
-
import { get, Endpoint, type ApiResult } from "@supersoniks/concorde/decorators";
|
|
128
|
-
|
|
129
|
-
type FlightBoard = { flights: Flight[] };
|
|
130
|
-
const departuresEndpoint = new Endpoint&lt;FlightBoard&gt;("flights?direction=departures");
|
|
131
|
-
|
|
132
|
-
@get(departuresEndpoint)
|
|
133
|
-
@state()
|
|
134
|
-
departures?: ApiResult&lt;FlightBoard&gt;;
|
|
135
|
-
|
|
136
|
-
Property
|
|
137
|
-
|
|
138
|
-
The property is undefined until the first response, then holds result (typed T), response (the HTTP response) and request. It is reset to undefined when the component disconnects.
|
|
139
|
-
|
|
140
|
-
Without a configuration key, serviceURL and the token are read from the HTML scope: place the component under an element that sets them (see API configuration). The GET waits until serviceURL is available.
|
|
141
|
-
|
|
142
|
-
Method
|
|
143
|
-
|
|
144
|
-
Decorate a method to receive the ApiResult after each GET instead of storing it.
|
|
145
|
-
|
|
146
|
-
@get(departuresEndpoint)
|
|
147
|
-
onDepartures(payload?: ApiResult&lt;FlightBoard&gt;) {
|
|
148
|
-
this.boarding = payload?.result?.flights.filter(</pre>
|
|
149
|
-
</section>
|
|
150
|
-
<section id="docs-decorators-handle" data-doc-id="docs/decorators/handle">
|
|
151
|
-
<h2><a href="/docs/decorators/handle">@handle</a></h2>
|
|
152
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/handle</code> · <a href="/docs/decorators/handle">full page</a></p>
|
|
153
|
-
<p>@handle(...keys) calls the decorated method each time a publisher assigns one of up to three store paths, with one typed argument per key. Nothing is stored on the component: use it for derived values</p>
|
|
154
|
-
<pre class="doc-excerpt">@handle
|
|
155
|
-
|
|
156
|
-
@handle(...keys) calls the decorated method each time a publisher assigns one of up to three store paths, with one typed argument per key. Nothing is stored on the component: use it for derived values and side effects, and @subscribe when you only need the value. See Data flow for the overall model.
|
|
157
|
-
|
|
158
|
-
Import
|
|
159
|
-
|
|
160
|
-
import { handle, Skip } from "@supersoniks/concorde/decorators";
|
|
161
|
-
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
162
|
-
|
|
163
|
-
const cockpitKey = new DataProviderKey&lt;{ altitude: number }&gt;("cockpit");
|
|
164
|
-
|
|
165
|
-
@handle(cockpitKey.altitude)
|
|
166
|
-
onAltitude(feet: number) {
|
|
167
|
-
this.meters = Math.round(feet 0.3048);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
Basic usage
|
|
171
|
-
|
|
172
|
-
The method runs once with the current value when the component connects, then on every assignment, including null and undefined. Below, each climb assigns a new altitude and the method derives meters and flight level.
|
|
173
|
-
|
|
174
|
-
Dynamic path
|
|
175
|
-
|
|
176
|
-
${prop} placeholders resolve from properties of the same component; when one changes, the method is called with the value at the new path. Rules: Dynamic paths.
|
|
177
|
-
|
|
178
|
-
const personKey = new DataProviderKey&lt;OnBoard, { seatIndex: number }&gt;(
|
|
179
|
-
"demoOnBoard.${seatIndex}",
|
|
180
|
-
);
|
|
181
|
-
|
|
182
|
-
@property({ type: Number }) seatIndex = 0;</pre>
|
|
183
|
-
</section>
|
|
184
|
-
<section id="docs-decorators-on-assign" data-doc-id="docs/decorators/on-assign">
|
|
185
|
-
<h2><a href="/docs/decorators/on-assign">@onAssign</a></h2>
|
|
186
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/on-assign</code> · <a href="/docs/decorators/on-assign">full page</a></p>
|
|
187
|
-
<p>Legacy decorator that calls a method with the values at one or more string paths of the store, once all of them are defined. For new code, use @handle with { waitForAllDefined: true }: same behaviour,</p>
|
|
188
|
-
<pre class="doc-excerpt">@onAssign
|
|
189
|
-
|
|
190
|
-
Legacy decorator that calls a method with the values at one or more string paths of the store, once all of them are defined. For new code, use @handle with { waitForAllDefined: true }: same behaviour, with typed DataProviderKey paths.
|
|
191
|
-
|
|
192
|
-
Import
|
|
193
|
-
|
|
194
|
-
import { onAssign } from "@supersoniks/concorde/decorators";
|
|
195
|
-
|
|
196
|
-
@onAssign("passenger", "passengerSettings")
|
|
197
|
-
onReady(passenger: Passenger, settings: Settings) {}
|
|
198
|
-
|
|
199
|
-
Wait for every path
|
|
200
|
-
|
|
201
|
-
The method is called only when every path holds a value other than null or undefined, with the values in the order of the paths. After that, each assignment calls it again with the latest values. Subscriptions start after connectedCallback and stop in disconnectedCallback.
|
|
202
|
-
|
|
203
|
-
Dynamic path
|
|
204
|
-
|
|
205
|
-
Paths accept ${prop} placeholders resolved on the host. While a placeholder is null or undefined, that path is unsubscribed. Write the paths as plain strings, not template literals. Rules: Dynamic path placeholders.
|
|
206
|
-
|
|
207
|
-
@property({ type: Number }) seat = 0;
|
|
208
|
-
|
|
209
|
-
@onAssign("passengers.${seat}", "passengerSettings.${seat}")
|
|
210
|
-
onSeat(passenger: Passenger, settings: Settings) {}
|
|
211
|
-
|
|
212
|
-
Migrate to @handle
|
|
213
|
-
|
|
214
|
-
// Before
|
|
215
|
-
@onAssign("passenger", "passengerSettings")
|
|
216
|
-
onReady(passenger: any, setting</pre>
|
|
217
|
-
</section>
|
|
218
|
-
<section id="docs-decorators-patch" data-doc-id="docs/decorators/patch">
|
|
219
|
-
<h2><a href="/docs/decorators/patch">@patch</a></h2>
|
|
220
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/patch</code> · <a href="/docs/decorators/patch">full page</a></p>
|
|
221
|
-
<p>Sends the value of a publisher as the body of a PATCH request, to update part of a resource, and stores the response in an ApiResult<T> property. It takes the same arguments, options and send(componen</p>
|
|
222
|
-
<pre class="doc-excerpt">@patch
|
|
223
|
-
|
|
224
|
-
Sends the value of a publisher as the body of a PATCH request, to update part of a resource, and stores the response in an ApiResult property. It takes the same arguments, options and send(component) handle as @post; only the HTTP method differs.
|
|
225
|
-
|
|
226
|
-
Import
|
|
227
|
-
|
|
228
|
-
import { patch, type ApiResult } from "@supersoniks/concorde/decorators";
|
|
229
|
-
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
230
|
-
import { Endpoint } from "@supersoniks/concorde/utils/endpoint";
|
|
231
|
-
|
|
232
|
-
Basic usage
|
|
233
|
-
|
|
234
|
-
The body holds only the fields to change, here a gate change for flight CN 001.
|
|
235
|
-
|
|
236
|
-
type Flight = { flight: string; route: string; gate: string };
|
|
237
|
-
|
|
238
|
-
const gateChangeKey = new DataProviderKey&lt;Partial&lt;Flight&gt;&gt;("gateChange");
|
|
239
|
-
|
|
240
|
-
@patch(new Endpoint&lt;Flight&gt;("flights/CN001"), gateChangeKey)
|
|
241
|
-
@state()
|
|
242
|
-
payload?: ApiResult&lt;Flight&gt;;
|
|
243
|
-
|
|
244
|
-
moveToB12() {
|
|
245
|
-
set(gateChangeKey, { gate: "B12" }); // sends the PATCH
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
Triggers, the send method decorator and every option are described on @post.
|
|
249
|
-
|
|
250
|
-
API reference
|
|
251
|
-
|
|
252
|
-
| Argument | Type | Description |
|
|
253
|
-
|----------|------|-------------|
|
|
254
|
-
| endpoint | Endpoint | Resource path and response type |
|
|
255
|
-
| bodyKey | DataProviderKey | Publisher read as the partial body |
|
|
256
|
-
| </pre>
|
|
257
|
-
</section>
|
|
258
|
-
<section id="docs-decorators-post" data-doc-id="docs/decorators/post">
|
|
259
|
-
<h2><a href="/docs/decorators/post">@post</a></h2>
|
|
260
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/post</code> · <a href="/docs/decorators/post">full page</a></p>
|
|
261
|
-
<p>Sends the value of a publisher as the body of a POST request and stores the response in an ApiResult<T> property. Pass an Endpoint and a DataProviderKey for the body; the request runs on connect and a</p>
|
|
262
|
-
<pre class="doc-excerpt">@post
|
|
263
|
-
|
|
264
|
-
Sends the value of a publisher as the body of a POST request and stores the response in an ApiResult property. Pass an Endpoint and a DataProviderKey for the body; the request runs on connect and again whenever the body changes. @put and @patch work the same way.
|
|
265
|
-
|
|
266
|
-
Import
|
|
267
|
-
|
|
268
|
-
import { post, type ApiResult } from "@supersoniks/concorde/decorators";
|
|
269
|
-
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
270
|
-
import { Endpoint } from "@supersoniks/concorde/utils/endpoint";
|
|
271
|
-
|
|
272
|
-
type SignUp = { email: string; password: string };
|
|
273
|
-
type CrewMember = { id: number; email: string };
|
|
274
|
-
|
|
275
|
-
const signUpKey = new DataProviderKey&lt;SignUp&gt;("crewSignUp");
|
|
276
|
-
|
|
277
|
-
@post(new Endpoint&lt;CrewMember&gt;("api/register"), signUpKey)
|
|
278
|
-
@state()
|
|
279
|
-
payload?: ApiResult&lt;CrewMember&gt;;
|
|
280
|
-
|
|
281
|
-
Basic usage
|
|
282
|
-
|
|
283
|
-
The property is undefined until a response arrives, then holds request · response · the typed result. Each body mutation sends a new request; mutations in the same frame are coalesced into one. The demo posts to the local mock POST /docs-mock-api/api/register.
|
|
284
|
-
|
|
285
|
-
Method form
|
|
286
|
-
|
|
287
|
-
On a method, the decorator calls it with the full ApiResult after each request instead of assigning a property.
|
|
288
|
-
|
|
289
|
-
Sending again
|
|
290
|
-
|
|
291
|
-
Keep th</pre>
|
|
292
|
-
</section>
|
|
293
|
-
<section id="docs-decorators-publish" data-doc-id="docs/decorators/publish">
|
|
294
|
-
<h2><a href="/docs/decorators/publish">@publish</a></h2>
|
|
295
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/publish</code> · <a href="/docs/decorators/publish">full page</a></p>
|
|
296
|
-
<p>@publish(key) writes a component property to one path of the store: every assignment to the property is published there. It never reads back from the store; it is the inverse of @subscribe. See Data f</p>
|
|
297
|
-
<pre class="doc-excerpt">@publish
|
|
298
|
-
|
|
299
|
-
@publish(key) writes a component property to one path of the store: every assignment to the property is published there. It never reads back from the store; it is the inverse of @subscribe. See Data flow for the overall model.
|
|
300
|
-
|
|
301
|
-
Import
|
|
302
|
-
|
|
303
|
-
import { publish } from "@supersoniks/concorde/decorators";
|
|
304
|
-
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
305
|
-
|
|
306
|
-
type CheckIn = { passenger: string; seat: string };
|
|
307
|
-
const checkInKey = new DataProviderKey&lt;CheckIn&gt;("checkIn");
|
|
308
|
-
|
|
309
|
-
@publish(checkInKey.passenger)
|
|
310
|
-
@state()
|
|
311
|
-
passenger = "Ada Lindqvist";
|
|
312
|
-
|
|
313
|
-
Basic usage
|
|
314
|
-
|
|
315
|
-
Each assignment calls set() on the publisher at the DataProviderKey path. On connect, a defined property value is published immediately, so the initializer overwrites what the store held. Leave the property undefined to keep the store value. To read and write the same path, use @bind with reflect: true.
|
|
316
|
-
|
|
317
|
-
The check-in form below publishes passenger and seat; the boarding pass reads them back with sub().
|
|
318
|
-
|
|
319
|
-
Dynamic path
|
|
320
|
-
|
|
321
|
-
${prop} placeholders resolve from properties of the same component. When a placeholder changes, the property is published to the new path. While it is null or undefined, nothing is published. Rules</pre>
|
|
322
|
-
</section>
|
|
323
|
-
<section id="docs-decorators-put" data-doc-id="docs/decorators/put">
|
|
324
|
-
<h2><a href="/docs/decorators/put">@put</a></h2>
|
|
325
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/put</code> · <a href="/docs/decorators/put">full page</a></p>
|
|
326
|
-
<p>Sends the value of a publisher as the body of a PUT request, to replace a resource, and stores the response in an ApiResult<T> property. It takes the same arguments, options and send(component) handle</p>
|
|
327
|
-
<pre class="doc-excerpt">@put
|
|
328
|
-
|
|
329
|
-
Sends the value of a publisher as the body of a PUT request, to replace a resource, and stores the response in an ApiResult property. It takes the same arguments, options and send(component) handle as @post; only the HTTP method differs.
|
|
330
|
-
|
|
331
|
-
Import
|
|
332
|
-
|
|
333
|
-
import { put, type ApiResult } from "@supersoniks/concorde/decorators";
|
|
334
|
-
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
335
|
-
import { Endpoint } from "@supersoniks/concorde/utils/endpoint";
|
|
336
|
-
|
|
337
|
-
Basic usage
|
|
338
|
-
|
|
339
|
-
The full passenger record is sent on connect and after each body mutation. Placeholders such as ${passengerId} are resolved on the host component.
|
|
340
|
-
|
|
341
|
-
type Passenger = { name: string; flight: string; seat: string };
|
|
342
|
-
|
|
343
|
-
const passengerKey = new DataProviderKey&lt;Passenger&gt;("passengerForm");
|
|
344
|
-
const savePassenger = put(
|
|
345
|
-
new Endpoint&lt;Passenger, { passengerId: string }&gt;("passengers/${passengerId}"),
|
|
346
|
-
passengerKey,
|
|
347
|
-
{ autoPostOnBodyMutation: false },
|
|
348
|
-
);
|
|
349
|
-
|
|
350
|
-
@property() passengerId = "ada-lindqvist";
|
|
351
|
-
|
|
352
|
-
@savePassenger
|
|
353
|
-
@state()
|
|
354
|
-
payload?: ApiResult&lt;Passenger&gt;;
|
|
355
|
-
|
|
356
|
-
async save() {
|
|
357
|
-
await savePassenger.send(this);
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
Triggers, the send method decorator and every option are described on @post.
|
|
361
|
-
|
|
362
|
-
API reference
|
|
363
|
-
|
|
364
|
-
| Argumen</pre>
|
|
365
|
-
</section>
|
|
366
|
-
<section id="docs-decorators-subscribe" data-doc-id="docs/decorators/subscribe">
|
|
367
|
-
<h2><a href="/docs/decorators/subscribe">@subscribe</a></h2>
|
|
368
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/subscribe</code> · <a href="/docs/decorators/subscribe">full page</a></p>
|
|
369
|
-
<p>@subscribe(key) keeps a component property in sync with one path of the store: when a publisher assigns that path, the property updates and the component re-renders. It is read-only; use @publish to w</p>
|
|
370
|
-
<pre class="doc-excerpt">@subscribe
|
|
371
|
-
|
|
372
|
-
@subscribe(key) keeps a component property in sync with one path of the store: when a publisher assigns that path, the property updates and the component re-renders. It is read-only; use @publish to write and sub() to read inside a template. See Data flow for the overall model.
|
|
373
|
-
|
|
374
|
-
Import
|
|
375
|
-
|
|
376
|
-
import { subscribe } from "@supersoniks/concorde/decorators";
|
|
377
|
-
import { DataProviderKey } from "@supersoniks/concorde/dataProviderKey";
|
|
378
|
-
|
|
379
|
-
type Cockpit = { altitude: number };
|
|
380
|
-
const cockpitKey = new DataProviderKey&lt;Cockpit&gt;("cockpit");
|
|
381
|
-
|
|
382
|
-
@subscribe(cockpitKey.altitude)
|
|
383
|
-
@state()
|
|
384
|
-
altitude = 0;
|
|
385
|
-
|
|
386
|
-
Static path
|
|
387
|
-
|
|
388
|
-
The key is a DataProviderKey: the property type must match T at that path. Add @state() so Lit re-renders. Until the publisher holds a value, the property keeps its initializer.
|
|
389
|
-
|
|
390
|
-
type Flight = { code: string; gate: string; status: string };
|
|
391
|
-
const flightKey = new DataProviderKey&lt;Flight&gt;("flight");
|
|
392
|
-
|
|
393
|
-
@subscribe(flightKey)
|
|
394
|
-
@state()
|
|
395
|
-
flight: Flight | null = null;
|
|
396
|
-
|
|
397
|
-
Dynamic path
|
|
398
|
-
|
|
399
|
-
${prop} placeholders resolve from properties of the same component. Declare them in the key's second generic so TypeScript requires them on the host. When seatIndex changes, the path is resolved again and perso</pre>
|
|
400
|
-
</section>
|
|
401
|
-
<section id="docs-decorators-wait-for-ancestors" data-doc-id="docs/decorators/wait-for-ancestors">
|
|
402
|
-
<h2><a href="/docs/decorators/wait-for-ancestors">@awaitConnectedAncestors</a></h2>
|
|
403
|
-
<p><strong>Doc ID:</strong> <code>docs/decorators/wait-for-ancestors</code> · <a href="/docs/decorators/wait-for-ancestors">full page</a></p>
|
|
404
|
-
<p>Delays a component's connectedCallback until its matching ancestors are defined and connected, so context they set up (a dataProvider, a publisher, a fetched payload) is ready when the child starts. P</p>
|
|
405
|
-
<pre class="doc-excerpt">@awaitConnectedAncestors
|
|
406
|
-
|
|
407
|
-
Delays a component's connectedCallback until its matching ancestors are defined and connected, so context they set up (a dataProvider, a publisher, a fetched payload) is ready when the child starts. Pair it with @dispatchConnectedEvent on the ancestors, which signals readiness.
|
|
408
|
-
|
|
409
|
-
Import
|
|
410
|
-
|
|
411
|
-
import {
|
|
412
|
-
awaitConnectedAncestors,
|
|
413
|
-
dispatchConnectedEvent,
|
|
414
|
-
} from "@supersoniks/concorde/decorators";
|
|
415
|
-
|
|
416
|
-
@customElement("flight-scope")
|
|
417
|
-
@dispatchConnectedEvent()
|
|
418
|
-
export class FlightScope extends LitElement {}
|
|
419
|
-
|
|
420
|
-
@customElement("gate-panel")
|
|
421
|
-
@awaitConnectedAncestors("flight-scope")
|
|
422
|
-
export class GatePanel extends LitElement {}
|
|
423
|
-
|
|
424
|
-
Wait for an ancestor
|
|
425
|
-
|
|
426
|
-
Arguments are CSS selectors tested with element.matches() on each ancestor, across shadow roots. Here the parent element is not defined yet: the child stays uninitialized until you register it.
|
|
427
|
-
|
|
428
|
-
Several ancestors
|
|
429
|
-
|
|
430
|
-
With several selectors, the child waits for every matching ancestor. Register both to initialize it, in any order.
|
|
431
|
-
|
|
432
|
-
Ancestor already connected
|
|
433
|
-
|
|
434
|
-
When the ancestor is already connected, or no ancestor matches, the child initializes immediately.
|
|
435
|
-
|
|
436
|
-
Signal readiness
|
|
437
|
-
|
|
438
|
-
@dispatchConnectedEvent() dispatches a bubbling sonic-connect</pre>
|
|
439
|
-
</section>
|
|
440
|
-
</article>
|
|
441
|
-
</main>
|
|
442
|
-
</body>
|
|
443
|
-
</html>
|