neo.mjs 10.0.0-beta.5 → 10.0.0
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/.github/RELEASE_NOTES/v10.0.0-beta.1.md +20 -0
- package/.github/RELEASE_NOTES/v10.0.0-beta.2.md +73 -0
- package/.github/RELEASE_NOTES/v10.0.0-beta.3.md +39 -0
- package/.github/RELEASE_NOTES/v10.0.0-beta.5.md +70 -0
- package/.github/RELEASE_NOTES/v10.0.0-beta.6.md +48 -0
- package/.github/RELEASE_NOTES/v10.0.0.md +52 -0
- package/.github/epic-functional-components.md +498 -0
- package/.github/ticket-asymmetric-vdom-updates.md +122 -0
- package/README.md +0 -3
- package/ServiceWorker.mjs +2 -2
- package/apps/colors/store/Colors.mjs +1 -0
- package/apps/colors/view/GridContainer.mjs +3 -0
- package/apps/colors/view/HeaderToolbar.mjs +2 -0
- package/apps/colors/view/Viewport.mjs +3 -0
- package/apps/covid/view/FooterContainer.mjs +3 -0
- package/apps/covid/view/GalleryContainer.mjs +2 -0
- package/apps/covid/view/GalleryContainerController.mjs +1 -0
- package/apps/covid/view/HeaderContainer.mjs +2 -0
- package/apps/covid/view/HelixContainer.mjs +2 -0
- package/apps/covid/view/HelixContainerController.mjs +1 -0
- package/apps/covid/view/MainContainer.mjs +3 -0
- package/apps/covid/view/TableContainer.mjs +3 -0
- package/apps/covid/view/TableContainerController.mjs +1 -0
- package/apps/covid/view/WorldMapContainer.mjs +2 -0
- package/apps/covid/view/country/Gallery.mjs +3 -0
- package/apps/covid/view/country/Helix.mjs +8 -0
- package/apps/covid/view/country/HistoricalDataTable.mjs +1 -0
- package/apps/covid/view/country/Table.mjs +2 -0
- package/apps/covid/view/mapboxGl/Component.mjs +1 -0
- package/apps/covid/view/mapboxGl/Container.mjs +2 -0
- package/apps/email/EPIC_PLAN.md +58 -0
- package/apps/email/neo-config.json +2 -2
- package/apps/email/store/Emails.mjs +11 -1
- package/apps/email/view/ComposeView.mjs +44 -0
- package/apps/email/view/MainView.mjs +89 -0
- package/apps/email/view/Viewport.mjs +4 -33
- package/apps/email/view/ViewportStateProvider.mjs +3 -3
- package/apps/form/store/SideNav.mjs +1 -0
- package/apps/form/view/FormContainer.mjs +1 -0
- package/apps/form/view/FormPageContainer.mjs +2 -0
- package/apps/form/view/SideNavList.mjs +1 -0
- package/apps/form/view/Viewport.mjs +3 -0
- package/apps/portal/childapps/preview/MainContainer.mjs +1 -0
- package/apps/portal/index.html +1 -1
- package/apps/portal/store/BlogPosts.mjs +2 -0
- package/apps/portal/store/Content.mjs +1 -0
- package/apps/portal/store/ContentSections.mjs +1 -0
- package/apps/portal/store/Examples.mjs +1 -0
- package/apps/portal/view/HeaderToolbar.mjs +1 -0
- package/apps/portal/view/Viewport.mjs +5 -0
- package/apps/portal/view/ViewportController.mjs +11 -3
- package/apps/portal/view/about/Container.mjs +2 -0
- package/apps/portal/view/about/MemberContainer.mjs +7 -0
- package/apps/portal/view/blog/Container.mjs +2 -0
- package/apps/portal/view/blog/List.mjs +2 -0
- package/apps/portal/view/examples/List.mjs +29 -19
- package/apps/portal/view/examples/TabContainer.mjs +4 -0
- package/apps/portal/view/home/ContentBox.mjs +3 -0
- package/apps/portal/view/home/FeatureSection.mjs +8 -0
- package/apps/portal/view/home/FooterContainer.mjs +4 -1
- package/apps/portal/view/home/MainContainer.mjs +2 -0
- package/apps/portal/view/home/parts/AfterMath.mjs +2 -0
- package/apps/portal/view/home/parts/BaseContainer.mjs +1 -0
- package/apps/portal/view/home/parts/Colors.mjs +4 -0
- package/apps/portal/view/home/parts/Features.mjs +2 -0
- package/apps/portal/view/home/parts/Helix.mjs +5 -0
- package/apps/portal/view/home/parts/How.mjs +4 -0
- package/apps/portal/view/home/parts/MainNeo.mjs +1 -0
- package/apps/portal/view/home/parts/References.mjs +2 -0
- package/apps/portal/view/learn/ContentComponent.mjs +11 -5
- package/apps/portal/view/learn/ContentTreeList.mjs +2 -0
- package/apps/portal/view/learn/CubeLayoutButton.mjs +1 -0
- package/apps/portal/view/learn/MainContainer.mjs +4 -0
- package/apps/portal/view/learn/PageContainer.mjs +2 -0
- package/apps/portal/view/learn/PageSectionsContainer.mjs +3 -0
- package/apps/portal/view/learn/PageSectionsList.mjs +1 -0
- package/apps/portal/view/services/Component.mjs +1 -0
- package/apps/realworld/api/Base.mjs +1 -0
- package/apps/realworld/view/HeaderComponent.mjs +4 -0
- package/apps/realworld/view/HomeComponent.mjs +7 -0
- package/apps/realworld/view/MainContainer.mjs +2 -0
- package/apps/realworld/view/MainContainerController.mjs +2 -0
- package/apps/realworld/view/article/CommentComponent.mjs +3 -0
- package/apps/realworld/view/article/Component.mjs +17 -10
- package/apps/realworld/view/article/CreateCommentComponent.mjs +2 -0
- package/apps/realworld/view/article/CreateComponent.mjs +5 -0
- package/apps/realworld/view/article/PreviewComponent.mjs +9 -0
- package/apps/realworld/view/article/TagListComponent.mjs +2 -0
- package/apps/realworld/view/user/ProfileComponent.mjs +7 -0
- package/apps/realworld/view/user/SettingsComponent.mjs +5 -0
- package/apps/realworld/view/user/SignUpComponent.mjs +3 -0
- package/apps/realworld2/api/Base.mjs +1 -0
- package/apps/realworld2/view/FooterComponent.mjs +1 -0
- package/apps/realworld2/view/HeaderToolbar.mjs +3 -0
- package/apps/realworld2/view/HomeContainer.mjs +1 -0
- package/apps/realworld2/view/MainContainer.mjs +2 -0
- package/apps/realworld2/view/MainContainerController.mjs +1 -0
- package/apps/realworld2/view/article/Helix.mjs +1 -0
- package/apps/realworld2/view/article/PreviewComponent.mjs +9 -0
- package/apps/realworld2/view/article/PreviewList.mjs +1 -0
- package/apps/realworld2/view/article/TagListComponent.mjs +2 -0
- package/apps/route/view/CenterContainer.mjs +1 -0
- package/apps/route/view/MainView.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidchart/MainContainer.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidgallery/MainContainer.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidhelix/MainContainer.mjs +1 -0
- package/apps/sharedcovid/childapps/sharedcovidmap/MainContainer.mjs +1 -0
- package/apps/sharedcovid/view/FooterContainer.mjs +3 -0
- package/apps/sharedcovid/view/GalleryContainer.mjs +2 -0
- package/apps/sharedcovid/view/GalleryContainerController.mjs +1 -0
- package/apps/sharedcovid/view/HeaderContainer.mjs +2 -0
- package/apps/sharedcovid/view/HelixContainer.mjs +2 -0
- package/apps/sharedcovid/view/HelixContainerController.mjs +1 -0
- package/apps/sharedcovid/view/MainContainer.mjs +3 -0
- package/apps/sharedcovid/view/TableContainer.mjs +3 -0
- package/apps/sharedcovid/view/TableContainerController.mjs +1 -0
- package/apps/sharedcovid/view/WorldMapContainer.mjs +2 -0
- package/apps/sharedcovid/view/country/Gallery.mjs +3 -0
- package/apps/sharedcovid/view/country/Helix.mjs +8 -0
- package/apps/sharedcovid/view/country/HistoricalDataTable.mjs +1 -0
- package/apps/sharedcovid/view/country/Table.mjs +2 -0
- package/apps/sharedcovid/view/mapboxGl/Component.mjs +1 -0
- package/apps/sharedcovid/view/mapboxGl/Container.mjs +2 -0
- package/apps/shareddialog/childapps/shareddialog2/view/MainContainer.mjs +2 -0
- package/apps/shareddialog/view/DemoDialog.mjs +2 -0
- package/apps/shareddialog/view/MainContainer.mjs +2 -0
- package/apps/shareddialog/view/MainContainerController.mjs +1 -0
- package/buildScripts/addReactiveTags.mjs +191 -0
- package/buildScripts/checkReactiveTags.mjs +160 -0
- package/docs/app/store/Api.mjs +1 -0
- package/docs/app/store/Examples.mjs +1 -0
- package/docs/app/view/ApiTreeList.mjs +1 -0
- package/docs/app/view/ContentTabContainer.mjs +2 -0
- package/docs/app/view/ExamplesTreeList.mjs +2 -0
- package/docs/app/view/HeaderContainer.mjs +3 -0
- package/docs/app/view/MainContainer.mjs +5 -0
- package/docs/app/view/classdetails/HeaderComponent.mjs +1 -0
- package/docs/app/view/classdetails/MainContainer.mjs +3 -0
- package/docs/app/view/classdetails/MembersList.mjs +5 -0
- package/docs/app/view/classdetails/SourceViewComponent.mjs +2 -0
- package/examples/ConfigurationViewport.mjs +14 -8
- package/examples/calendar/weekview/MainContainer.mjs +4 -0
- package/examples/component/coronaGallery/CountryGallery.mjs +2 -0
- package/examples/component/coronaGallery/CountryStore.mjs +1 -0
- package/examples/component/coronaGallery/Viewport.mjs +3 -0
- package/examples/component/coronaGallery/ViewportController.mjs +1 -0
- package/examples/component/coronaHelix/CountryHelix.mjs +7 -0
- package/examples/component/coronaHelix/MainContainer.mjs +1 -0
- package/examples/component/gallery/ImageStore.mjs +1 -0
- package/examples/component/helix/ImageStore.mjs +1 -0
- package/examples/component/helix/Viewport.mjs +3 -0
- package/examples/component/helix/ViewportController.mjs +1 -0
- package/examples/component/multiWindowCoronaGallery/childapp/Viewport.mjs +1 -0
- package/examples/component/multiWindowHelix/childapp/Viewport.mjs +1 -0
- package/examples/component/wrapper/googleMaps/MapComponent.mjs +2 -0
- package/examples/core/config/MainContainer.mjs +2 -0
- package/examples/dialog/DemoDialog.mjs +2 -0
- package/examples/dialog/MainContainer.mjs +1 -0
- package/examples/form/field/color/MainStore.mjs +1 -0
- package/examples/functional/button/base/MainContainer.mjs +207 -0
- package/examples/functional/button/base/app.mjs +6 -0
- package/examples/functional/button/base/index.html +11 -0
- package/examples/functional/button/base/neo-config.json +6 -0
- package/examples/functional/defineComponent/Component.mjs +18 -0
- package/examples/functional/defineComponent/MainContainer.mjs +41 -0
- package/examples/functional/defineComponent/app.mjs +6 -0
- package/examples/functional/defineComponent/index.html +11 -0
- package/examples/functional/defineComponent/neo-config.json +6 -0
- package/examples/functional/hostComponent/Component.mjs +32 -0
- package/examples/functional/hostComponent/MainContainer.mjs +48 -0
- package/examples/functional/hostComponent/app.mjs +6 -0
- package/examples/functional/hostComponent/index.html +11 -0
- package/examples/functional/hostComponent/neo-config.json +6 -0
- package/examples/grid/animatedRowSorting/Viewport.mjs +1 -1
- package/examples/grid/bigData/ControlsContainer.mjs +3 -0
- package/examples/grid/bigData/GridContainer.mjs +4 -2
- package/examples/grid/bigData/MainContainer.mjs +2 -0
- package/examples/grid/bigData/MainModel.mjs +1 -0
- package/examples/grid/bigData/MainStore.mjs +3 -0
- package/examples/grid/cellEditing/MainContainer.mjs +1 -1
- package/examples/grid/container/MainContainer.mjs +1 -1
- package/examples/grid/covid/GridContainer.mjs +3 -0
- package/examples/grid/covid/MainContainer.mjs +2 -0
- package/examples/grid/covid/Store.mjs +1 -0
- package/examples/grid/nestedRecordFields/EditUserDialog.mjs +3 -0
- package/examples/grid/nestedRecordFields/Viewport.mjs +3 -1
- package/examples/list/animate/List.mjs +4 -0
- package/examples/list/animate/MainContainer.mjs +2 -0
- package/examples/list/circle/MainStore.mjs +1 -0
- package/examples/list/color/MainStore.mjs +1 -0
- package/examples/preloadingAssets/view/MainContainer.mjs +2 -0
- package/examples/stateProvider/advanced/MainContainer.mjs +1 -0
- package/examples/stateProvider/dialog/EditUserDialog.mjs +2 -0
- package/examples/stateProvider/dialog/MainContainer.mjs +1 -0
- package/examples/stateProvider/extendedClass/MainContainer.mjs +2 -0
- package/examples/stateProvider/inline/MainContainer.mjs +1 -0
- package/examples/stateProvider/inlineNoStateProvider/MainContainer.mjs +1 -0
- package/examples/stateProvider/inlineNoStateProvider/MainContainerController.mjs +2 -0
- package/examples/stateProvider/multiWindow/EditUserDialog.mjs +3 -0
- package/examples/stateProvider/multiWindow/MainContainer.mjs +1 -0
- package/examples/stateProvider/multiWindow/Viewport.mjs +1 -0
- package/examples/stateProvider/nestedData/MainContainer.mjs +1 -0
- package/examples/stateProvider/table/MainContainer.mjs +1 -0
- package/examples/table/covid/MainContainer.mjs +2 -0
- package/examples/table/covid/Store.mjs +1 -0
- package/examples/table/covid/TableContainer.mjs +3 -0
- package/examples/table/nestedRecordFields/EditUserDialog.mjs +3 -0
- package/examples/table/nestedRecordFields/Viewport.mjs +1 -0
- package/examples/todoList/version1/MainComponent.mjs +1 -1
- package/examples/toolbar/breadcrumb/view/MainContainer.mjs +2 -0
- package/examples/toolbar/paging/store/Users.mjs +1 -0
- package/examples/toolbar/paging/view/AddUserDialog.mjs +3 -0
- package/examples/toolbar/paging/view/MainContainer.mjs +3 -0
- package/examples/treeAccordion/MainContainer.mjs +2 -2
- package/examples/worker/task/MainContainer.mjs +1 -0
- package/learn/Glossary.md +1 -0
- package/learn/UsingTheseTopics.md +1 -0
- package/learn/benefits/ConfigSystem.md +2 -0
- package/learn/benefits/Effort.md +1 -0
- package/learn/benefits/Features.md +1 -0
- package/learn/benefits/FormsEngine.md +1 -0
- package/learn/benefits/FourEnvironments.md +2 -0
- package/learn/benefits/Introduction.md +2 -0
- package/learn/benefits/MultiWindow.md +3 -1
- package/learn/benefits/OffTheMainThread.md +2 -0
- package/learn/benefits/Quick.md +2 -0
- package/learn/benefits/RPCLayer.md +2 -0
- package/learn/benefits/Speed.md +2 -0
- package/learn/blog/v10-deep-dive-functional-components.md +293 -0
- package/learn/blog/v10-deep-dive-reactivity.md +522 -0
- package/learn/blog/v10-deep-dive-state-provider.md +432 -0
- package/learn/blog/v10-deep-dive-vdom-revolution.md +194 -0
- package/learn/blog/v10-post1-love-story.md +383 -0
- package/learn/comparisons/NeoVsAngular.md +90 -0
- package/learn/comparisons/NeoVsExtJs.md +178 -0
- package/learn/comparisons/NeoVsNextJs.md +124 -0
- package/learn/comparisons/NeoVsReact.md +95 -0
- package/learn/comparisons/NeoVsSolid.md +78 -0
- package/learn/comparisons/NeoVsVue.md +92 -0
- package/learn/comparisons/Overview.md +46 -0
- package/learn/gettingstarted/ComponentModels.md +2 -0
- package/learn/gettingstarted/Config.md +2 -0
- package/learn/gettingstarted/DescribingTheUI.md +2 -0
- package/learn/gettingstarted/Events.md +2 -0
- package/learn/gettingstarted/Extending.md +2 -0
- package/learn/gettingstarted/References.md +2 -0
- package/learn/gettingstarted/Setup.md +3 -2
- package/learn/gettingstarted/Workspaces.md +2 -0
- package/learn/guides/datahandling/Collections.md +1 -0
- package/learn/guides/datahandling/Records.md +1 -0
- package/learn/guides/datahandling/StateProviders.md +130 -16
- package/learn/guides/datahandling/Tables.md +1 -1
- package/learn/guides/fundamentals/ConfigSystemDeepDive.md +1 -0
- package/learn/guides/fundamentals/DeclarativeComponentTreesVsImperativeVdom.md +2 -0
- package/learn/guides/fundamentals/DeclarativeVDOMWithEffects.md +10 -8
- package/learn/guides/fundamentals/ExtendingNeoClasses.md +1 -0
- package/learn/guides/fundamentals/InstanceLifecycle.md +3 -1
- package/learn/guides/fundamentals/MainThreadAddons.md +2 -0
- package/learn/guides/specificfeatures/Mixins.md +3 -1
- package/learn/guides/specificfeatures/MultiWindow.md +3 -1
- package/learn/guides/specificfeatures/PortalApp.md +2 -0
- package/learn/guides/uibuildingblocks/ComponentsAndContainers.md +2 -0
- package/learn/guides/uibuildingblocks/CustomComponents.md +2 -0
- package/learn/guides/uibuildingblocks/Layouts.md +2 -0
- package/learn/guides/uibuildingblocks/WorkingWithVDom.md +28 -2
- package/learn/guides/userinteraction/Forms.md +2 -0
- package/learn/guides/userinteraction/events/CustomEvents.md +2 -1
- package/learn/guides/userinteraction/events/DomEvents.md +2 -0
- package/learn/javascript/ClassFeatures.md +4 -3
- package/learn/javascript/Classes.md +10 -13
- package/learn/javascript/Overrides.md +10 -6
- package/learn/javascript/Super.md +12 -8
- package/learn/tree.json +71 -64
- package/learn/tutorials/Earthquakes.md +2 -0
- package/learn/tutorials/RSP.md +3 -1
- package/learn/tutorials/TodoList.md +103 -7
- package/package.json +8 -6
- package/resources/scss/src/apps/email/ComposeView.scss +16 -0
- package/resources/scss/src/apps/email/MainView.scss +5 -0
- package/resources/scss/src/apps/portal/learn/ContentComponent.scss +5 -4
- package/src/DefaultConfig.mjs +12 -2
- package/src/Main.mjs +1 -0
- package/src/Neo.mjs +219 -166
- package/src/Xhr.mjs +1 -0
- package/src/button/Base.mjs +13 -0
- package/src/button/Effect.mjs +16 -2
- package/src/button/Split.mjs +2 -0
- package/src/calendar/store/Calendars.mjs +1 -0
- package/src/calendar/store/Colors.mjs +1 -0
- package/src/calendar/store/Events.mjs +1 -0
- package/src/calendar/view/DayComponent.mjs +2 -0
- package/src/calendar/view/EditEventContainer.mjs +4 -1
- package/src/calendar/view/MainContainer.mjs +13 -0
- package/src/calendar/view/MainContainerStateProvider.mjs +14 -28
- package/src/calendar/view/SettingsContainer.mjs +1 -0
- package/src/calendar/view/YearComponent.mjs +16 -0
- package/src/calendar/view/calendars/ColorsList.mjs +2 -0
- package/src/calendar/view/calendars/Container.mjs +2 -0
- package/src/calendar/view/calendars/EditContainer.mjs +1 -0
- package/src/calendar/view/month/Component.mjs +11 -0
- package/src/calendar/view/settings/GeneralContainer.mjs +1 -0
- package/src/calendar/view/settings/MonthContainer.mjs +1 -0
- package/src/calendar/view/settings/WeekContainer.mjs +1 -0
- package/src/calendar/view/settings/YearContainer.mjs +1 -0
- package/src/calendar/view/week/Component.mjs +15 -1
- package/src/calendar/view/week/TimeAxisComponent.mjs +4 -0
- package/src/code/LivePreview.mjs +51 -23
- package/src/collection/Base.mjs +7 -10
- package/src/collection/Filter.mjs +6 -0
- package/src/collection/Sorter.mjs +3 -0
- package/src/component/Abstract.mjs +412 -0
- package/src/component/Base.mjs +48 -1077
- package/src/component/Canvas.mjs +1 -0
- package/src/component/Chip.mjs +4 -0
- package/src/component/Circle.mjs +14 -0
- package/src/component/Clock.mjs +4 -0
- package/src/component/DateSelector.mjs +12 -0
- package/src/component/Gallery.mjs +11 -0
- package/src/component/Helix.mjs +24 -0
- package/src/component/Label.mjs +1 -0
- package/src/component/Legend.mjs +3 -0
- package/src/component/MagicMoveText.mjs +4 -0
- package/src/component/Progress.mjs +3 -0
- package/src/component/Splitter.mjs +3 -0
- package/src/component/StatusBadge.mjs +6 -0
- package/src/component/Timer.mjs +4 -0
- package/src/component/Toast.mjs +6 -0
- package/src/component/Video.mjs +1 -0
- package/src/component/mwc/Button.mjs +7 -0
- package/src/component/mwc/TextField.mjs +9 -0
- package/src/component/wrapper/AmChart.mjs +2 -0
- package/src/component/wrapper/GoogleMaps.mjs +3 -0
- package/src/component/wrapper/MapboxGL.mjs +5 -0
- package/src/component/wrapper/MonacoEditor.mjs +12 -0
- package/src/container/Accordion.mjs +2 -0
- package/src/container/Base.mjs +7 -3
- package/src/container/Panel.mjs +1 -0
- package/src/container/Viewport.mjs +1 -0
- package/src/controller/Application.mjs +1 -0
- package/src/controller/Base.mjs +1 -0
- package/src/controller/Component.mjs +1 -0
- package/src/core/Base.mjs +86 -33
- package/src/core/Compare.mjs +4 -7
- package/src/core/Config.mjs +65 -52
- package/src/core/Effect.mjs +86 -24
- package/src/core/EffectManager.mjs +117 -8
- package/src/core/IdGenerator.mjs +13 -44
- package/src/core/Observable.mjs +69 -65
- package/src/data/Model.mjs +2 -0
- package/src/data/Store.mjs +7 -0
- package/src/data/connection/WebSocket.mjs +2 -0
- package/src/date/DayViewComponent.mjs +2 -0
- package/src/date/SelectorContainer.mjs +14 -0
- package/src/dialog/Base.mjs +8 -0
- package/src/draggable/DragZone.mjs +5 -0
- package/src/draggable/tree/DragZone.mjs +1 -0
- package/src/filter/BooleanContainer.mjs +2 -0
- package/src/filter/NumberContainer.mjs +3 -0
- package/src/filter/ToggleOperatorsButton.mjs +2 -0
- package/src/form/Fieldset.mjs +6 -0
- package/src/form/field/Base.mjs +7 -0
- package/src/form/field/CheckBox.mjs +18 -0
- package/src/form/field/Chip.mjs +1 -0
- package/src/form/field/ComboBox.mjs +8 -0
- package/src/form/field/Country.mjs +1 -0
- package/src/form/field/Currency.mjs +2 -0
- package/src/form/field/Date.mjs +4 -0
- package/src/form/field/Display.mjs +1 -0
- package/src/form/field/Email.mjs +1 -0
- package/src/form/field/FileUpload.mjs +7 -0
- package/src/form/field/Hidden.mjs +1 -0
- package/src/form/field/Number.mjs +7 -0
- package/src/form/field/Password.mjs +1 -0
- package/src/form/field/Phone.mjs +3 -0
- package/src/form/field/Picker.mjs +2 -0
- package/src/form/field/Radio.mjs +1 -0
- package/src/form/field/Range.mjs +3 -0
- package/src/form/field/Search.mjs +2 -0
- package/src/form/field/Text.mjs +43 -5
- package/src/form/field/TextArea.mjs +7 -0
- package/src/form/field/Time.mjs +6 -0
- package/src/form/field/Url.mjs +3 -0
- package/src/form/field/ZipCode.mjs +2 -0
- package/src/form/field/trigger/Base.mjs +3 -0
- package/src/form/field/trigger/Clear.mjs +2 -0
- package/src/form/field/trigger/CopyToClipboard.mjs +2 -0
- package/src/form/field/trigger/Date.mjs +1 -0
- package/src/form/field/trigger/Picker.mjs +1 -0
- package/src/form/field/trigger/Search.mjs +1 -0
- package/src/form/field/trigger/SpinDown.mjs +2 -0
- package/src/form/field/trigger/SpinUp.mjs +1 -0
- package/src/form/field/trigger/Time.mjs +2 -0
- package/src/functional/_export.mjs +6 -0
- package/src/functional/button/Base.mjs +384 -0
- package/src/functional/component/Base.mjs +405 -0
- package/src/functional/defineComponent.mjs +102 -0
- package/src/functional/useConfig.mjs +52 -0
- package/src/functional/useEvent.mjs +43 -0
- package/src/grid/Body.mjs +20 -1
- package/src/grid/Container.mjs +50 -60
- package/src/grid/ScrollManager.mjs +2 -0
- package/src/grid/VerticalScrollbar.mjs +2 -0
- package/src/grid/column/Base.mjs +2 -0
- package/src/grid/header/Button.mjs +7 -0
- package/src/grid/header/Toolbar.mjs +6 -0
- package/src/grid/plugin/AnimateRows.mjs +2 -0
- package/src/layout/Base.mjs +3 -0
- package/src/layout/Card.mjs +1 -0
- package/src/layout/Cube.mjs +18 -4
- package/src/layout/Fit.mjs +1 -0
- package/src/layout/Flexbox.mjs +7 -0
- package/src/layout/Form.mjs +2 -0
- package/src/layout/Grid.mjs +1 -0
- package/src/layout/HBox.mjs +1 -0
- package/src/layout/VBox.mjs +1 -0
- package/src/list/Base.mjs +13 -0
- package/src/list/Chip.mjs +1 -0
- package/src/list/Circle.mjs +2 -0
- package/src/list/Color.mjs +1 -0
- package/src/list/plugin/Animate.mjs +2 -0
- package/src/main/DeltaUpdates.mjs +1 -0
- package/src/main/DomEvents.mjs +2 -0
- package/src/main/addon/CloneNode.mjs +1 -0
- package/src/main/addon/Cookie.mjs +1 -0
- package/src/main/addon/GoogleMaps.mjs +1 -0
- package/src/main/addon/LocalStorage.mjs +1 -0
- package/src/main/addon/MapboxGL.mjs +1 -0
- package/src/main/addon/Markdown.mjs +1 -0
- package/src/main/addon/Navigator.mjs +1 -0
- package/src/main/addon/Popover.mjs +1 -0
- package/src/main/addon/Stylesheet.mjs +1 -0
- package/src/main/addon/WindowPosition.mjs +1 -0
- package/src/manager/Component.mjs +0 -71
- package/src/manager/VDomUpdate.mjs +320 -0
- package/src/menu/List.mjs +6 -0
- package/src/menu/Model.mjs +1 -0
- package/src/menu/Panel.mjs +3 -0
- package/src/menu/Store.mjs +1 -0
- package/src/mixin/DomEvents.mjs +130 -0
- package/src/mixin/VdomLifecycle.mjs +670 -0
- package/src/plugin/Base.mjs +1 -0
- package/src/plugin/Resizable.mjs +2 -0
- package/src/selection/Model.mjs +15 -18
- package/src/selection/grid/BaseModel.mjs +1 -0
- package/src/sitemap/Component.mjs +1 -0
- package/src/state/Provider.mjs +129 -87
- package/src/state/createHierarchicalDataProxy.mjs +39 -25
- package/src/tab/Container.mjs +6 -0
- package/src/tab/Strip.mjs +1 -0
- package/src/tab/header/Button.mjs +2 -0
- package/src/tab/header/EffectButton.mjs +2 -0
- package/src/tab/header/Toolbar.mjs +1 -0
- package/src/table/Body.mjs +3 -0
- package/src/table/Container.mjs +10 -0
- package/src/table/header/Button.mjs +8 -0
- package/src/table/header/Toolbar.mjs +5 -0
- package/src/table/plugin/CellEditing.mjs +1 -0
- package/src/toolbar/Base.mjs +4 -0
- package/src/toolbar/Breadcrumb.mjs +3 -0
- package/src/toolbar/Paging.mjs +5 -0
- package/src/tooltip/Base.mjs +2 -0
- package/src/tree/List.mjs +3 -0
- package/src/util/HashHistory.mjs +1 -0
- package/src/util/KeyNavigation.mjs +2 -0
- package/src/util/Matrix.mjs +1 -0
- package/src/util/VDom.mjs +18 -5
- package/src/util/VNode.mjs +7 -1
- package/src/util/vdom/TreeBuilder.mjs +105 -0
- package/src/vdom/Helper.mjs +35 -23
- package/src/vdom/VNode.mjs +4 -6
- package/src/worker/App.mjs +1 -0
- package/src/worker/Base.mjs +2 -0
- package/src/worker/Manager.mjs +2 -0
- package/src/worker/ServiceBase.mjs +6 -1
- package/src/worker/mixin/RemoteMethodAccess.mjs +1 -6
- package/test/siesta/siesta.js +17 -2
- package/test/siesta/tests/VdomCalendar.mjs +19 -15
- package/test/siesta/tests/VdomHelper.mjs +7 -7
- package/test/siesta/tests/classic/Button.mjs +113 -0
- package/test/siesta/tests/core/Effect.mjs +10 -14
- package/test/siesta/tests/core/EffectBatching.mjs +72 -79
- package/test/siesta/tests/functional/Button.mjs +113 -0
- package/test/siesta/tests/state/ProviderNestedDataConfigs.mjs +314 -0
- package/test/siesta/tests/state/createHierarchicalDataProxy.mjs +42 -55
- package/test/siesta/tests/vdom/Advanced.mjs +14 -8
- package/test/siesta/tests/vdom/VdomAsymmetricUpdates.mjs +366 -0
- package/test/siesta/tests/vdom/VdomRealWorldUpdates.mjs +249 -0
- package/test/siesta/tests/vdom/layout/Cube.mjs +11 -7
- package/test/siesta/tests/vdom/table/Container.mjs +9 -5
- package/learn/javascript/NewNode.md +0 -31
- package/src/core/EffectBatchManager.mjs +0 -68
package/src/core/Observable.mjs
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
import Base from './Base.mjs';
|
2
2
|
import NeoArray from '../util/Array.mjs';
|
3
|
+
import {isDescriptor} from '../core/ConfigSymbols.mjs';
|
3
4
|
import {resolveCallback} from '../util/Function.mjs';
|
4
5
|
|
6
|
+
/**
|
7
|
+
* A unique, non-enumerable key for the internal event map.
|
8
|
+
* Using a Symbol prevents property name collisions on the consuming class instance,
|
9
|
+
* providing a robust way to manage private state within a mixin.
|
10
|
+
* @type {Symbol}
|
11
|
+
*/
|
12
|
+
const eventMapSymbol = Symbol('eventMap');
|
13
|
+
|
5
14
|
/**
|
6
15
|
* @class Neo.core.Observable
|
7
16
|
* @extends Neo.core.Base
|
@@ -19,12 +28,35 @@ class Observable extends Base {
|
|
19
28
|
*/
|
20
29
|
ntype: 'mixin-observable',
|
21
30
|
/**
|
22
|
-
*
|
23
|
-
*
|
31
|
+
* A declarative way to assign event listeners to an instance upon creation.
|
32
|
+
* The framework processes this config and calls `on()` to populate the
|
33
|
+
* internal event registry. This config should not be manipulated directly after
|
34
|
+
* instantiation; use `on()` and `un()` instead.
|
35
|
+
* @member {Object|null} listeners_
|
36
|
+
* @example
|
37
|
+
* listeners: {
|
38
|
+
* myEvent: 'onMyEvent',
|
39
|
+
* otherEvent: {
|
40
|
+
* fn: 'onOtherEvent',
|
41
|
+
* delay: 100,
|
42
|
+
* once: true
|
43
|
+
* },
|
44
|
+
* scope: this
|
45
|
+
* }
|
46
|
+
* @reactive
|
24
47
|
*/
|
25
|
-
|
48
|
+
listeners_: {
|
49
|
+
[isDescriptor]: true,
|
50
|
+
merge : 'deep',
|
51
|
+
value : {}
|
52
|
+
}
|
26
53
|
}
|
27
54
|
|
55
|
+
/**
|
56
|
+
* @member {Object} [eventMapSymbol]
|
57
|
+
* @private
|
58
|
+
*/
|
59
|
+
|
28
60
|
/**
|
29
61
|
* @param {Object|String} name
|
30
62
|
* @param {Object} [opts]
|
@@ -101,6 +133,12 @@ class Observable extends Base {
|
|
101
133
|
}
|
102
134
|
|
103
135
|
if (!nameObject) {
|
136
|
+
// LAZY INITIALIZATION: The key to a robust mixin.
|
137
|
+
// This ensures the private internal listener store exists on the instance.
|
138
|
+
// `eventMapSymbol` is the *actual* registry of handler arrays, and is
|
139
|
+
// intentionally separate from the public `listeners_` config.
|
140
|
+
me[eventMapSymbol] ??= {};
|
141
|
+
|
104
142
|
eventConfig = {fn: listener, id: eventId || Neo.getId('event')};
|
105
143
|
|
106
144
|
if (data) {eventConfig.data = data}
|
@@ -108,7 +146,7 @@ class Observable extends Base {
|
|
108
146
|
if (once) {eventConfig.once = once}
|
109
147
|
if (scope) {eventConfig.scope = scope}
|
110
148
|
|
111
|
-
if (existing = me
|
149
|
+
if ((existing = me[eventMapSymbol][name])) {
|
112
150
|
existing.forEach(cfg => {
|
113
151
|
if (cfg.id === eventId || (cfg.fn === listener && cfg.scope === scope)) {
|
114
152
|
console.error('Duplicate event handler attached:', name, me)
|
@@ -123,7 +161,7 @@ class Observable extends Base {
|
|
123
161
|
existing.push(eventConfig)
|
124
162
|
}
|
125
163
|
} else {
|
126
|
-
me
|
164
|
+
me[eventMapSymbol][name] = [eventConfig] // Use the private eventMapSymbol registry
|
127
165
|
}
|
128
166
|
|
129
167
|
return eventConfig.id
|
@@ -132,6 +170,25 @@ class Observable extends Base {
|
|
132
170
|
return null
|
133
171
|
}
|
134
172
|
|
173
|
+
/**
|
174
|
+
* This hook is the bridge between the declarative `listeners_` config and the
|
175
|
+
* imperative `on()`/`un()` methods. It's called automatically by the framework
|
176
|
+
* whenever the `listeners` config property is changed.
|
177
|
+
* @param {Object} value The new listeners object
|
178
|
+
* @param {Object} oldValue The old listeners object
|
179
|
+
* @protected
|
180
|
+
*/
|
181
|
+
afterSetListeners(value, oldValue) {
|
182
|
+
// Unregister any listeners from the old config object
|
183
|
+
if (oldValue && Object.keys(oldValue).length > 0) {
|
184
|
+
this.un(oldValue)
|
185
|
+
}
|
186
|
+
// Register all listeners from the new config object
|
187
|
+
if (value && Object.keys(value).length > 0) {
|
188
|
+
this.on(value)
|
189
|
+
}
|
190
|
+
}
|
191
|
+
|
135
192
|
/**
|
136
193
|
* Call the passed function, or a function by *name* which exists in the passed scope's
|
137
194
|
* or this component's ownership chain.
|
@@ -164,7 +221,7 @@ class Observable extends Base {
|
|
164
221
|
fire(name) {
|
165
222
|
let me = this,
|
166
223
|
args = [].slice.call(arguments, 1),
|
167
|
-
listeners = me.
|
224
|
+
listeners = me[eventMapSymbol], // Always use the private, structured registry for firing events.
|
168
225
|
delay, handler, handlers, i, len;
|
169
226
|
|
170
227
|
if (listeners && listeners[name]) {
|
@@ -203,50 +260,6 @@ class Observable extends Base {
|
|
203
260
|
}
|
204
261
|
}
|
205
262
|
|
206
|
-
/**
|
207
|
-
* @param {Object} config
|
208
|
-
*/
|
209
|
-
initObservable(config) {
|
210
|
-
let me = this,
|
211
|
-
proto = me.__proto__,
|
212
|
-
ctor = proto.constructor,
|
213
|
-
listeners;
|
214
|
-
|
215
|
-
if (config.listeners) {
|
216
|
-
me.listeners = config.listeners;
|
217
|
-
delete config.listeners
|
218
|
-
}
|
219
|
-
|
220
|
-
listeners = me.listeners;
|
221
|
-
|
222
|
-
me.listeners = {};
|
223
|
-
|
224
|
-
if (listeners) {
|
225
|
-
if (Neo.isObject(listeners)) {
|
226
|
-
listeners = {...listeners}
|
227
|
-
}
|
228
|
-
|
229
|
-
me.addListener(listeners);
|
230
|
-
}
|
231
|
-
|
232
|
-
while (proto?.constructor.isClass) {
|
233
|
-
ctor = proto.constructor;
|
234
|
-
|
235
|
-
if (ctor.observable && !ctor.listeners) {
|
236
|
-
Object.assign(ctor, {
|
237
|
-
addListener : me.addListener,
|
238
|
-
fire : me.fire,
|
239
|
-
listeners : {},
|
240
|
-
on : me.on,
|
241
|
-
removeListener: me.removeListener,
|
242
|
-
un : me.un
|
243
|
-
})
|
244
|
-
}
|
245
|
-
|
246
|
-
proto = proto.__proto__
|
247
|
-
}
|
248
|
-
}
|
249
|
-
|
250
263
|
/**
|
251
264
|
* Alias for addListener
|
252
265
|
* @param {Object|String} name
|
@@ -287,6 +300,9 @@ class Observable extends Base {
|
|
287
300
|
let me = this,
|
288
301
|
i, len, listener, listeners, match;
|
289
302
|
|
303
|
+
// LAZY INITIALIZATION: Ensure the internal listener store exists.
|
304
|
+
me[eventMapSymbol] ??= {};
|
305
|
+
|
290
306
|
if (Neo.isFunction(eventId)) {
|
291
307
|
me.removeListener({[name]: eventId, scope});
|
292
308
|
return
|
@@ -299,7 +315,7 @@ class Observable extends Base {
|
|
299
315
|
}
|
300
316
|
|
301
317
|
Object.entries(name).forEach(([key, value]) => {
|
302
|
-
listeners = me
|
318
|
+
listeners = me[eventMapSymbol][key] || [];
|
303
319
|
i = 0;
|
304
320
|
len = listeners.length;
|
305
321
|
|
@@ -314,9 +330,9 @@ class Observable extends Base {
|
|
314
330
|
break
|
315
331
|
}
|
316
332
|
}
|
317
|
-
})
|
333
|
+
})
|
318
334
|
} else if (Neo.isString(eventId)) {
|
319
|
-
listeners = me
|
335
|
+
listeners = me[eventMapSymbol][name];
|
320
336
|
match = false;
|
321
337
|
|
322
338
|
listeners.forEach((eventConfig, idx) => {
|
@@ -331,18 +347,6 @@ class Observable extends Base {
|
|
331
347
|
}
|
332
348
|
}
|
333
349
|
|
334
|
-
// removeAllListeners: function(name) {
|
335
|
-
|
336
|
-
// },
|
337
|
-
|
338
|
-
// suspendListeners: function(queue) {
|
339
|
-
|
340
|
-
// },
|
341
|
-
|
342
|
-
// resumeListeners: function() {
|
343
|
-
|
344
|
-
// }
|
345
|
-
|
346
350
|
/**
|
347
351
|
* Alias for removeListener
|
348
352
|
* @param {Object|String} name
|
package/src/data/Model.mjs
CHANGED
package/src/data/Store.mjs
CHANGED
@@ -7,6 +7,7 @@ import RecordFactory from './RecordFactory.mjs';
|
|
7
7
|
/**
|
8
8
|
* @class Neo.data.Store
|
9
9
|
* @extends Neo.collection.Base
|
10
|
+
* @mixes Neo.core.Observable
|
10
11
|
*/
|
11
12
|
class Store extends Base {
|
12
13
|
/**
|
@@ -42,6 +43,7 @@ class Store extends Base {
|
|
42
43
|
* @example
|
43
44
|
* api: 'MyApp.backend.UserService'
|
44
45
|
* @member {Object|String|null} api_=null
|
46
|
+
* @reactive
|
45
47
|
*/
|
46
48
|
api_: null,
|
47
49
|
/**
|
@@ -50,14 +52,17 @@ class Store extends Base {
|
|
50
52
|
autoLoad: false,
|
51
53
|
/**
|
52
54
|
* @member {Number} currentPage_=1
|
55
|
+
* @reactive
|
53
56
|
*/
|
54
57
|
currentPage_: 1,
|
55
58
|
/**
|
56
59
|
* @member {Array|null} data_=null
|
60
|
+
* @reactive
|
57
61
|
*/
|
58
62
|
data_: null,
|
59
63
|
/**
|
60
64
|
* @member {Array|null} initialData_=null
|
65
|
+
* @reactive
|
61
66
|
*/
|
62
67
|
initialData_: null,
|
63
68
|
/**
|
@@ -74,11 +79,13 @@ class Store extends Base {
|
|
74
79
|
isLoading: false,
|
75
80
|
/**
|
76
81
|
* @member {Neo.data.Model} model_=null
|
82
|
+
* @reactive
|
77
83
|
*/
|
78
84
|
model_: null,
|
79
85
|
/**
|
80
86
|
* Use a value of 0 to not limit the pageSize
|
81
87
|
* @member {Number} pageSize_=0
|
88
|
+
* @reactive
|
82
89
|
*/
|
83
90
|
pageSize_: 0,
|
84
91
|
/**
|
@@ -5,6 +5,7 @@ import Observable from '../../core/Observable.mjs';
|
|
5
5
|
/**
|
6
6
|
* @class Neo.data.connection.WebSocket
|
7
7
|
* @extends Neo.core.Base
|
8
|
+
* @mixes Neo.core.Observable
|
8
9
|
*/
|
9
10
|
class Socket extends Base {
|
10
11
|
/**
|
@@ -28,6 +29,7 @@ class Socket extends Base {
|
|
28
29
|
/**
|
29
30
|
* @member {WebSocket|null} socket_=null
|
30
31
|
* @protected
|
32
|
+
* @reactive
|
31
33
|
*/
|
32
34
|
socket_: null
|
33
35
|
}
|
@@ -41,6 +41,7 @@ class DayViewComponent extends Base {
|
|
41
41
|
/**
|
42
42
|
* @member {Date|null} currentDate_=null
|
43
43
|
* @protected
|
44
|
+
* @reactive
|
44
45
|
*/
|
45
46
|
currentDate_: null,
|
46
47
|
/**
|
@@ -51,6 +52,7 @@ class DayViewComponent extends Base {
|
|
51
52
|
/**
|
52
53
|
* 0-6 => Sun-Sat
|
53
54
|
* @member {Number} weekStartDay_=0
|
55
|
+
* @reactive
|
54
56
|
*/
|
55
57
|
weekStartDay_: 0,
|
56
58
|
/**
|
@@ -40,6 +40,7 @@ class SelectorContainer extends Container {
|
|
40
40
|
* Date object created on the value config
|
41
41
|
* @member {Date|null} currentDate_=null
|
42
42
|
* @protected
|
43
|
+
* @reactive
|
43
44
|
*/
|
44
45
|
currentDate_: null,
|
45
46
|
/**
|
@@ -50,17 +51,20 @@ class SelectorContainer extends Container {
|
|
50
51
|
* The format of the column headers.
|
51
52
|
* Valid values are: narrow, short & long
|
52
53
|
* @member {String} dayNameFormat_='short'
|
54
|
+
* @reactive
|
53
55
|
*/
|
54
56
|
dayNameFormat_: 'short',
|
55
57
|
/**
|
56
58
|
* @member {Intl.DateTimeFormat|null} intlFormatDay_=null
|
57
59
|
* @protected
|
60
|
+
* @reactive
|
58
61
|
*/
|
59
62
|
intlFormatDay_: null,
|
60
63
|
/**
|
61
64
|
* Internal flag to prevent changing the date while change animations are still running
|
62
65
|
* @member {Boolean} isUpdating_=false
|
63
66
|
* @protected
|
67
|
+
* @reactive
|
64
68
|
*/
|
65
69
|
isUpdating_: false,
|
66
70
|
/**
|
@@ -104,14 +108,17 @@ class SelectorContainer extends Container {
|
|
104
108
|
keys: {},
|
105
109
|
/**
|
106
110
|
* @member {String} locale_=Neo.config.locale
|
111
|
+
* @reactive
|
107
112
|
*/
|
108
113
|
locale_: Neo.config.locale,
|
109
114
|
/**
|
110
115
|
* @member {String|null} maxValue_=null
|
116
|
+
* @reactive
|
111
117
|
*/
|
112
118
|
maxValue_: null,
|
113
119
|
/**
|
114
120
|
* @member {String|null} minValue_=null
|
121
|
+
* @reactive
|
115
122
|
*/
|
116
123
|
minValue_: null,
|
117
124
|
/**
|
@@ -129,24 +136,29 @@ class SelectorContainer extends Container {
|
|
129
136
|
/**
|
130
137
|
* Either pass a selection.Model module, an instance or a config object
|
131
138
|
* @member {Object|Neo.selection.Model} selectionModel_=null
|
139
|
+
* @reactive
|
132
140
|
*/
|
133
141
|
selectionModel_: null,
|
134
142
|
/**
|
135
143
|
* True to show inner cell & header cell borders
|
136
144
|
* @member {Boolean} showCellBorders_=true
|
145
|
+
* @reactive
|
137
146
|
*/
|
138
147
|
showCellBorders_: false,
|
139
148
|
/**
|
140
149
|
* True to show the days of the previous or next month (not selectable)
|
141
150
|
* @member {Boolean} showDisabledDays_=true
|
151
|
+
* @reactive
|
142
152
|
*/
|
143
153
|
showDisabledDays_: true,
|
144
154
|
/**
|
145
155
|
* @member {Boolean} showWeekends_=true
|
156
|
+
* @reactive
|
146
157
|
*/
|
147
158
|
showWeekends_: true,
|
148
159
|
/**
|
149
160
|
* @member {Neo.state.Provider} stateProvider=SelectorContainerStateProvider
|
161
|
+
* @reactive
|
150
162
|
*/
|
151
163
|
stateProvider: SelectorContainerStateProvider,
|
152
164
|
/**
|
@@ -156,11 +168,13 @@ class SelectorContainer extends Container {
|
|
156
168
|
useAnimations: true,
|
157
169
|
/**
|
158
170
|
* @member {String} value_=DateUtil.convertToyyyymmdd(new Date())
|
171
|
+
* @reactive
|
159
172
|
*/
|
160
173
|
value_: DateUtil.convertToyyyymmdd(todayDate),
|
161
174
|
/**
|
162
175
|
* 0-6 => Sun-Sat
|
163
176
|
* @member {Number} weekStartDay_=0
|
177
|
+
* @reactive
|
164
178
|
*/
|
165
179
|
weekStartDay_: 0
|
166
180
|
}
|
package/src/dialog/Base.mjs
CHANGED
@@ -35,6 +35,7 @@ class Dialog extends Panel {
|
|
35
35
|
animateOnDragEnd: false,
|
36
36
|
/**
|
37
37
|
* @member {String|null} animateTargetId_=null
|
38
|
+
* @reactive
|
38
39
|
*/
|
39
40
|
animateTargetId_: null,
|
40
41
|
/**
|
@@ -68,6 +69,7 @@ class Dialog extends Panel {
|
|
68
69
|
closeAction: 'close',
|
69
70
|
/**
|
70
71
|
* @member {Boolean} draggable_=true
|
72
|
+
* @reactive
|
71
73
|
*/
|
72
74
|
draggable_: true,
|
73
75
|
/**
|
@@ -102,6 +104,7 @@ class Dialog extends Panel {
|
|
102
104
|
isDragging: false,
|
103
105
|
/**
|
104
106
|
* @member {Object} keys={Escape:'onKeyDownEscape'}
|
107
|
+
* @reactive
|
105
108
|
*/
|
106
109
|
keys: {
|
107
110
|
Escape: 'onKeyDownEscape'
|
@@ -112,6 +115,7 @@ class Dialog extends Panel {
|
|
112
115
|
maximizeCls: 'far fa-window-maximize',
|
113
116
|
/**
|
114
117
|
* @member {Boolean} maximized_=false
|
118
|
+
* @reactive
|
115
119
|
*/
|
116
120
|
maximized_: false,
|
117
121
|
/**
|
@@ -120,10 +124,12 @@ class Dialog extends Panel {
|
|
120
124
|
minimizeCls: 'far fa-window-minimize',
|
121
125
|
/**
|
122
126
|
* @member {Boolean} modal_=false
|
127
|
+
* @reactive
|
123
128
|
*/
|
124
129
|
modal_: false,
|
125
130
|
/**
|
126
131
|
* @member {Boolean} resizable_=true
|
132
|
+
* @reactive
|
127
133
|
*/
|
128
134
|
resizable_: true,
|
129
135
|
/**
|
@@ -132,12 +138,14 @@ class Dialog extends Panel {
|
|
132
138
|
resizablePluginConfig: null,
|
133
139
|
/**
|
134
140
|
* @member {String|null} title_=null
|
141
|
+
* @reactive
|
135
142
|
*/
|
136
143
|
title_: null,
|
137
144
|
/**
|
138
145
|
* Set to `true` to have tabbing wrap within this Dialog.
|
139
146
|
* Should be used with `modal`.
|
140
147
|
* @member {Boolean} trapFocus_=false
|
148
|
+
* @reactive
|
141
149
|
*/
|
142
150
|
trapFocus_: false
|
143
151
|
}
|
@@ -7,6 +7,7 @@ import VDomUtil from '../util/VDom.mjs';
|
|
7
7
|
/**
|
8
8
|
* @class Neo.draggable.DragZone
|
9
9
|
* @extends Neo.core.Base
|
10
|
+
* @mixes Neo.core.Observable
|
10
11
|
*/
|
11
12
|
class DragZone extends Base {
|
12
13
|
/**
|
@@ -42,6 +43,7 @@ class DragZone extends Base {
|
|
42
43
|
/**
|
43
44
|
* The name of the App this instance belongs to
|
44
45
|
* @member {String|null} appName_=null
|
46
|
+
* @reactive
|
45
47
|
*/
|
46
48
|
appName_: null,
|
47
49
|
/**
|
@@ -85,6 +87,7 @@ class DragZone extends Base {
|
|
85
87
|
dragProxy: null,
|
86
88
|
/**
|
87
89
|
* @member {Object|null} dragProxyConfig_=null
|
90
|
+
* @reactive
|
88
91
|
*/
|
89
92
|
dragProxyConfig_: null,
|
90
93
|
/**
|
@@ -135,6 +138,7 @@ class DragZone extends Base {
|
|
135
138
|
owner: null,
|
136
139
|
/**
|
137
140
|
* @member {String} proxyParentId_='document.body'
|
141
|
+
* @reactive
|
138
142
|
*/
|
139
143
|
proxyParentId_: 'document.body',
|
140
144
|
/**
|
@@ -156,6 +160,7 @@ class DragZone extends Base {
|
|
156
160
|
useProxyWrapper: true,
|
157
161
|
/**
|
158
162
|
* @member {Number|null} windowId_=null
|
163
|
+
* @reactive
|
159
164
|
*/
|
160
165
|
windowId_: null
|
161
166
|
}
|
@@ -23,6 +23,7 @@ class BooleanContainer extends Container {
|
|
23
23
|
baseCls: ['neo-filter-booleancontainer'],
|
24
24
|
/**
|
25
25
|
* @member {Object} layout={ntype: 'hbox', align: 'center'}
|
26
|
+
* @reactive
|
26
27
|
*/
|
27
28
|
layout: {ntype: 'hbox', align: 'center'},
|
28
29
|
/**
|
@@ -32,6 +33,7 @@ class BooleanContainer extends Container {
|
|
32
33
|
radioConfig: null,
|
33
34
|
/**
|
34
35
|
* @member {Boolean|null} value_=null
|
36
|
+
* @reactive
|
35
37
|
*/
|
36
38
|
value_: null
|
37
39
|
}
|
@@ -33,6 +33,7 @@ class NumberContainer extends Container {
|
|
33
33
|
fieldModule: Number,
|
34
34
|
/**
|
35
35
|
* @member {Object} layout={ntype: 'hbox', align: 'stretch'}
|
36
|
+
* @reactive
|
36
37
|
*/
|
37
38
|
layout: {ntype: 'hbox', align: 'stretch'},
|
38
39
|
/**
|
@@ -42,10 +43,12 @@ class NumberContainer extends Container {
|
|
42
43
|
fieldConfig: null,
|
43
44
|
/**
|
44
45
|
* @member {String|null} operator_=null
|
46
|
+
* @reactive
|
45
47
|
*/
|
46
48
|
operator_: null,
|
47
49
|
/**
|
48
50
|
* @member {Boolean|null} value_=null
|
51
|
+
* @reactive
|
49
52
|
*/
|
50
53
|
value_: null
|
51
54
|
}
|
@@ -19,10 +19,12 @@ class ToggleOperatorsButton extends Button {
|
|
19
19
|
ntype: 'filter-toggleoperatorsbutton',
|
20
20
|
/**
|
21
21
|
* @member {String[]} operators_=['===', '>', '<']
|
22
|
+
* @reactive
|
22
23
|
*/
|
23
24
|
operators_: ['===', '>', '<'],
|
24
25
|
/**
|
25
26
|
* @member {String|null} value_=null
|
27
|
+
* @reactive
|
26
28
|
*/
|
27
29
|
value_: null
|
28
30
|
}
|
package/src/form/Fieldset.mjs
CHANGED
@@ -24,14 +24,17 @@ class Fieldset extends FormContainer {
|
|
24
24
|
baseCls: ['neo-fieldset'],
|
25
25
|
/**
|
26
26
|
* @member {Boolean} collapsed_=false,
|
27
|
+
* @reactive
|
27
28
|
*/
|
28
29
|
collapsed_: false,
|
29
30
|
/**
|
30
31
|
* @member {Boolean} collapsible_=true,
|
32
|
+
* @reactive
|
31
33
|
*/
|
32
34
|
collapsible_: true,
|
33
35
|
/**
|
34
36
|
* @member {Boolean} disableItemsOnCollapse_=true,
|
37
|
+
* @reactive
|
35
38
|
*/
|
36
39
|
disableItemsOnCollapse_: true,
|
37
40
|
/**
|
@@ -41,10 +44,12 @@ class Fieldset extends FormContainer {
|
|
41
44
|
hasLabelClickListener: false,
|
42
45
|
/**
|
43
46
|
* @member {String} iconClsChecked_='far fa-check'
|
47
|
+
* @reactive
|
44
48
|
*/
|
45
49
|
iconClsChecked_: 'far fa-check',
|
46
50
|
/**
|
47
51
|
* @member {String} iconClsUnchecked_='far fa-square'
|
52
|
+
* @reactive
|
48
53
|
*/
|
49
54
|
iconClsUnchecked_: 'far fa-square',
|
50
55
|
/**
|
@@ -64,6 +69,7 @@ class Fieldset extends FormContainer {
|
|
64
69
|
legendConfig: null,
|
65
70
|
/**
|
66
71
|
* @member {String} title_=''
|
72
|
+
* @reactive
|
67
73
|
*/
|
68
74
|
title_: '',
|
69
75
|
/**
|
package/src/form/field/Base.mjs
CHANGED
@@ -31,24 +31,29 @@ class Field extends Component {
|
|
31
31
|
* Form groups can get set on any parent component level.
|
32
32
|
* An alternative way for using dots in field names.
|
33
33
|
* @member {String|null} formGroup_=null
|
34
|
+
* @reactive
|
34
35
|
*/
|
35
36
|
formGroup_: null,
|
36
37
|
/**
|
37
38
|
* @member {Object|null} keys={}
|
39
|
+
* @reactive
|
38
40
|
*/
|
39
41
|
keys: {},
|
40
42
|
/**
|
41
43
|
* True indicates that a user has interacted with the form field
|
42
44
|
* @member {Boolean} isTouched_=false
|
45
|
+
* @reactive
|
43
46
|
*/
|
44
47
|
isTouched_: false,
|
45
48
|
/**
|
46
49
|
* Event name which sets isTouched to true. Valid options are 'focusEnter' & 'focusLeave'
|
47
50
|
* @member {String} isTouched_=false
|
51
|
+
* @reactive
|
48
52
|
*/
|
49
53
|
isTouchedEvent_: 'focusLeave',
|
50
54
|
/**
|
51
55
|
* @member {String|null} name_=null
|
56
|
+
* @reactive
|
52
57
|
*/
|
53
58
|
name_: null,
|
54
59
|
/**
|
@@ -57,6 +62,7 @@ class Field extends Component {
|
|
57
62
|
* & accessibility though, so the default got set to true.
|
58
63
|
* Feel free to change it to false to keep the DOM minimal.
|
59
64
|
* @member {Boolean} renderName_=true
|
65
|
+
* @reactive
|
60
66
|
*/
|
61
67
|
renderName_: true,
|
62
68
|
/**
|
@@ -67,6 +73,7 @@ class Field extends Component {
|
|
67
73
|
renderPath: true,
|
68
74
|
/**
|
69
75
|
* @member {*} value_=null
|
76
|
+
* @reactive
|
70
77
|
*/
|
71
78
|
value_: null
|
72
79
|
}
|