@web-atoms/web-controls 2.6.5 → 2.6.7

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.
Files changed (185) hide show
  1. package/dist/html-editor/InlineHtmlEditor.d.ts +1 -1
  2. package/dist/html-editor/InlineHtmlEditor.d.ts.map +1 -1
  3. package/dist/html-editor/InlineHtmlEditor.js +2 -2
  4. package/dist/html-editor/InlineHtmlEditor.js.map +1 -1
  5. package/dist/tsconfig.tsbuildinfo +1 -1
  6. package/dist-esm/ArrayLike.js +14 -12
  7. package/dist-esm/DataAttributes.js +18 -19
  8. package/dist-esm/Focusable.js +10 -11
  9. package/dist-esm/ModuleFiles.js +43 -42
  10. package/dist-esm/NumberFormats.js +60 -56
  11. package/dist-esm/PageNavigator.js +28 -30
  12. package/dist-esm/animations/Animations.js +36 -33
  13. package/dist-esm/basic/AtomChips.js +312 -305
  14. package/dist-esm/basic/AtomRepeater.js +1070 -1035
  15. package/dist-esm/basic/AtomSuggestions.js +97 -107
  16. package/dist-esm/basic/AttachedPopup.js +0 -1
  17. package/dist-esm/basic/Button.js +45 -19
  18. package/dist-esm/basic/ButtonBar.js +84 -64
  19. package/dist-esm/basic/Calendar.js +211 -203
  20. package/dist-esm/basic/CheckBoxList.js +90 -70
  21. package/dist-esm/basic/Checkbox.js +16 -8
  22. package/dist-esm/basic/Chip.js +36 -12
  23. package/dist-esm/basic/ComboBox.js +47 -51
  24. package/dist-esm/basic/DataGrid.js +258 -252
  25. package/dist-esm/basic/DateField.js +149 -127
  26. package/dist-esm/basic/DropDown.js +91 -103
  27. package/dist-esm/basic/DropDownInput.js +78 -106
  28. package/dist-esm/basic/Editable.js +82 -77
  29. package/dist-esm/basic/Expander.js +104 -86
  30. package/dist-esm/basic/FilesDragDrop.js +84 -80
  31. package/dist-esm/basic/Form.js +80 -52
  32. package/dist-esm/basic/FormField.js +164 -106
  33. package/dist-esm/basic/IElement.js +1 -2
  34. package/dist-esm/basic/InlinePopup.js +263 -234
  35. package/dist-esm/basic/InlinePopupButton.js +99 -88
  36. package/dist-esm/basic/InlinePopupControl.js +24 -23
  37. package/dist-esm/basic/ItemPath.js +59 -60
  38. package/dist-esm/basic/LimitedText.js +49 -38
  39. package/dist-esm/basic/ListRepeater.js +13 -14
  40. package/dist-esm/basic/MaskedInput.js +37 -29
  41. package/dist-esm/basic/MaskedInputDiv.js +55 -48
  42. package/dist-esm/basic/MergeNode.js +64 -35
  43. package/dist-esm/basic/PasswordBox.js +32 -17
  44. package/dist-esm/basic/PinchZoomView.js +221 -199
  45. package/dist-esm/basic/PopupButton.js +39 -16
  46. package/dist-esm/basic/PopupMenu.js +3 -4
  47. package/dist-esm/basic/RadioButtonList.js +35 -25
  48. package/dist-esm/basic/RefreshLock.js +41 -42
  49. package/dist-esm/basic/Resizable.js +43 -33
  50. package/dist-esm/basic/Select.js +72 -65
  51. package/dist-esm/basic/SortByButton.js +41 -31
  52. package/dist-esm/basic/Swipe.js +91 -84
  53. package/dist-esm/basic/Switch.js +22 -8
  54. package/dist-esm/basic/TableRepeater.js +29 -33
  55. package/dist-esm/basic/TimeEditor.js +97 -52
  56. package/dist-esm/basic/TitleEditor.js +115 -95
  57. package/dist-esm/basic/ToggleButtonBar.js +21 -22
  58. package/dist-esm/basic/Tooltip.js +49 -47
  59. package/dist-esm/basic/TypeWriter.js +45 -42
  60. package/dist-esm/basic/UploadEvent.js +211 -178
  61. package/dist-esm/basic/ZoomView.js +229 -198
  62. package/dist-esm/basic/combineClasses.js +2 -3
  63. package/dist-esm/basic/elements/AtomPopover.js +270 -253
  64. package/dist-esm/basic/elements/getContainingBlock.js +34 -35
  65. package/dist-esm/basic/elements/relativeRect.js +40 -21
  66. package/dist-esm/desktop-app/DesktopApp.js +65 -80
  67. package/dist-esm/desktop-app/MobileDesktopApp.js +20 -23
  68. package/dist-esm/html-editor/AtomHtmlEditor.js +243 -268
  69. package/dist-esm/html-editor/HtmlEditorCommands.js +6 -4
  70. package/dist-esm/html-editor/InlineHtmlEditor.d.ts +1 -1
  71. package/dist-esm/html-editor/InlineHtmlEditor.d.ts.map +1 -1
  72. package/dist-esm/html-editor/InlineHtmlEditor.js +175 -167
  73. package/dist-esm/html-editor/InlineHtmlEditor.js.map +1 -1
  74. package/dist-esm/html-editor/RangeEditor.js +49 -51
  75. package/dist-esm/html-editor/commands/AddImage.js +40 -35
  76. package/dist-esm/html-editor/commands/AddLink.js +56 -54
  77. package/dist-esm/html-editor/commands/Align.js +24 -7
  78. package/dist-esm/html-editor/commands/AttachFile.js +23 -13
  79. package/dist-esm/html-editor/commands/AttachImage.js +35 -25
  80. package/dist-esm/html-editor/commands/Bold.js +10 -11
  81. package/dist-esm/html-editor/commands/ChangeColor.js +31 -107
  82. package/dist-esm/html-editor/commands/ChangeFont.js +42 -42
  83. package/dist-esm/html-editor/commands/ChangeFontSize.js +15 -5
  84. package/dist-esm/html-editor/commands/Command.js +34 -16
  85. package/dist-esm/html-editor/commands/CommandButton.js +51 -32
  86. package/dist-esm/html-editor/commands/Headings.js +25 -9
  87. package/dist-esm/html-editor/commands/HorizontalRule.js +9 -10
  88. package/dist-esm/html-editor/commands/HtmlCommands.js +160 -65
  89. package/dist-esm/html-editor/commands/IndentLess.js +10 -11
  90. package/dist-esm/html-editor/commands/IndentMore.js +10 -11
  91. package/dist-esm/html-editor/commands/Italic.js +10 -11
  92. package/dist-esm/html-editor/commands/NumberedList.js +10 -11
  93. package/dist-esm/html-editor/commands/Quote.js +10 -11
  94. package/dist-esm/html-editor/commands/RemoveFormat.js +10 -11
  95. package/dist-esm/html-editor/commands/Separator.js +5 -4
  96. package/dist-esm/html-editor/commands/Source.js +29 -25
  97. package/dist-esm/html-editor/commands/StrikeThrough.js +10 -11
  98. package/dist-esm/html-editor/commands/Toolbar.js +6 -4
  99. package/dist-esm/html-editor/commands/Underline.js +10 -11
  100. package/dist-esm/html-editor/commands/Unlink.js +10 -9
  101. package/dist-esm/html-editor/commands/UnorderedList.js +10 -11
  102. package/dist-esm/mobile-app/BottomPopup.js +137 -148
  103. package/dist-esm/mobile-app/MasterDetailPage.js +153 -152
  104. package/dist-esm/mobile-app/MobileApp.js +577 -569
  105. package/dist-esm/player/AtomVideoPlayer.js +316 -270
  106. package/dist-esm/player/TrackProgress.js +11 -7
  107. package/dist-esm/player/input-range-style.js +97 -98
  108. package/dist-esm/tests/app-test/AppTestApp.js +12 -15
  109. package/dist-esm/tests/app-test/AppTestApp.pack.js +54 -0
  110. package/dist-esm/tests/app-test/commands/AppCommands.js +14 -11
  111. package/dist-esm/tests/app-test/drawer/AppDrawer.js +4 -6
  112. package/dist-esm/tests/app-test/model/model.js +1 -2
  113. package/dist-esm/tests/app-test/pages/detail/DetailPage.js +21 -15
  114. package/dist-esm/tests/app-test/pages/home/HomePage.js +7 -8
  115. package/dist-esm/tests/app-test/pages/list/ListPage.js +79 -62
  116. package/dist-esm/tests/basic/PopupTest.js +9 -7
  117. package/dist-esm/tests/basic/TimeEditorTest.js +5 -9
  118. package/dist-esm/tests/basic/TimeEditorTest.pack.js +39 -0
  119. package/dist-esm/tests/basic/TimerTest.js +27 -37
  120. package/dist-esm/tests/basic/TimerTest.pack.js +40 -0
  121. package/dist-esm/tests/basic/basic-form/BasicForm.js +47 -27
  122. package/dist-esm/tests/basic/basic-form/BasicForm.pack.js +44 -0
  123. package/dist-esm/tests/basic/calendar/BasicCalendarTest.js +5 -9
  124. package/dist-esm/tests/basic/calendar/BasicCalendarTest.pack.js +53 -0
  125. package/dist-esm/tests/basic/chips/ChipsTest.js +25 -15
  126. package/dist-esm/tests/basic/chips/ChipsTest.pack.js +56 -0
  127. package/dist-esm/tests/basic/data-grid/DataGridTest.js +55 -60
  128. package/dist-esm/tests/basic/data-grid/DataGridTest.pack.js +58 -0
  129. package/dist-esm/tests/basic/date/DateFieldTest.js +21 -96
  130. package/dist-esm/tests/basic/date/DateFieldTest.pack.js +57 -0
  131. package/dist-esm/tests/basic/drop-down/DropDownTest.js +25 -19
  132. package/dist-esm/tests/basic/drop-down/DropDownTest.pack.js +52 -0
  133. package/dist-esm/tests/basic/drop-down-input/DropDownTest.js +32 -32
  134. package/dist-esm/tests/basic/drop-down-input/DropDownTest.pack.js +54 -0
  135. package/dist-esm/tests/basic/expander/ExpanderMenuTest.js +20 -14
  136. package/dist-esm/tests/basic/expander/ExpanderMenuTest.pack.js +38 -0
  137. package/dist-esm/tests/basic/expander/ExpanderTest.js +11 -12
  138. package/dist-esm/tests/basic/expander/ExpanderTest.pack.js +38 -0
  139. package/dist-esm/tests/basic/form2/Form2Test.js +26 -24
  140. package/dist-esm/tests/basic/form2/Form2Test.pack.js +46 -0
  141. package/dist-esm/tests/basic/limited-text/LimitedTextTest.js +14 -11
  142. package/dist-esm/tests/basic/limited-text/LimitedTextTest.pack.js +38 -0
  143. package/dist-esm/tests/basic/pinch-zoom/PinchZoomViewTest.js +14 -14
  144. package/dist-esm/tests/basic/pinch-zoom/PinchZoomViewTest.pack.js +38 -0
  145. package/dist-esm/tests/basic/repeater/DragDropRepater.js +30 -12
  146. package/dist-esm/tests/basic/repeater/DragDropRepater.pack.js +51 -0
  147. package/dist-esm/tests/basic/repeater/RepeaterTest.js +45 -35
  148. package/dist-esm/tests/basic/repeater/RepeaterTest.pack.js +52 -0
  149. package/dist-esm/tests/basic/swipe/SwipeTest.js +13 -13
  150. package/dist-esm/tests/basic/swipe/SwipeTest.pack.js +52 -0
  151. package/dist-esm/tests/basic/switch-test/SwitchTest.js +8 -10
  152. package/dist-esm/tests/basic/switch-test/SwitchTest.pack.js +38 -0
  153. package/dist-esm/tests/basic/title-editor/TitleEditorTest.js +8 -9
  154. package/dist-esm/tests/basic/title-editor/TitleEditorTest.pack.js +38 -0
  155. package/dist-esm/tests/basic/tooltip/TooltipTest.js +30 -24
  156. package/dist-esm/tests/basic/tooltip/TooltipTest.pack.js +52 -0
  157. package/dist-esm/tests/basic/typewriter/TypeWriter.js +10 -9
  158. package/dist-esm/tests/basic/typewriter/TypeWriter.pack.js +39 -0
  159. package/dist-esm/tests/basic/video/AtomVideoTest.js +13 -10
  160. package/dist-esm/tests/basic/video/AtomVideoTest.pack.js +38 -0
  161. package/dist-esm/tests/basic/zoom/ZoomViewTest.js +13 -13
  162. package/dist-esm/tests/basic/zoom/ZoomViewTest.pack.js +38 -0
  163. package/dist-esm/tests/check-box-list/CheckBoxListSample.js +13 -12
  164. package/dist-esm/tests/check-box-list/CheckBoxListSample.pack.js +52 -0
  165. package/dist-esm/tests/data-grid/GridTestViewModel.js +203 -227
  166. package/dist-esm/tests/form/CustomHelp.js +6 -9
  167. package/dist-esm/tests/form/FormViewModel.js +21 -28
  168. package/dist-esm/tests/html-editor/HtmlEditorTest.js +7 -37
  169. package/dist-esm/tests/html-editor/HtmlEditorTest.pack.js +83 -0
  170. package/dist-esm/tests/html-editor/InlineHtmlEdiorTest.js +9 -38
  171. package/dist-esm/tests/html-editor/InlineHtmlEdiorTest.pack.js +85 -0
  172. package/dist-esm/tests/mask/MaskedInputTest.js +11 -12
  173. package/dist-esm/tests/mask/MaskedInputTest.pack.js +38 -0
  174. package/dist-esm/tests/mobile-app/DesktopAppTest.js +8 -9
  175. package/dist-esm/tests/mobile-app/DesktopAppTest.pack.js +60 -0
  176. package/dist-esm/tests/mobile-app/MobileAppTest.js +64 -53
  177. package/dist-esm/tests/mobile-app/MobileAppTest.pack.js +55 -0
  178. package/dist-esm/tests/pop-over/PopOverTest.js +37 -77
  179. package/dist-esm/tests/switch/SwitchTest.js +9 -8
  180. package/dist-esm/tests/toggle-view/ToggleViewTest.js +15 -22
  181. package/dist-esm/tests/toggle-view/ToggleViewTest.pack.js +45 -0
  182. package/dist-esm/toggle-view/AtomToggleView.js +77 -73
  183. package/dist-esm/tsconfig.esm.tsbuildinfo +1 -1
  184. package/package.json +3 -3
  185. package/src/html-editor/InlineHtmlEditor.tsx +1 -1
