diff --git a/source/components/datatable/save-button.mjs b/source/components/datatable/save-button.mjs index 4bc5d7736f3aac9c3b4a373202db3dc6c24b262d..8a4d6d5404e7cb4294e088817e08a2fc6528f326 100644 --- a/source/components/datatable/save-button.mjs +++ b/source/components/datatable/save-button.mjs @@ -32,7 +32,7 @@ import { Datasource } from "./datasource.mjs"; import { Rest as RestDatasource } from "./datasource/rest.mjs"; import { BadgeStyleSheet } from "../stylesheet/badge.mjs"; import { SaveButtonStyleSheet } from "./stylesheet/save-button.mjs"; -import "../form/state-button.mjs"; +import "../form/message-state-button.mjs"; import { handleDataSourceChanges, @@ -315,12 +315,13 @@ function getTranslations() { * @throws {Error} the selector must match exactly one element */ function initControlReferences() { + if (!this.shadowRoot) { throw new Error("no shadow-root is defined"); } this[stateButtonElementSymbol] = this.shadowRoot.querySelector( - "[data-monster-role=state-button]", + "[data-monster-role=save-button]", ); this[badgeElementSymbol] = this.shadowRoot.querySelector( @@ -332,9 +333,9 @@ function initControlReferences() { const states = { changed: new State( "changed", - '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-arrow-up" viewBox="0 0 16 16">\n' + - ' <path fill-rule="evenodd" d="M7.646 5.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707L6.354 7.854a.5.5 0 1 1-.708-.708z"/>\n' + - ' <path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>\n' + + '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-arrow-up" viewBox="0 0 16 16">' + + '<path fill-rule="evenodd" d="M7.646 5.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707L6.354 7.854a.5.5 0 1 1-.708-.708z"/>' + + '<path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>' + "</svg>", ), }; @@ -346,6 +347,9 @@ function initControlReferences() { "labels.button", this.getOption("labels.button"), ); + + console.log(this[stateButtonElementSymbol]) + }); } @@ -399,7 +403,9 @@ function getTemplate() { return ` <div data-monster-role="control" part="control" data-monster-attributes="disabled path:disabled | if:true"> - <monster-state-button data-monster-role="state-button">save</monster-state-button> + <monster-message-state-button part="button" + data-monster-role="save-button" + ></monster-message-state-button> <div data-monster-attributes="disabled path:disabled | if:true, class path:classes.badge" data-monster-role="badge" data-monster-replace="path:changes"></div> diff --git a/source/components/form/api-bar.mjs b/source/components/form/api-bar.mjs index ac8dac636eb9ad389b01dcc6862c7dffd5a8d42b..9ecbc7837ac2f206e4c3f70d8a9228cc232218b8 100644 --- a/source/components/form/api-bar.mjs +++ b/source/components/form/api-bar.mjs @@ -168,6 +168,7 @@ class ApiBar extends ButtonBar { ) { this.importButtons(map); } + return map; }); } diff --git a/source/components/form/message-state-button.mjs b/source/components/form/message-state-button.mjs index 23bccde84b8f79907a79a27c7109881d45a48677..0b8e8e859ff89c1db917a7ac368e6009cfef9e05 100644 --- a/source/components/form/message-state-button.mjs +++ b/source/components/form/message-state-button.mjs @@ -69,6 +69,9 @@ class MessageStateButton extends Popper { * @throws {TypeError} value is not an instance */ setState(state, timeout) { + + console.log(this[buttonElementSymbol]); + return this[buttonElementSymbol].setState(state, timeout); } @@ -81,7 +84,7 @@ class MessageStateButton extends Popper { } /** - * @return {Monster.Components.Form.Types.State|undefined} + * @return {MessageStateButton|undefined} */ getState() { return this[buttonElementSymbol].getState(); diff --git a/source/components/form/state-button.mjs b/source/components/form/state-button.mjs index 612a2ecc645121096db055108e5da5565c4ea3fd..28a10366948615a7f00c3c78073d1b11b8cc619e 100644 --- a/source/components/form/state-button.mjs +++ b/source/components/form/state-button.mjs @@ -107,7 +107,7 @@ class StateButton extends Button { const obj = this.getOption(`states.${validateString(state)}`); if (obj === undefined) { - throw new Error("not found"); + throw new Error("state not found"); } this.setOption("current", validateInstance(obj, State));