@@ -3,119 +3,109 @@ import Bind from "@web-atoms/core/dist/core/Bind.js";
3
3
  import { BindableProperty } from "@web-atoms/core/dist/core/BindableProperty.js";
4
4
  import XNode from "@web-atoms/core/dist/core/XNode.js";
5
5
  import AtomRepeater, { askSuggestion, askSuggestionPopup } from "./AtomRepeater.js";
6
- import "./styles/suggestion.global.css";
6
+ ESMPack.installStyleSheet(import.meta.resolve("./styles/suggestion.global.css"));
7
7
  export default class AtomSuggestions extends AtomRepeater {
8
- constructor() {
9
- super(...arguments);
10
- this.isPopupOpen = false;
11
- }
12
- onPropertyChanged(name) {
13
- super.onPropertyChanged(name);
14
- switch (name) {
15
- case "selectedItems":
16
- this.selectedItemsWatcher?.dispose();
17
- const si = this.selectedItems;
18
- if (!si) {
19
- this.selectedItemsWatcher = null;
20
- return;
21
- }
22
- const d = si.watch(() => this.version++);
23
- this.selectedItemsWatcher = this.registerDisposable(d);
24
- this.version++;
25
- break;
26
- case "version":
27
- case "search":
28
- case "items":
29
- this.updateVisibilityFilter();
30
- break;
8
+ constructor() {
9
+ super(...arguments);
10
+ this.isPopupOpen = false;
11
+ }
12
+ onPropertyChanged(name) {
13
+ super.onPropertyChanged(name);
14
+ switch (name) {
15
+ case "selectedItems":
16
+ this.selectedItemsWatcher?.dispose();
17
+ const si = this.selectedItems;
18
+ if (!si) {
19
+ this.selectedItemsWatcher = null;
20
+ return;
31
21
  }
22
+ const d = si.watch(() => this.version++);
23
+ this.selectedItemsWatcher = this.registerDisposable(d);
24
+ this.version++;
25
+ break;
26
+ case "version":
27
+ case "search":
28
+ case "items":
29
+ this.updateVisibilityFilter();
30
+ break;
32
31
  }
33
- updateVisibilityFilter() {
34
- const vp = this.valuePath ?? ((item) => item);
35
- const selectedItems = this.selectedItems ?? [];
36
- const selectedValues = selectedItems.map(vp);
37
- const search = this.match(this.search);
38
- this.visibilityFilter = (item) => {
39
- const v = vp(item);
40
- if (!search(item)) {
41
- return false;
42
- }
43
- return selectedValues.length === 0 || selectedValues.indexOf(v) === -1;
44
- };
32
+ }
33
+ updateVisibilityFilter() {
34
+ const vp = this.valuePath ?? (item => item);
35
+ const selectedItems = this.selectedItems ?? [];
36
+ const selectedValues = selectedItems.map(vp);
37
+ const search = this.match(this.search);
38
+ this.visibilityFilter = item => {
39
+ const v = vp(item);
40
+ if (!search(item)) {
41
+ return false;
42
+ }
43
+ return selectedValues.length === 0 || selectedValues.indexOf(v) === -1;
44
+ };
45
+ }
46
+ create() {
47
+ this.version = 1;
48
+ this.search = "";
49
+ this.render(XNode.create("div", {
50
+ "data-suggestions": "suggestions",
51
+ eventItemClick: e => this.addItem(e.detail)
52
+ }, XNode.create("span", {
53
+ class: "header",
54
+ text: Bind.oneWay(() => this.title)
55
+ }), XNode.create("div", {
56
+ class: "items"
57
+ }), XNode.create("div", {
58
+ class: "more",
59
+ eventClick: Bind.event(() => this.more())
60
+ }, "More")));
61
+ this.itemsPresenter = this.element.children[1];
62
+ this.updateItems();
63
+ }
64
+ async more() {
65
+ if (this.isPopupOpen) {
66
+ return;
45
67
  }
46
- create() {
47
- this.version = 1;
48
- this.search = "";
49
- this.render(XNode.create("div", { "data-suggestions": "suggestions", eventItemClick: (e) => this.addItem(e.detail) },
50
- XNode.create("span", { class: "header", text: Bind.oneWay(() => this.title) }),
51
- XNode.create("div", { class: "items" }),
52
- XNode.create("div", { class: "more", eventClick: Bind.event(() => this.more()) }, "More")));
53
- this.itemsPresenter = this.element.children[1];
54
- this.updateItems();
68
+ this.isPopupOpen = true;
69
+ try {
70
+ const vf = this.visibilityFilter ?? (item => true);
71
+ if (!this.popupSuggestions) {
72
+ const selected = await askSuggestion(this.items.filter(vf), this.suggestionRenderer ?? this.itemRenderer, text => this.match(text), {
73
+ title: this.title
74
+ });
75
+ this.addItem(selected);
76
+ return;
77
+ }
78
+ const selectedItem = await askSuggestionPopup(this, this.items, this.suggestionRenderer ?? this.itemRenderer, text => this.match(text), this.selectedItem);
79
+ this.addItem(selectedItem);
80
+ } finally {
81
+ this.isPopupOpen = false;
55
82
  }
56
- async more() {
57
- if (this.isPopupOpen) {
83
+ }
84
+ addItem(selectedItem) {
85
+ const ce = new CustomEvent("itemSelected", {
86
+ bubbles: true,
87
+ detail: selectedItem,
88
+ cancelable: true
89
+ });
90
+ this.element.dispatchEvent(ce);
91
+ if (!ce.defaultPrevented) {
92
+ const selectedItem = ce.detail;
93
+ const vp = this.valuePath ?? (i => i);
94
+ const value = vp(selectedItem);
95
+ if (this.selectedItems) {
96
+ for (const iterator of this.selectedItems) {
97
+ if (vp(iterator) == value) {
58
98
  return;
99
+ }
59
100
  }
60
- this.isPopupOpen = true;
61
- try {
62
- const vf = this.visibilityFilter ?? ((item) => true);
63
- if (!this.popupSuggestions) {
64
- const selected = await askSuggestion(this.items.filter(vf), this.suggestionRenderer ?? this.itemRenderer, (text) => this.match(text), { title: this.title });
65
- this.addItem(selected);
66
- return;
67
- }
68
- const selectedItem = await askSuggestionPopup(this, this.items, this.suggestionRenderer ?? this.itemRenderer, (text) => this.match(text), this.selectedItem);
69
- this.addItem(selectedItem);
70
- }
71
- finally {
72
- this.isPopupOpen = false;
73
- }
74
- }
75
- addItem(selectedItem) {
76
- const ce = new CustomEvent("itemSelected", {
77
- bubbles: true,
78
- detail: selectedItem,
79
- cancelable: true
80
- });
81
- this.element.dispatchEvent(ce);
82
- if (!ce.defaultPrevented) {
83
- const selectedItem = ce.detail;
84
- const vp = this.valuePath ?? ((i) => i);
85
- const value = vp(selectedItem);
86
- if (this.selectedItems) {
87
- for (const iterator of this.selectedItems) {
88
- if (vp(iterator) == value) {
89
- return;
90
- }
91
- }
92
- }
93
- this.selectedItems?.add(selectedItem);
94
- }
101
+ }
102
+ this.selectedItems?.add(selectedItem);
95
103
  }
104
+ }
96
105
  }
97
- __decorate([
98
- BindableProperty,
99
- __metadata("design:type", String)
100
- ], AtomSuggestions.prototype, "title", void 0);
101
- __decorate([
102
- BindableProperty,
103
- __metadata("design:type", Function)
104
- ], AtomSuggestions.prototype, "match", void 0);
105
- __decorate([
106
- BindableProperty,
107
- __metadata("design:type", String)
108
- ], AtomSuggestions.prototype, "search", void 0);
109
- __decorate([
110
- BindableProperty,
111
- __metadata("design:type", Number)
112
- ], AtomSuggestions.prototype, "version", void 0);
113
- __decorate([
114
- BindableProperty,
115
- __metadata("design:type", Function)
116
- ], AtomSuggestions.prototype, "suggestionRenderer", void 0);
117
- __decorate([
118
- BindableProperty,
119
- __metadata("design:type", Boolean)
120
- ], AtomSuggestions.prototype, "popupSuggestions", void 0);
121
- //# sourceMappingURL=AtomSuggestions.js.map
106
+ __decorate([BindableProperty, __metadata("design:type", String)], AtomSuggestions.prototype, "title", void 0);
107
+ __decorate([BindableProperty, __metadata("design:type", Function)], AtomSuggestions.prototype, "match", void 0);
108
+ __decorate([BindableProperty, __metadata("design:type", String)], AtomSuggestions.prototype, "search", void 0);
109
+ __decorate([BindableProperty, __metadata("design:type", Number)], AtomSuggestions.prototype, "version", void 0);
110
+ __decorate([BindableProperty, __metadata("design:type", Function)], AtomSuggestions.prototype, "suggestionRenderer", void 0);
111
+ __decorate([BindableProperty, __metadata("design:type", Boolean)], AtomSuggestions.prototype, "popupSuggestions", void 0);
@@ -1 +0,0 @@
1
- //# sourceMappingURL=AttachedPopup.js.map
@@ -1,23 +1,49 @@
1
1
  import XNode from "@web-atoms/core/dist/core/XNode.js";
2
- import "./Button.local.css";
2
+ ESMPack.installStyleSheet(import.meta.resolve("./Button.local.css"));
3
3
  const css = "web-atoms-button";
4
- export default function Button({ id, icon, text, eventClick, href, target, title, styleDisplay, class: className, subClass }) {
5
- console.warn("Deprecated, use data-layout=icon-button");
6
- const cn = className ?? (subClass
7
- ? subClass + " " + css
8
- : css);
9
- if (href) {
10
- if (text) {
11
- return XNode.create("a", { id: id, class: cn, target: target, title: title, styleDisplay: styleDisplay },
12
- XNode.create("label", { class: "label" },
13
- XNode.create("i", { class: icon }),
14
- text && XNode.create("span", { text: text })));
15
- }
4
+ export default function Button({
5
+ id,
6
+ icon,
7
+ text,
8
+ eventClick,
9
+ href,
10
+ target,
11
+ title,
12
+ styleDisplay,
13
+ class: className,
14
+ subClass
15
+ }) {
16
+ console.warn("Deprecated, use data-layout=icon-button");
17
+ const cn = className ?? (subClass ? subClass + " " + css : css);
18
+ if (href) {
19
+ if (text) {
20
+ return XNode.create("a", {
21
+ id: id,
22
+ class: cn,
23
+ target: target,
24
+ title: title,
25
+ styleDisplay: styleDisplay
26
+ }, XNode.create("label", {
27
+ class: "label"
28
+ }, XNode.create("i", {
29
+ class: icon
30
+ }), text && XNode.create("span", {
31
+ text: text
32
+ })));
16
33
  }
17
- return XNode.create("button", { id: id, class: cn, eventClick: eventClick, title: title, styleDisplay: styleDisplay },
18
- XNode.create("label", { class: "label" },
19
- XNode.create("i", { class: icon }),
20
- text && XNode.create("span", { text: text })));
34
+ }
35
+ return XNode.create("button", {
36
+ id: id,
37
+ class: cn,
38
+ eventClick: eventClick,
39
+ title: title,
40
+ styleDisplay: styleDisplay
41
+ }, XNode.create("label", {
42
+ class: "label"
43
+ }, XNode.create("i", {
44
+ class: icon
45
+ }), text && XNode.create("span", {
46
+ text: text
47
+ })));
21
48
  }
22
- Button.className = css;
23
- //# sourceMappingURL=Button.js.map
49
+ Button.className = css;
@@ -1,83 +1,103 @@
1
1
  import XNode from "@web-atoms/core/dist/core/XNode.js";
2
2
  import { AtomControl } from "@web-atoms/core/dist/web/controls/AtomControl.js";
3
- import "./ButtonBar.global.css";
3
+ ESMPack.installStyleSheet(import.meta.resolve("./ButtonBar.global.css"));
4
4
  let nid = 1;
5
5
  const labelPathSetter = AtomControl.registerProperty("data-button-bar-items", "label", (ctrl, element, value) => {
6
- element["labelPath"] = value;
6
+ element["labelPath"] = value;
7
7
  });
8
8
  const valuePathSetter = AtomControl.registerProperty("data-button-bar-items", "value", (ctrl, element, value) => {
9
- element["valuePath"] = value;
9
+ element["valuePath"] = value;
10
10
  });
11
11
  const namePathSetter = AtomControl.registerProperty("data-button-bar-items", "name", (ctrl, element, value) => {
12
- element["namePath"] = value;
12
+ element["namePath"] = value;
13
13
  });
14
14
  const itemRendererSetter = AtomControl.registerProperty("data-button-bar-items", "renderer", (ctrl, element, value) => {
15
- element["itemRenderer"] = value;
15
+ element["itemRenderer"] = value;
16
16
  });
17
17
  const refreshItems = (element, items) => {
18
- items ??= element["items"];
19
- const lp = element["labelPath"] ?? ((item) => item?.label ?? item);
20
- const vp = element["valuePath"] ?? ((item) => item?.value ?? item);
21
- const ir = element["itemRenderer"] ?? ((item) => XNode.create("div", { text: lp(item) }));
22
- const name = element["namePath"];
23
- let i = 0;
24
- const all = Array.from(element.querySelectorAll(`label`));
25
- for (const element of all) {
26
- element.remove();
27
- }
28
- const control = AtomControl.from(element);
29
- const hidden = element.querySelector(`input.hidden`);
30
- const cv = hidden.value;
31
- if (items?.length) {
32
- for (const iterator of items) {
33
- const item = document.createElement("label");
34
- const labelName = name + i;
35
- const value = vp(iterator);
36
- let checked = false;
37
- if (cv !== void 0) {
38
- if (cv == value) {
39
- checked = true;
40
- }
41
- }
42
- item.setAttribute("for", labelName);
43
- element.appendChild(item);
44
- control.render(XNode.create("div", null,
45
- " ",
46
- XNode.create("input", { id: labelName, type: "radio", name: name, value: value, checked: checked }),
47
- " ",
48
- ir(iterator)), item, control);
49
- i++;
18
+ items ??= element["items"];
19
+ const lp = element["labelPath"] ?? (item => item?.label ?? item);
20
+ const vp = element["valuePath"] ?? (item => item?.value ?? item);
21
+ const ir = element["itemRenderer"] ?? (item => XNode.create("div", {
22
+ text: lp(item)
23
+ }));
24
+ const name = element["namePath"];
25
+ let i = 0;
26
+ const all = Array.from(element.querySelectorAll(`label`));
27
+ for (const element of all) {
28
+ element.remove();
29
+ }
30
+ const control = AtomControl.from(element);
31
+ const hidden = element.querySelector(`input.hidden`);
32
+ const cv = hidden.value;
33
+ if (items?.length) {
34
+ for (const iterator of items) {
35
+ const item = document.createElement("label");
36
+ const labelName = name + i;
37
+ const value = vp(iterator);
38
+ let checked = false;
39
+ if (cv !== void 0) {
40
+ if (cv == value) {
41
+ checked = true;
50
42
  }
43
+ }
44
+ item.setAttribute("for", labelName);
45
+ element.appendChild(item);
46
+ control.render(XNode.create("div", null, " ", XNode.create("input", {
47
+ id: labelName,
48
+ type: "radio",
49
+ name: name,
50
+ value: value,
51
+ checked: checked
52
+ }), " ", ir(iterator)), item, control);
53
+ i++;
51
54
  }
55
+ }
52
56
  };
53
57
  const itemsSetter = AtomControl.registerProperty("data-items", "value", (ctrl, element, value) => {
54
- element["items"] = value;
55
- ctrl.runAfterInit(() => setTimeout(refreshItems, 1, element, value));
58
+ element["items"] = value;
59
+ ctrl.runAfterInit(() => setTimeout(refreshItems, 1, element, value));
56
60
  });
57
- const changeTracker = (e) => {
58
- if (e.detail) {
59
- return;
60
- }
61
- const target = e.currentTarget;
62
- const hidden = target.querySelector(`input.hidden`);
63
- const buttons = target.querySelectorAll(`input[type="radio"]`);
64
- for (let index = 0; index < buttons.length; index++) {
65
- const element = buttons[index];
66
- if (element.checked) {
67
- hidden.value = element.value;
68
- hidden.dispatchEvent(new CustomEvent("input", { detail: element.value, bubbles: true }));
69
- break;
70
- }
61
+ const changeTracker = e => {
62
+ if (e.detail) {
63
+ return;
64
+ }
65
+ const target = e.currentTarget;
66
+ const hidden = target.querySelector(`input.hidden`);
67
+ const buttons = target.querySelectorAll(`input[type="radio"]`);
68
+ for (let index = 0; index < buttons.length; index++) {
69
+ const element = buttons[index];
70
+ if (element.checked) {
71
+ hidden.value = element.value;
72
+ hidden.dispatchEvent(new CustomEvent("input", {
73
+ detail: element.value,
74
+ bubbles: true
75
+ }));
76
+ break;
71
77
  }
78
+ }
72
79
  };
73
- export default function ButtonBar({ items, labelPath, valuePath, itemRenderer = (x) => XNode.create("div", { text: x.label ?? x }), value, name = `button-bar-${nid++}`, ...a }) {
74
- a[labelPathSetter.property] = labelPath;
75
- a[valuePathSetter.property] = valuePath;
76
- a[itemsSetter.property] = items;
77
- a[itemRendererSetter.property] = itemRenderer;
78
- a[namePathSetter.property] = name;
79
- a["event-change"] = changeTracker;
80
- return XNode.create("button-bar", { ...a },
81
- XNode.create("input", { class: "hidden", value: value }));
82
- }
83
- //# sourceMappingURL=ButtonBar.js.map
80
+ export default function ButtonBar({
81
+ items,
82
+ labelPath,
83
+ valuePath,
84
+ itemRenderer = x => XNode.create("div", {
85
+ text: x.label ?? x
86
+ }),
87
+ value,
88
+ name = `button-bar-${nid++}`,
89
+ ...a
90
+ }) {
91
+ a[labelPathSetter.property] = labelPath;
92
+ a[valuePathSetter.property] = valuePath;
93
+ a[itemsSetter.property] = items;
94
+ a[itemRendererSetter.property] = itemRenderer;
95
+ a[namePathSetter.property] = name;
96
+ a["event-change"] = changeTracker;
97
+ return XNode.create("button-bar", {
98
+ ...a
99
+ }, XNode.create("input", {
100
+ class: "hidden",
101
+ value: value
102
+ }));
103
+ }