@magmonium/one 0.4.30 → 0.4.32

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 (196) hide show
  1. package/assets/button_groups/nav_user_actions.json +1 -0
  2. package/assets/button_groups/notification_filter.json +2 -13
  3. package/assets/buttons/nav_user_edit_profile.json +5 -0
  4. package/assets/docs/en/app-release.md +0 -11
  5. package/assets/i18n/af.json +10 -2
  6. package/assets/i18n/am.json +10 -1
  7. package/assets/i18n/ar.json +10 -2
  8. package/assets/i18n/as.json +11 -2
  9. package/assets/i18n/az.json +11 -2
  10. package/assets/i18n/ba.json +8 -0
  11. package/assets/i18n/be.json +11 -2
  12. package/assets/i18n/bg.json +11 -2
  13. package/assets/i18n/bn.json +11 -2
  14. package/assets/i18n/br.json +7 -0
  15. package/assets/i18n/bs.json +10 -2
  16. package/assets/i18n/ca.json +10 -2
  17. package/assets/i18n/ceb.json +9 -2
  18. package/assets/i18n/cnr.json +8 -0
  19. package/assets/i18n/co.json +7 -1
  20. package/assets/i18n/cs.json +9 -2
  21. package/assets/i18n/cy.json +11 -2
  22. package/assets/i18n/da.json +7 -1
  23. package/assets/i18n/de.json +8 -2
  24. package/assets/i18n/doi.json +9 -0
  25. package/assets/i18n/el.json +10 -2
  26. package/assets/i18n/en.json +21 -4
  27. package/assets/i18n/eo.json +9 -2
  28. package/assets/i18n/es.json +9 -2
  29. package/assets/i18n/et.json +8 -2
  30. package/assets/i18n/eu.json +9 -2
  31. package/assets/i18n/fa.json +10 -2
  32. package/assets/i18n/fi.json +9 -2
  33. package/assets/i18n/fr.json +9 -2
  34. package/assets/i18n/fy.json +6 -2
  35. package/assets/i18n/ga.json +10 -2
  36. package/assets/i18n/gd.json +9 -2
  37. package/assets/i18n/gl.json +8 -1
  38. package/assets/i18n/gu.json +11 -2
  39. package/assets/i18n/ha.json +7 -1
  40. package/assets/i18n/haw.json +8 -2
  41. package/assets/i18n/he.json +8 -0
  42. package/assets/i18n/hi.json +10 -2
  43. package/assets/i18n/hmn.json +6 -2
  44. package/assets/i18n/hr.json +10 -2
  45. package/assets/i18n/hu.json +10 -2
  46. package/assets/i18n/hy.json +11 -2
  47. package/assets/i18n/id.json +10 -2
  48. package/assets/i18n/ig.json +8 -1
  49. package/assets/i18n/ilo.json +6 -0
  50. package/assets/i18n/is.json +10 -2
  51. package/assets/i18n/it.json +9 -2
  52. package/assets/i18n/iw.json +9 -1
  53. package/assets/i18n/ja.json +8 -1
  54. package/assets/i18n/jw.json +8 -2
  55. package/assets/i18n/ka.json +10 -2
  56. package/assets/i18n/kk.json +10 -2
  57. package/assets/i18n/km.json +10 -2
  58. package/assets/i18n/kn.json +11 -2
  59. package/assets/i18n/ko.json +8 -1
  60. package/assets/i18n/kok.json +9 -0
  61. package/assets/i18n/ku.json +10 -2
  62. package/assets/i18n/ky.json +9 -1
  63. package/assets/i18n/la.json +6 -1
  64. package/assets/i18n/lb.json +6 -2
  65. package/assets/i18n/lo.json +10 -2
  66. package/assets/i18n/lt.json +10 -2
  67. package/assets/i18n/lv.json +10 -2
  68. package/assets/i18n/mai.json +9 -0
  69. package/assets/i18n/mg.json +8 -2
  70. package/assets/i18n/mi.json +8 -2
  71. package/assets/i18n/mk.json +10 -2
  72. package/assets/i18n/ml.json +11 -2
  73. package/assets/i18n/mn.json +10 -2
  74. package/assets/i18n/mr.json +11 -2
  75. package/assets/i18n/ms.json +9 -2
  76. package/assets/i18n/mt.json +9 -2
  77. package/assets/i18n/my.json +10 -2
  78. package/assets/i18n/ne.json +10 -2
  79. package/assets/i18n/nl.json +6 -2
  80. package/assets/i18n/no.json +8 -2
  81. package/assets/i18n/ny.json +9 -2
  82. package/assets/i18n/or.json +10 -1
  83. package/assets/i18n/pa.json +11 -2
  84. package/assets/i18n/pl.json +8 -2
  85. package/assets/i18n/ps.json +8 -1
  86. package/assets/i18n/pt.json +9 -2
  87. package/assets/i18n/ro.json +9 -2
  88. package/assets/i18n/ru.json +9 -2
  89. package/assets/i18n/sa.json +9 -0
  90. package/assets/i18n/sat.json +9 -0
  91. package/assets/i18n/sd.json +11 -2
  92. package/assets/i18n/si.json +10 -2
  93. package/assets/i18n/sk.json +6 -1
  94. package/assets/i18n/sl.json +10 -2
  95. package/assets/i18n/sm.json +7 -1
  96. package/assets/i18n/sn.json +6 -2
  97. package/assets/i18n/so.json +8 -1
  98. package/assets/i18n/sq.json +10 -2
  99. package/assets/i18n/sr.json +10 -2
  100. package/assets/i18n/st.json +8 -2
  101. package/assets/i18n/su.json +8 -2
  102. package/assets/i18n/sv.json +8 -2
  103. package/assets/i18n/sw.json +10 -2
  104. package/assets/i18n/ta.json +11 -2
  105. package/assets/i18n/te.json +11 -2
  106. package/assets/i18n/tg.json +11 -2
  107. package/assets/i18n/th.json +10 -1
  108. package/assets/i18n/tl.json +8 -2
  109. package/assets/i18n/tr.json +10 -2
  110. package/assets/i18n/uk.json +11 -2
  111. package/assets/i18n/ur.json +11 -2
  112. package/assets/i18n/uz.json +10 -2
  113. package/assets/i18n/vi.json +10 -1
  114. package/assets/i18n/xh.json +11 -2
  115. package/assets/i18n/yi.json +10 -1
  116. package/assets/i18n/yo.json +9 -1
  117. package/assets/i18n/zh.json +9 -1
  118. package/assets/i18n/zu.json +11 -2
  119. package/assets/index.json +1 -1
  120. package/fesm2022/magmonium-one-attribute-value-DMI0yJpL.mjs +255 -0
  121. package/fesm2022/magmonium-one-attribute-value-DMI0yJpL.mjs.map +1 -0
  122. package/fesm2022/magmonium-one-base-checkbox-C9dvZ2IH.mjs +77 -0
  123. package/fesm2022/magmonium-one-base-checkbox-C9dvZ2IH.mjs.map +1 -0
  124. package/fesm2022/magmonium-one-base-dropdown-U-cWl3p9.mjs +604 -0
  125. package/fesm2022/magmonium-one-base-dropdown-U-cWl3p9.mjs.map +1 -0
  126. package/fesm2022/magmonium-one-base-input-CLBOTOUs.mjs +183 -0
  127. package/fesm2022/magmonium-one-base-input-CLBOTOUs.mjs.map +1 -0
  128. package/fesm2022/magmonium-one-base-text-Zb0oLNRX.mjs +94 -0
  129. package/fesm2022/magmonium-one-base-text-Zb0oLNRX.mjs.map +1 -0
  130. package/fesm2022/magmonium-one-button-Bwzaxxn3.mjs +1281 -0
  131. package/fesm2022/magmonium-one-button-Bwzaxxn3.mjs.map +1 -0
  132. package/fesm2022/magmonium-one-checkbox-CPQ9m291.mjs +365 -0
  133. package/fesm2022/magmonium-one-checkbox-CPQ9m291.mjs.map +1 -0
  134. package/fesm2022/magmonium-one-color-utl-CAbZLKB5.mjs +449 -0
  135. package/fesm2022/magmonium-one-color-utl-CAbZLKB5.mjs.map +1 -0
  136. package/fesm2022/magmonium-one-directives-BVKX77zM.mjs +1285 -0
  137. package/fesm2022/magmonium-one-directives-BVKX77zM.mjs.map +1 -0
  138. package/fesm2022/magmonium-one-file.service-Bo06pU3_.mjs +65 -0
  139. package/fesm2022/magmonium-one-file.service-Bo06pU3_.mjs.map +1 -0
  140. package/fesm2022/magmonium-one-group-D4yYrVP3.mjs +428 -0
  141. package/fesm2022/magmonium-one-group-D4yYrVP3.mjs.map +1 -0
  142. package/fesm2022/magmonium-one-header-DmN8M1a3.mjs +380 -0
  143. package/fesm2022/magmonium-one-header-DmN8M1a3.mjs.map +1 -0
  144. package/fesm2022/magmonium-one-icon-Ep14YeRY.mjs +833 -0
  145. package/fesm2022/magmonium-one-icon-Ep14YeRY.mjs.map +1 -0
  146. package/fesm2022/magmonium-one-image-editor-BX4eNd4u.mjs +438 -0
  147. package/fesm2022/magmonium-one-image-editor-BX4eNd4u.mjs.map +1 -0
  148. package/fesm2022/magmonium-one-image-frame-BTSaUSAi.mjs +116 -0
  149. package/fesm2022/magmonium-one-image-frame-BTSaUSAi.mjs.map +1 -0
  150. package/fesm2022/magmonium-one-input-DqHPorA1.mjs +39 -0
  151. package/fesm2022/magmonium-one-input-DqHPorA1.mjs.map +1 -0
  152. package/fesm2022/magmonium-one-label-D2gjTbKX.mjs +574 -0
  153. package/fesm2022/magmonium-one-label-D2gjTbKX.mjs.map +1 -0
  154. package/fesm2022/magmonium-one-m-ref-Bq0gQbKE.mjs +147 -0
  155. package/fesm2022/magmonium-one-m-ref-Bq0gQbKE.mjs.map +1 -0
  156. package/fesm2022/magmonium-one-menu-BM9f2knw.mjs +887 -0
  157. package/fesm2022/magmonium-one-menu-BM9f2knw.mjs.map +1 -0
  158. package/fesm2022/magmonium-one-multi-range-a3ZVTy7i.mjs +458 -0
  159. package/fesm2022/magmonium-one-multi-range-a3ZVTy7i.mjs.map +1 -0
  160. package/fesm2022/magmonium-one-options-asset-CDEXIif6.mjs +97 -0
  161. package/fesm2022/magmonium-one-options-asset-CDEXIif6.mjs.map +1 -0
  162. package/fesm2022/magmonium-one-otp-DO4oTeSK.mjs +261 -0
  163. package/fesm2022/magmonium-one-otp-DO4oTeSK.mjs.map +1 -0
  164. package/fesm2022/magmonium-one-password-D3oTo41c.mjs +217 -0
  165. package/fesm2022/magmonium-one-password-D3oTo41c.mjs.map +1 -0
  166. package/fesm2022/magmonium-one-radio-CkaWESS3.mjs +111 -0
  167. package/fesm2022/magmonium-one-radio-CkaWESS3.mjs.map +1 -0
  168. package/fesm2022/magmonium-one-range-D_WEKrli.mjs +216 -0
  169. package/fesm2022/magmonium-one-range-D_WEKrli.mjs.map +1 -0
  170. package/fesm2022/magmonium-one-rolldown-runtime-DpJrqANO.mjs +11 -0
  171. package/fesm2022/magmonium-one-selector-BowevmOd.mjs +1065 -0
  172. package/fesm2022/magmonium-one-selector-BowevmOd.mjs.map +1 -0
  173. package/fesm2022/magmonium-one-size-converter-BfT0Aw0g.mjs +1060 -0
  174. package/fesm2022/magmonium-one-size-converter-BfT0Aw0g.mjs.map +1 -0
  175. package/fesm2022/magmonium-one-text-B4xKn-EQ.mjs +406 -0
  176. package/fesm2022/magmonium-one-text-B4xKn-EQ.mjs.map +1 -0
  177. package/fesm2022/magmonium-one-text-output-CfVeqYM7.mjs +296 -0
  178. package/fesm2022/magmonium-one-text-output-CfVeqYM7.mjs.map +1 -0
  179. package/fesm2022/magmonium-one-theme-Xgsx8bJs.mjs +1 -0
  180. package/fesm2022/magmonium-one-toggle-D2XEbN-b.mjs +231 -0
  181. package/fesm2022/magmonium-one-toggle-D2XEbN-b.mjs.map +1 -0
  182. package/fesm2022/magmonium-one.mjs +49250 -2
  183. package/fesm2022/magmonium-one.mjs.map +1 -1
  184. package/package.json +8 -8
  185. package/types/magmonium-one.d.ts +13909 -9533
  186. package/assets/menu/user_header.json +0 -27
  187. package/fesm2022/magmonium-one-image-editor-QPOy7XQt.mjs +0 -290
  188. package/fesm2022/magmonium-one-image-editor-QPOy7XQt.mjs.map +0 -1
  189. package/fesm2022/magmonium-one-magmonium-one-BTi-rHpF.mjs +0 -41583
  190. package/fesm2022/magmonium-one-magmonium-one-BTi-rHpF.mjs.map +0 -1
  191. package/fesm2022/magmonium-one-otp-BcNCgGpz.mjs +0 -201
  192. package/fesm2022/magmonium-one-otp-BcNCgGpz.mjs.map +0 -1
  193. package/fesm2022/magmonium-one-password-BDcSzmV_.mjs +0 -105
  194. package/fesm2022/magmonium-one-password-BDcSzmV_.mjs.map +0 -1
  195. package/fesm2022/magmonium-one-toggle-bLWTwEHE.mjs +0 -62
  196. package/fesm2022/magmonium-one-toggle-bLWTwEHE.mjs.map +0 -1
@@ -0,0 +1,887 @@
1
+ import { K as NAV_STORE_REF, c as TranslatePipe, rt as Assets, v as HttpService } from "./magmonium-one-size-converter-BfT0Aw0g.mjs";
2
+ import { t as SelectorDirective } from "./magmonium-one-selector-BowevmOd.mjs";
3
+ import { r as IconComponent } from "./magmonium-one-icon-Ep14YeRY.mjs";
4
+ import { r as ConfigComponent } from "./magmonium-one-attribute-value-DMI0yJpL.mjs";
5
+ import { t as ButtonComponent } from "./magmonium-one-button-Bwzaxxn3.mjs";
6
+ import * as i0 from "@angular/core";
7
+ import { ChangeDetectionStrategy, Component, ElementRef, afterRenderEffect, computed, inject, input, inputBinding, model, output, outputBinding, signal, untracked, viewChild } from "@angular/core";
8
+ import { of } from "rxjs";
9
+ import { rxResource } from "@angular/core/rxjs-interop";
10
+ import { catchError as catchError$1 } from "rxjs/operators";
11
+ var MenuComponent = class MenuComponent {
12
+ #navRef = inject(NAV_STORE_REF, { optional: true });
13
+ config = input(...ngDevMode ? [void 0, { debugName: "config" }] : /* istanbul ignore next */ []);
14
+ file = input(...ngDevMode ? [void 0, { debugName: "file" }] : /* istanbul ignore next */ []);
15
+ root = input(...ngDevMode ? [void 0, { debugName: "root" }] : /* istanbul ignore next */ []);
16
+ url = input(...ngDevMode ? [void 0, { debugName: "url" }] : /* istanbul ignore next */ []);
17
+ extra = input(...ngDevMode ? [void 0, { debugName: "extra" }] : /* istanbul ignore next */ []);
18
+ hide = input(...ngDevMode ? [void 0, { debugName: "hide" }] : /* istanbul ignore next */ []);
19
+ hideLink = input(false, ...ngDevMode ? [{ debugName: "hideLink" }] : /* istanbul ignore next */ []);
20
+ isAdmin = input(false, ...ngDevMode ? [{ debugName: "isAdmin" }] : /* istanbul ignore next */ []);
21
+ autoFocus = input(false, ...ngDevMode ? [{ debugName: "autoFocus" }] : /* istanbul ignore next */ []);
22
+ action = output();
23
+ visibilityRule = input(...ngDevMode ? [void 0, { debugName: "visibilityRule" }] : /* istanbul ignore next */ []);
24
+ disableRule = input(...ngDevMode ? [void 0, { debugName: "disableRule" }] : /* istanbul ignore next */ []);
25
+ extraData = input(...ngDevMode ? [void 0, { debugName: "extraData" }] : /* istanbul ignore next */ []);
26
+ #httpService = inject(HttpService);
27
+ #tree = signal([], ...ngDevMode ? [{ debugName: "#tree" }] : /* istanbul ignore next */ []);
28
+ #treeMap = signal({}, ...ngDevMode ? [{ debugName: "#treeMap" }] : /* istanbul ignore next */ []);
29
+ #host = inject(ElementRef);
30
+ #focusPending;
31
+ back = signal(void 0, ...ngDevMode ? [{ debugName: "back" }] : /* istanbul ignore next */ []);
32
+ slideDirection = signal("none", ...ngDevMode ? [{ debugName: "slideDirection" }] : /* istanbul ignore next */ []);
33
+ #asyncOptions = rxResource({
34
+ params: computed(() => this.back()?.file ?? this.file()),
35
+ stream: ({ params: file }) => {
36
+ if (!file) return of(void 0);
37
+ return this.#httpService.asset(["menus", file], Assets.JSON).pipe(catchError$1(() => of(void 0)));
38
+ }
39
+ });
40
+ options = computed(() => {
41
+ const back = this.back();
42
+ const async = this.#asyncOptions.value();
43
+ const config = this.config();
44
+ const hide = this.hide();
45
+ const extra = this.extra();
46
+ const isAdmin = this.isAdmin();
47
+ const vRule = this.visibilityRule();
48
+ const data = this.extraData();
49
+ const filterGroups = (groups) => groups.map((group) => group.filter((item) => {
50
+ if (!isAdmin && item.adminOnly) return false;
51
+ if (hide?.length && hide.includes(item.id)) return false;
52
+ if (vRule && !vRule(item.visibilityKey ?? item.id, data)) return false;
53
+ if (item.options) return filterGroups(item.options).length > 0;
54
+ return true;
55
+ })).filter((group) => group.length > 0);
56
+ const result = filterGroups(back ? back.options ?? async ?? [] : async ?? config ?? []);
57
+ return extra?.length && !back ? [...result, extra] : result;
58
+ }, ...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
59
+ isLoading = computed(() => this.#asyncOptions.isLoading(), ...ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []);
60
+ constructor() {
61
+ afterRenderEffect(() => {
62
+ this.options();
63
+ if (this.isLoading()) return;
64
+ const pending = this.#focusPending ?? untracked(this.autoFocus);
65
+ this.#focusPending = false;
66
+ if (pending) this.#host.nativeElement.querySelector(".menu-item:not(.is-disabled)")?.focus();
67
+ });
68
+ }
69
+ moveFocus(event, step) {
70
+ const rows = Array.from(this.#host.nativeElement.querySelectorAll(".back-btn, .menu-item:not(.is-disabled)"));
71
+ if (!rows.length) return;
72
+ event.preventDefault();
73
+ const current = rows.indexOf(document.activeElement);
74
+ rows[current < 0 ? step > 0 ? 0 : rows.length - 1 : (current + step + rows.length) % rows.length].focus();
75
+ }
76
+ selectItem(item) {
77
+ const dRule = this.disableRule();
78
+ if (item.disabled || dRule && dRule(item.disableKey ?? item.id)) return;
79
+ if (item.options || item.file) {
80
+ this.slideDirection.set("forward");
81
+ this.#treeMap.update((map) => ({
82
+ ...map,
83
+ [item.id]: item
84
+ }));
85
+ this.#tree.update((t) => [...t, item.id]);
86
+ this.back.set(item);
87
+ this.#focusPending = this.#hasFocus();
88
+ return;
89
+ }
90
+ if (item.nav) this.#navRef?.setSelected(item.nav, void 0, item.keepPanel ? { keepPanel: true } : void 0);
91
+ this.action.emit(item);
92
+ }
93
+ goBack() {
94
+ this.slideDirection.set("backward");
95
+ this.#focusPending = this.#hasFocus();
96
+ const currentTree = this.#tree();
97
+ if (currentTree.length <= 1) {
98
+ this.#tree.set([]);
99
+ this.back.set(void 0);
100
+ return;
101
+ }
102
+ const newTree = currentTree.slice(0, -1);
103
+ this.#tree.set(newTree);
104
+ const parentId = newTree[newTree.length - 1];
105
+ this.back.set(this.#treeMap()[parentId]);
106
+ }
107
+ #hasFocus() {
108
+ return this.#host.nativeElement.contains(document.activeElement);
109
+ }
110
+ isSelected(item) {
111
+ if (item.nav) return this.#navRef?.id() === item.nav;
112
+ const currentUrl = this.url();
113
+ const rootPath = this.root();
114
+ if (!currentUrl || !item.link) return item.selected ?? false;
115
+ const fullLink = rootPath ? `${rootPath}/${item.link}` : item.link;
116
+ return currentUrl === fullLink || currentUrl.startsWith(fullLink + "/");
117
+ }
118
+ isItemDisabled(item) {
119
+ const dRule = this.disableRule();
120
+ return !!(item.disabled || dRule && dRule(item.disableKey ?? item.id, this.extraData()));
121
+ }
122
+ static ɵfac = i0.ɵɵngDeclareFactory({
123
+ minVersion: "12.0.0",
124
+ version: "22.2.1",
125
+ ngImport: i0,
126
+ type: MenuComponent,
127
+ deps: [],
128
+ target: i0.ɵɵFactoryTarget.Component
129
+ });
130
+ static ɵcmp = i0.ɵɵngDeclareComponent({
131
+ minVersion: "17.0.0",
132
+ version: "22.2.1",
133
+ type: MenuComponent,
134
+ isStandalone: true,
135
+ selector: "m-menu",
136
+ inputs: {
137
+ config: {
138
+ classPropertyName: "config",
139
+ publicName: "config",
140
+ isSignal: true,
141
+ isRequired: false,
142
+ transformFunction: null
143
+ },
144
+ file: {
145
+ classPropertyName: "file",
146
+ publicName: "file",
147
+ isSignal: true,
148
+ isRequired: false,
149
+ transformFunction: null
150
+ },
151
+ root: {
152
+ classPropertyName: "root",
153
+ publicName: "root",
154
+ isSignal: true,
155
+ isRequired: false,
156
+ transformFunction: null
157
+ },
158
+ url: {
159
+ classPropertyName: "url",
160
+ publicName: "url",
161
+ isSignal: true,
162
+ isRequired: false,
163
+ transformFunction: null
164
+ },
165
+ extra: {
166
+ classPropertyName: "extra",
167
+ publicName: "extra",
168
+ isSignal: true,
169
+ isRequired: false,
170
+ transformFunction: null
171
+ },
172
+ hide: {
173
+ classPropertyName: "hide",
174
+ publicName: "hide",
175
+ isSignal: true,
176
+ isRequired: false,
177
+ transformFunction: null
178
+ },
179
+ hideLink: {
180
+ classPropertyName: "hideLink",
181
+ publicName: "hideLink",
182
+ isSignal: true,
183
+ isRequired: false,
184
+ transformFunction: null
185
+ },
186
+ isAdmin: {
187
+ classPropertyName: "isAdmin",
188
+ publicName: "isAdmin",
189
+ isSignal: true,
190
+ isRequired: false,
191
+ transformFunction: null
192
+ },
193
+ autoFocus: {
194
+ classPropertyName: "autoFocus",
195
+ publicName: "autoFocus",
196
+ isSignal: true,
197
+ isRequired: false,
198
+ transformFunction: null
199
+ },
200
+ visibilityRule: {
201
+ classPropertyName: "visibilityRule",
202
+ publicName: "visibilityRule",
203
+ isSignal: true,
204
+ isRequired: false,
205
+ transformFunction: null
206
+ },
207
+ disableRule: {
208
+ classPropertyName: "disableRule",
209
+ publicName: "disableRule",
210
+ isSignal: true,
211
+ isRequired: false,
212
+ transformFunction: null
213
+ },
214
+ extraData: {
215
+ classPropertyName: "extraData",
216
+ publicName: "extraData",
217
+ isSignal: true,
218
+ isRequired: false,
219
+ transformFunction: null
220
+ }
221
+ },
222
+ outputs: { action: "action" },
223
+ host: { listeners: {
224
+ "keydown.arrowdown": "moveFocus($event, 1)",
225
+ "keydown.arrowup": "moveFocus($event, -1)"
226
+ } },
227
+ ngImport: i0,
228
+ template: "<div class=\"menu-container\" [attr.data-slide]=\"slideDirection()\">\n @if (back()) {\n <div\n class=\"back-btn\"\n tabindex=\"0\"\n role=\"button\"\n (click)=\"goBack()\"\n (keydown.enter)=\"goBack()\"\n (keydown.space)=\"goBack()\"\n >\n <div class=\"back-icon\">\n <m-icon [name]=\"'chevron-left'\" color=\"currentColor\" />\n </div>\n <span class=\"back-text\">{{ back()!.label | translate }}</span>\n </div>\n }\n\n <div class=\"menu-content\">\n @if (isLoading()) {\n <div class=\"menu-loading\">\n <div class=\"spinner\"></div>\n </div>\n } @else {\n <div class=\"menu-groups\">\n @for (group of options(); track $index; let last = $last) {\n <div class=\"menu-group\" [class.has-separator]=\"!last\">\n @for (item of group; track item.id) {\n @if (!item.hidden) {\n <div\n class=\"menu-item\"\n [attr.data-testid]=\"item.id + '-btn'\"\n [class.is-selected]=\"isSelected(item)\"\n [class.is-disabled]=\"isItemDisabled(item)\"\n [attr.aria-disabled]=\"isItemDisabled(item) || null\"\n tabindex=\"0\"\n role=\"button\"\n (click)=\"selectItem(item)\"\n (keydown.enter)=\"selectItem(item)\"\n (keydown.space)=\"selectItem(item)\"\n >\n @if (item.icon) {\n <div class=\"item-icon\">\n <m-icon [name]=\"item.icon\" color=\"currentColor\" />\n </div>\n }\n <span class=\"item-text\">{{ item.label | translate }}</span>\n @if (item.options || item.file) {\n <div class=\"item-arrow\">\n <m-icon [name]=\"'chevron-right'\" color=\"currentColor\" />\n </div>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n",
229
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.menu-container{display:flex;flex-direction:column;width:100%;border-radius:0;background:var(--m-menu-background, var(--m-background));border:none;overflow:hidden;transition:transform .3s cubic-bezier(.4,0,.2,1)}.back-btn{height:calc(var(--input-size, .9375rem) * 2);min-height:calc(var(--input-size, .9375rem) * 2);border-width:max(1px,var(--input-size, .9375rem) * .0625);border-radius:calc(var(--input-size, .9375rem) * .4);padding:calc(var(--input-size, .9375rem) * .5) calc(var(--input-size, .9375rem) * .5);gap:calc(var(--input-size, .9375rem) * .375);font-size:var(--input-size, .9375rem);border-color:var(--m-text-secondary);transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.back-btn:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-text-secondary) 6%,transparent)}.back-btn:disabled{opacity:.6;cursor:not-allowed}.back-btn{height:auto;min-height:0;padding:calc(.9375rem * .625) calc(.9375rem * 1.25);gap:calc(.9375rem * .375);border-style:solid;display:inline-flex;justify-content:center;box-sizing:border-box;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:8px;padding:.5859375rem 1.171875rem;border-radius:0;border:none;border-bottom:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);font-weight:400;text-align:left;width:100%;transition:filter .15s ease,background .15s ease,color .15s ease}.back-btn:hover,.back-btn:focus-visible{outline:none;background:color-mix(in srgb,var(--m-text) 8%,transparent);color:var(--m-text)}.back-btn:active{transform:scale(.97)}.back-btn .back-icon{display:flex;align-items:center}.back-btn .back-text{font-size:.9rem;font-weight:500}.menu-content{position:relative;width:100%}.menu-groups{display:flex;flex-direction:column;padding:6px}.menu-group{display:flex;flex-direction:column;gap:2px}.menu-group.has-separator{border-bottom:1px solid var(--m-backdrop-border);margin-bottom:6px;padding-bottom:6px}.menu-item{height:calc(var(--input-size, var(--menu-item-size, .9375rem)) * 2);min-height:calc(var(--input-size, var(--menu-item-size, .9375rem)) * 2);border-width:max(1px,var(--input-size, var(--menu-item-size, .9375rem)) * .0625);border-radius:calc(var(--input-size, var(--menu-item-size, .9375rem)) * .4);padding:calc(var(--input-size, var(--menu-item-size, .9375rem)) * .5) calc(var(--input-size, var(--menu-item-size, .9375rem)) * .5);gap:calc(var(--input-size, var(--menu-item-size, .9375rem)) * .375);font-size:var(--input-size, var(--menu-item-size, .9375rem));border-color:var(--m-text);transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.menu-item:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-text) 6%,transparent)}.menu-item:disabled{opacity:.6;cursor:not-allowed}.menu-item{height:auto;min-height:0;padding:calc(var(--menu-item-size, .9375rem) * .625) calc(var(--menu-item-size, .9375rem) * 1.25);gap:calc(var(--menu-item-size, .9375rem) * .375);border-style:solid;display:inline-flex;justify-content:center;box-sizing:border-box;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:0;border:none;color:var(--m-text);font-weight:400;text-align:left;width:100%;transition:filter .15s ease,background .15s ease,color .15s ease}.menu-item:focus-visible{outline:none}.menu-item:hover:not(.is-disabled):not(.menu-item.is-selected),.menu-item:focus-visible:not(.is-selected){background:color-mix(in srgb,var(--m-text) 8%,transparent);color:var(--m-text)}.menu-item:active:not(.is-disabled){transform:scale(.97)}.menu-item.is-selected{background:var(--m-backdrop-mm);color:var(--m-mm);font-weight:600}.menu-item.is-selected .item-icon{color:var(--m-mm)}.menu-item.is-selected:hover,.menu-item.is-selected:focus-visible{background:color-mix(in srgb,var(--m-backdrop-mm) 88%,black)}.menu-item.is-disabled{opacity:.4;cursor:not-allowed;pointer-events:none;filter:grayscale(75%)}.menu-item .item-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;color:var(--m-text-secondary)}.menu-item .item-text{flex:1;font-size:var(--menu-text-size, .9375rem)}.menu-item .item-arrow{display:flex;align-items:center;color:var(--m-text-quaternary)}.menu-container[data-size=sm]{--menu-item-size: .8125rem;--menu-item-padding: calc(.8125rem * .625) calc(.8125rem * 1.25);--menu-text-size: .8125rem;--menu-icon-size: 20px}.menu-container[data-size=md]{--menu-item-size: .9375rem;--menu-item-padding: calc(.9375rem * .625) calc(.9375rem * 1.25);--menu-text-size: .9375rem;--menu-icon-size: 24px}.menu-container[data-size=lg]{--menu-item-size: 1.0625rem;--menu-item-padding: calc(1.0625rem * .625) calc(1.0625rem * 1.25);--menu-text-size: 1rem;--menu-icon-size: 28px}.menu-item{padding:var(--menu-item-padding, 8px 12px)}.menu-item .item-icon{width:var(--menu-icon-size, 24px);height:var(--menu-icon-size, 24px)}.menu-loading{display:flex;align-items:center;justify-content:center;padding:24px}.menu-loading .spinner{width:20px;height:20px;border:2px solid var(--m-backdrop-border);border-top-color:var(--m-mm);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes slide-forward{0%{opacity:0;transform:translate(15px)}to{opacity:1;transform:translate(0)}}@keyframes slide-backward{0%{opacity:0;transform:translate(-15px)}to{opacity:1;transform:translate(0)}}.menu-container[data-slide=forward] .menu-content{animation:slide-forward .4s cubic-bezier(.165,.84,.44,1)}.menu-container[data-slide=backward] .menu-content{animation:slide-backward .4s cubic-bezier(.165,.84,.44,1)}:host-context(.align-bottom) .menu-container{border:none;border-radius:0}\n"],
230
+ dependencies: [{
231
+ kind: "component",
232
+ type: IconComponent,
233
+ selector: "m-icon, m-one-icon",
234
+ inputs: [
235
+ "config",
236
+ "name",
237
+ "color",
238
+ "size",
239
+ "one",
240
+ "baseUrl",
241
+ "remote"
242
+ ],
243
+ outputs: ["configChange"]
244
+ }, {
245
+ kind: "pipe",
246
+ type: TranslatePipe,
247
+ name: "translate"
248
+ }],
249
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
250
+ });
251
+ };
252
+ i0.ɵɵngDeclareClassMetadata({
253
+ minVersion: "12.0.0",
254
+ version: "22.2.1",
255
+ ngImport: i0,
256
+ type: MenuComponent,
257
+ decorators: [{
258
+ type: Component,
259
+ args: [{
260
+ selector: "m-menu",
261
+ imports: [TranslatePipe, IconComponent],
262
+ changeDetection: ChangeDetectionStrategy.OnPush,
263
+ host: {
264
+ "(keydown.arrowdown)": "moveFocus($event, 1)",
265
+ "(keydown.arrowup)": "moveFocus($event, -1)"
266
+ },
267
+ template: "<div class=\"menu-container\" [attr.data-slide]=\"slideDirection()\">\n @if (back()) {\n <div\n class=\"back-btn\"\n tabindex=\"0\"\n role=\"button\"\n (click)=\"goBack()\"\n (keydown.enter)=\"goBack()\"\n (keydown.space)=\"goBack()\"\n >\n <div class=\"back-icon\">\n <m-icon [name]=\"'chevron-left'\" color=\"currentColor\" />\n </div>\n <span class=\"back-text\">{{ back()!.label | translate }}</span>\n </div>\n }\n\n <div class=\"menu-content\">\n @if (isLoading()) {\n <div class=\"menu-loading\">\n <div class=\"spinner\"></div>\n </div>\n } @else {\n <div class=\"menu-groups\">\n @for (group of options(); track $index; let last = $last) {\n <div class=\"menu-group\" [class.has-separator]=\"!last\">\n @for (item of group; track item.id) {\n @if (!item.hidden) {\n <div\n class=\"menu-item\"\n [attr.data-testid]=\"item.id + '-btn'\"\n [class.is-selected]=\"isSelected(item)\"\n [class.is-disabled]=\"isItemDisabled(item)\"\n [attr.aria-disabled]=\"isItemDisabled(item) || null\"\n tabindex=\"0\"\n role=\"button\"\n (click)=\"selectItem(item)\"\n (keydown.enter)=\"selectItem(item)\"\n (keydown.space)=\"selectItem(item)\"\n >\n @if (item.icon) {\n <div class=\"item-icon\">\n <m-icon [name]=\"item.icon\" color=\"currentColor\" />\n </div>\n }\n <span class=\"item-text\">{{ item.label | translate }}</span>\n @if (item.options || item.file) {\n <div class=\"item-arrow\">\n <m-icon [name]=\"'chevron-right'\" color=\"currentColor\" />\n </div>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n",
268
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.menu-container{display:flex;flex-direction:column;width:100%;border-radius:0;background:var(--m-menu-background, var(--m-background));border:none;overflow:hidden;transition:transform .3s cubic-bezier(.4,0,.2,1)}.back-btn{height:calc(var(--input-size, .9375rem) * 2);min-height:calc(var(--input-size, .9375rem) * 2);border-width:max(1px,var(--input-size, .9375rem) * .0625);border-radius:calc(var(--input-size, .9375rem) * .4);padding:calc(var(--input-size, .9375rem) * .5) calc(var(--input-size, .9375rem) * .5);gap:calc(var(--input-size, .9375rem) * .375);font-size:var(--input-size, .9375rem);border-color:var(--m-text-secondary);transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.back-btn:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-text-secondary) 6%,transparent)}.back-btn:disabled{opacity:.6;cursor:not-allowed}.back-btn{height:auto;min-height:0;padding:calc(.9375rem * .625) calc(.9375rem * 1.25);gap:calc(.9375rem * .375);border-style:solid;display:inline-flex;justify-content:center;box-sizing:border-box;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:8px;padding:.5859375rem 1.171875rem;border-radius:0;border:none;border-bottom:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);font-weight:400;text-align:left;width:100%;transition:filter .15s ease,background .15s ease,color .15s ease}.back-btn:hover,.back-btn:focus-visible{outline:none;background:color-mix(in srgb,var(--m-text) 8%,transparent);color:var(--m-text)}.back-btn:active{transform:scale(.97)}.back-btn .back-icon{display:flex;align-items:center}.back-btn .back-text{font-size:.9rem;font-weight:500}.menu-content{position:relative;width:100%}.menu-groups{display:flex;flex-direction:column;padding:6px}.menu-group{display:flex;flex-direction:column;gap:2px}.menu-group.has-separator{border-bottom:1px solid var(--m-backdrop-border);margin-bottom:6px;padding-bottom:6px}.menu-item{height:calc(var(--input-size, var(--menu-item-size, .9375rem)) * 2);min-height:calc(var(--input-size, var(--menu-item-size, .9375rem)) * 2);border-width:max(1px,var(--input-size, var(--menu-item-size, .9375rem)) * .0625);border-radius:calc(var(--input-size, var(--menu-item-size, .9375rem)) * .4);padding:calc(var(--input-size, var(--menu-item-size, .9375rem)) * .5) calc(var(--input-size, var(--menu-item-size, .9375rem)) * .5);gap:calc(var(--input-size, var(--menu-item-size, .9375rem)) * .375);font-size:var(--input-size, var(--menu-item-size, .9375rem));border-color:var(--m-text);transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.menu-item:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-text) 6%,transparent)}.menu-item:disabled{opacity:.6;cursor:not-allowed}.menu-item{height:auto;min-height:0;padding:calc(var(--menu-item-size, .9375rem) * .625) calc(var(--menu-item-size, .9375rem) * 1.25);gap:calc(var(--menu-item-size, .9375rem) * .375);border-style:solid;display:inline-flex;justify-content:center;box-sizing:border-box;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:0;border:none;color:var(--m-text);font-weight:400;text-align:left;width:100%;transition:filter .15s ease,background .15s ease,color .15s ease}.menu-item:focus-visible{outline:none}.menu-item:hover:not(.is-disabled):not(.menu-item.is-selected),.menu-item:focus-visible:not(.is-selected){background:color-mix(in srgb,var(--m-text) 8%,transparent);color:var(--m-text)}.menu-item:active:not(.is-disabled){transform:scale(.97)}.menu-item.is-selected{background:var(--m-backdrop-mm);color:var(--m-mm);font-weight:600}.menu-item.is-selected .item-icon{color:var(--m-mm)}.menu-item.is-selected:hover,.menu-item.is-selected:focus-visible{background:color-mix(in srgb,var(--m-backdrop-mm) 88%,black)}.menu-item.is-disabled{opacity:.4;cursor:not-allowed;pointer-events:none;filter:grayscale(75%)}.menu-item .item-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;color:var(--m-text-secondary)}.menu-item .item-text{flex:1;font-size:var(--menu-text-size, .9375rem)}.menu-item .item-arrow{display:flex;align-items:center;color:var(--m-text-quaternary)}.menu-container[data-size=sm]{--menu-item-size: .8125rem;--menu-item-padding: calc(.8125rem * .625) calc(.8125rem * 1.25);--menu-text-size: .8125rem;--menu-icon-size: 20px}.menu-container[data-size=md]{--menu-item-size: .9375rem;--menu-item-padding: calc(.9375rem * .625) calc(.9375rem * 1.25);--menu-text-size: .9375rem;--menu-icon-size: 24px}.menu-container[data-size=lg]{--menu-item-size: 1.0625rem;--menu-item-padding: calc(1.0625rem * .625) calc(1.0625rem * 1.25);--menu-text-size: 1rem;--menu-icon-size: 28px}.menu-item{padding:var(--menu-item-padding, 8px 12px)}.menu-item .item-icon{width:var(--menu-icon-size, 24px);height:var(--menu-icon-size, 24px)}.menu-loading{display:flex;align-items:center;justify-content:center;padding:24px}.menu-loading .spinner{width:20px;height:20px;border:2px solid var(--m-backdrop-border);border-top-color:var(--m-mm);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes slide-forward{0%{opacity:0;transform:translate(15px)}to{opacity:1;transform:translate(0)}}@keyframes slide-backward{0%{opacity:0;transform:translate(-15px)}to{opacity:1;transform:translate(0)}}.menu-container[data-slide=forward] .menu-content{animation:slide-forward .4s cubic-bezier(.165,.84,.44,1)}.menu-container[data-slide=backward] .menu-content{animation:slide-backward .4s cubic-bezier(.165,.84,.44,1)}:host-context(.align-bottom) .menu-container{border:none;border-radius:0}\n"]
269
+ }]
270
+ }],
271
+ ctorParameters: () => [],
272
+ propDecorators: {
273
+ config: [{
274
+ type: i0.Input,
275
+ args: [{
276
+ isSignal: true,
277
+ alias: "config",
278
+ required: false
279
+ }]
280
+ }],
281
+ file: [{
282
+ type: i0.Input,
283
+ args: [{
284
+ isSignal: true,
285
+ alias: "file",
286
+ required: false
287
+ }]
288
+ }],
289
+ root: [{
290
+ type: i0.Input,
291
+ args: [{
292
+ isSignal: true,
293
+ alias: "root",
294
+ required: false
295
+ }]
296
+ }],
297
+ url: [{
298
+ type: i0.Input,
299
+ args: [{
300
+ isSignal: true,
301
+ alias: "url",
302
+ required: false
303
+ }]
304
+ }],
305
+ extra: [{
306
+ type: i0.Input,
307
+ args: [{
308
+ isSignal: true,
309
+ alias: "extra",
310
+ required: false
311
+ }]
312
+ }],
313
+ hide: [{
314
+ type: i0.Input,
315
+ args: [{
316
+ isSignal: true,
317
+ alias: "hide",
318
+ required: false
319
+ }]
320
+ }],
321
+ hideLink: [{
322
+ type: i0.Input,
323
+ args: [{
324
+ isSignal: true,
325
+ alias: "hideLink",
326
+ required: false
327
+ }]
328
+ }],
329
+ isAdmin: [{
330
+ type: i0.Input,
331
+ args: [{
332
+ isSignal: true,
333
+ alias: "isAdmin",
334
+ required: false
335
+ }]
336
+ }],
337
+ autoFocus: [{
338
+ type: i0.Input,
339
+ args: [{
340
+ isSignal: true,
341
+ alias: "autoFocus",
342
+ required: false
343
+ }]
344
+ }],
345
+ action: [{
346
+ type: i0.Output,
347
+ args: ["action"]
348
+ }],
349
+ visibilityRule: [{
350
+ type: i0.Input,
351
+ args: [{
352
+ isSignal: true,
353
+ alias: "visibilityRule",
354
+ required: false
355
+ }]
356
+ }],
357
+ disableRule: [{
358
+ type: i0.Input,
359
+ args: [{
360
+ isSignal: true,
361
+ alias: "disableRule",
362
+ required: false
363
+ }]
364
+ }],
365
+ extraData: [{
366
+ type: i0.Input,
367
+ args: [{
368
+ isSignal: true,
369
+ alias: "extraData",
370
+ required: false
371
+ }]
372
+ }]
373
+ }
374
+ });
375
+ var ContextMenuBoxComponent = class ContextMenuBoxComponent {
376
+ options = input([], ...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
377
+ hide = input(...ngDevMode ? [void 0, { debugName: "hide" }] : /* istanbul ignore next */ []);
378
+ file = input(...ngDevMode ? [void 0, { debugName: "file" }] : /* istanbul ignore next */ []);
379
+ width = input("250px", ...ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []);
380
+ height = input("auto", ...ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []);
381
+ isAdmin = input(false, ...ngDevMode ? [{ debugName: "isAdmin" }] : /* istanbul ignore next */ []);
382
+ action = output();
383
+ visibilityRule = input(...ngDevMode ? [void 0, { debugName: "visibilityRule" }] : /* istanbul ignore next */ []);
384
+ disableRule = input(...ngDevMode ? [void 0, { debugName: "disableRule" }] : /* istanbul ignore next */ []);
385
+ extraData = input(...ngDevMode ? [void 0, { debugName: "extraData" }] : /* istanbul ignore next */ []);
386
+ emitAction = (item) => {
387
+ this.action.emit(item);
388
+ };
389
+ static ɵfac = i0.ɵɵngDeclareFactory({
390
+ minVersion: "12.0.0",
391
+ version: "22.2.1",
392
+ ngImport: i0,
393
+ type: ContextMenuBoxComponent,
394
+ deps: [],
395
+ target: i0.ɵɵFactoryTarget.Component
396
+ });
397
+ static ɵcmp = i0.ɵɵngDeclareComponent({
398
+ minVersion: "17.1.0",
399
+ version: "22.2.1",
400
+ type: ContextMenuBoxComponent,
401
+ isStandalone: true,
402
+ selector: "m-context-menu-box",
403
+ inputs: {
404
+ options: {
405
+ classPropertyName: "options",
406
+ publicName: "options",
407
+ isSignal: true,
408
+ isRequired: false,
409
+ transformFunction: null
410
+ },
411
+ hide: {
412
+ classPropertyName: "hide",
413
+ publicName: "hide",
414
+ isSignal: true,
415
+ isRequired: false,
416
+ transformFunction: null
417
+ },
418
+ file: {
419
+ classPropertyName: "file",
420
+ publicName: "file",
421
+ isSignal: true,
422
+ isRequired: false,
423
+ transformFunction: null
424
+ },
425
+ width: {
426
+ classPropertyName: "width",
427
+ publicName: "width",
428
+ isSignal: true,
429
+ isRequired: false,
430
+ transformFunction: null
431
+ },
432
+ height: {
433
+ classPropertyName: "height",
434
+ publicName: "height",
435
+ isSignal: true,
436
+ isRequired: false,
437
+ transformFunction: null
438
+ },
439
+ isAdmin: {
440
+ classPropertyName: "isAdmin",
441
+ publicName: "isAdmin",
442
+ isSignal: true,
443
+ isRequired: false,
444
+ transformFunction: null
445
+ },
446
+ visibilityRule: {
447
+ classPropertyName: "visibilityRule",
448
+ publicName: "visibilityRule",
449
+ isSignal: true,
450
+ isRequired: false,
451
+ transformFunction: null
452
+ },
453
+ disableRule: {
454
+ classPropertyName: "disableRule",
455
+ publicName: "disableRule",
456
+ isSignal: true,
457
+ isRequired: false,
458
+ transformFunction: null
459
+ },
460
+ extraData: {
461
+ classPropertyName: "extraData",
462
+ publicName: "extraData",
463
+ isSignal: true,
464
+ isRequired: false,
465
+ transformFunction: null
466
+ }
467
+ },
468
+ outputs: { action: "action" },
469
+ ngImport: i0,
470
+ template: "<div class=\"m-context-menu-box\" [style.width]=\"width()\" [style.max-height]=\"height()\">\n <m-menu\n [config]=\"options()\"\n [hide]=\"hide()\"\n [file]=\"file()\"\n [isAdmin]=\"isAdmin()\"\n [autoFocus]=\"true\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"emitAction($event)\"\n />\n</div>\n",
471
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-context-menu-box{overflow-y:auto;padding:.375rem;border-radius:var(--m-input-radius, .5rem);border:var(--m-input-border-width, 1px) solid color-mix(in srgb,var(--m-text) 18%,var(--m-background));background:color-mix(in srgb,var(--m-focus) 2%,var(--m-background));box-shadow:0 .75rem 2rem color-mix(in srgb,var(--m-text) 12%,transparent);animation:context-menu-in .2s ease-out}@keyframes context-menu-in{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}:host-context(.align-bottom){display:block;width:100%!important;max-width:100%!important}:host-context(.align-bottom) .m-context-menu-box{width:100%!important;max-width:100%!important;max-height:70vh!important;border-left:none;border-right:none;border-bottom:none}\n"],
472
+ dependencies: [{
473
+ kind: "component",
474
+ type: MenuComponent,
475
+ selector: "m-menu",
476
+ inputs: [
477
+ "config",
478
+ "file",
479
+ "root",
480
+ "url",
481
+ "extra",
482
+ "hide",
483
+ "hideLink",
484
+ "isAdmin",
485
+ "autoFocus",
486
+ "visibilityRule",
487
+ "disableRule",
488
+ "extraData"
489
+ ],
490
+ outputs: ["action"]
491
+ }],
492
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
493
+ });
494
+ };
495
+ i0.ɵɵngDeclareClassMetadata({
496
+ minVersion: "12.0.0",
497
+ version: "22.2.1",
498
+ ngImport: i0,
499
+ type: ContextMenuBoxComponent,
500
+ decorators: [{
501
+ type: Component,
502
+ args: [{
503
+ selector: "m-context-menu-box",
504
+ imports: [MenuComponent],
505
+ changeDetection: ChangeDetectionStrategy.OnPush,
506
+ template: "<div class=\"m-context-menu-box\" [style.width]=\"width()\" [style.max-height]=\"height()\">\n <m-menu\n [config]=\"options()\"\n [hide]=\"hide()\"\n [file]=\"file()\"\n [isAdmin]=\"isAdmin()\"\n [autoFocus]=\"true\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"emitAction($event)\"\n />\n</div>\n",
507
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-context-menu-box{overflow-y:auto;padding:.375rem;border-radius:var(--m-input-radius, .5rem);border:var(--m-input-border-width, 1px) solid color-mix(in srgb,var(--m-text) 18%,var(--m-background));background:color-mix(in srgb,var(--m-focus) 2%,var(--m-background));box-shadow:0 .75rem 2rem color-mix(in srgb,var(--m-text) 12%,transparent);animation:context-menu-in .2s ease-out}@keyframes context-menu-in{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}:host-context(.align-bottom){display:block;width:100%!important;max-width:100%!important}:host-context(.align-bottom) .m-context-menu-box{width:100%!important;max-width:100%!important;max-height:70vh!important;border-left:none;border-right:none;border-bottom:none}\n"]
508
+ }]
509
+ }],
510
+ propDecorators: {
511
+ options: [{
512
+ type: i0.Input,
513
+ args: [{
514
+ isSignal: true,
515
+ alias: "options",
516
+ required: false
517
+ }]
518
+ }],
519
+ hide: [{
520
+ type: i0.Input,
521
+ args: [{
522
+ isSignal: true,
523
+ alias: "hide",
524
+ required: false
525
+ }]
526
+ }],
527
+ file: [{
528
+ type: i0.Input,
529
+ args: [{
530
+ isSignal: true,
531
+ alias: "file",
532
+ required: false
533
+ }]
534
+ }],
535
+ width: [{
536
+ type: i0.Input,
537
+ args: [{
538
+ isSignal: true,
539
+ alias: "width",
540
+ required: false
541
+ }]
542
+ }],
543
+ height: [{
544
+ type: i0.Input,
545
+ args: [{
546
+ isSignal: true,
547
+ alias: "height",
548
+ required: false
549
+ }]
550
+ }],
551
+ isAdmin: [{
552
+ type: i0.Input,
553
+ args: [{
554
+ isSignal: true,
555
+ alias: "isAdmin",
556
+ required: false
557
+ }]
558
+ }],
559
+ action: [{
560
+ type: i0.Output,
561
+ args: ["action"]
562
+ }],
563
+ visibilityRule: [{
564
+ type: i0.Input,
565
+ args: [{
566
+ isSignal: true,
567
+ alias: "visibilityRule",
568
+ required: false
569
+ }]
570
+ }],
571
+ disableRule: [{
572
+ type: i0.Input,
573
+ args: [{
574
+ isSignal: true,
575
+ alias: "disableRule",
576
+ required: false
577
+ }]
578
+ }],
579
+ extraData: [{
580
+ type: i0.Input,
581
+ args: [{
582
+ isSignal: true,
583
+ alias: "extraData",
584
+ required: false
585
+ }]
586
+ }]
587
+ }
588
+ });
589
+ var ContextMenuComponent = class ContextMenuComponent extends ConfigComponent {
590
+ toggle = model(...ngDevMode ? [void 0, { debugName: "toggle" }] : /* istanbul ignore next */ []);
591
+ remote = input(...ngDevMode ? [void 0, { debugName: "remote" }] : /* istanbul ignore next */ []);
592
+ exclude = input(...ngDevMode ? [void 0, { debugName: "exclude" }] : /* istanbul ignore next */ []);
593
+ visibilityRule = input(...ngDevMode ? [void 0, { debugName: "visibilityRule" }] : /* istanbul ignore next */ []);
594
+ disableRule = input(...ngDevMode ? [void 0, { debugName: "disableRule" }] : /* istanbul ignore next */ []);
595
+ extraData = input(...ngDevMode ? [void 0, { debugName: "extraData" }] : /* istanbul ignore next */ []);
596
+ inverted = input(...ngDevMode ? [void 0, { debugName: "inverted" }] : /* istanbul ignore next */ []);
597
+ options = input(...ngDevMode ? [void 0, { debugName: "options" }] : /* istanbul ignore next */ []);
598
+ action = output();
599
+ subFolder = "menu";
600
+ selectorDir = viewChild(SelectorDirective, ...ngDevMode ? [{ debugName: "selectorDir" }] : /* istanbul ignore next */ []);
601
+ contextMenuConfig = computed(() => this.config() ?? {}, ...ngDevMode ? [{ debugName: "contextMenuConfig" }] : /* istanbul ignore next */ []);
602
+ iconConfig = computed(() => {
603
+ const toggle = this.toggle();
604
+ const { closeIcon, icon } = this.contextMenuConfig();
605
+ if (toggle) return {
606
+ name: "x",
607
+ ...closeIcon
608
+ };
609
+ return {
610
+ name: "ellipsis-vertical",
611
+ ...icon
612
+ };
613
+ }, ...ngDevMode ? [{ debugName: "iconConfig" }] : /* istanbul ignore next */ []);
614
+ triggerButtonConfig = computed(() => ({
615
+ variant: "ghost",
616
+ iconOnly: true,
617
+ icon: this.iconConfig().name,
618
+ label: "actions",
619
+ inverted: this.inverted() ?? this.contextMenuConfig().inverted
620
+ }), ...ngDevMode ? [{ debugName: "triggerButtonConfig" }] : /* istanbul ignore next */ []);
621
+ contextMenuOptions = computed(() => {
622
+ const supplied = this.options();
623
+ if (supplied) return Array.isArray(supplied[0]) ? supplied : [supplied];
624
+ return this.contextMenuConfig().options ?? [];
625
+ }, ...ngDevMode ? [{ debugName: "contextMenuOptions" }] : /* istanbul ignore next */ []);
626
+ selectorConfig = computed(() => {
627
+ if (this.isDesignMode) return void 0;
628
+ return {
629
+ component: ContextMenuBoxComponent,
630
+ base: "m-context-menu",
631
+ width: this.contextMenuConfig().width ?? "250px",
632
+ height: this.contextMenuConfig().height ?? "auto",
633
+ align: this.contextMenuConfig().align,
634
+ toggle: true,
635
+ bindings: [
636
+ inputBinding("options", this.contextMenuOptions),
637
+ inputBinding("hide", this.exclude),
638
+ inputBinding("visibilityRule", this.visibilityRule),
639
+ inputBinding("disableRule", this.disableRule),
640
+ inputBinding("extraData", this.extraData),
641
+ outputBinding("action", (event) => {
642
+ this.action.emit(event);
643
+ this.selectorDir()?.close();
644
+ })
645
+ ]
646
+ };
647
+ }, ...ngDevMode ? [{ debugName: "selectorConfig" }] : /* istanbul ignore next */ []);
648
+ static ɵfac = i0.ɵɵngDeclareFactory({
649
+ minVersion: "12.0.0",
650
+ version: "22.2.1",
651
+ ngImport: i0,
652
+ type: ContextMenuComponent,
653
+ deps: null,
654
+ target: i0.ɵɵFactoryTarget.Component
655
+ });
656
+ static ɵcmp = i0.ɵɵngDeclareComponent({
657
+ minVersion: "17.2.0",
658
+ version: "22.2.1",
659
+ type: ContextMenuComponent,
660
+ isStandalone: true,
661
+ selector: "m-context-menu, m-one-context-menu",
662
+ inputs: {
663
+ toggle: {
664
+ classPropertyName: "toggle",
665
+ publicName: "toggle",
666
+ isSignal: true,
667
+ isRequired: false,
668
+ transformFunction: null
669
+ },
670
+ remote: {
671
+ classPropertyName: "remote",
672
+ publicName: "remote",
673
+ isSignal: true,
674
+ isRequired: false,
675
+ transformFunction: null
676
+ },
677
+ exclude: {
678
+ classPropertyName: "exclude",
679
+ publicName: "exclude",
680
+ isSignal: true,
681
+ isRequired: false,
682
+ transformFunction: null
683
+ },
684
+ visibilityRule: {
685
+ classPropertyName: "visibilityRule",
686
+ publicName: "visibilityRule",
687
+ isSignal: true,
688
+ isRequired: false,
689
+ transformFunction: null
690
+ },
691
+ disableRule: {
692
+ classPropertyName: "disableRule",
693
+ publicName: "disableRule",
694
+ isSignal: true,
695
+ isRequired: false,
696
+ transformFunction: null
697
+ },
698
+ extraData: {
699
+ classPropertyName: "extraData",
700
+ publicName: "extraData",
701
+ isSignal: true,
702
+ isRequired: false,
703
+ transformFunction: null
704
+ },
705
+ inverted: {
706
+ classPropertyName: "inverted",
707
+ publicName: "inverted",
708
+ isSignal: true,
709
+ isRequired: false,
710
+ transformFunction: null
711
+ },
712
+ options: {
713
+ classPropertyName: "options",
714
+ publicName: "options",
715
+ isSignal: true,
716
+ isRequired: false,
717
+ transformFunction: null
718
+ }
719
+ },
720
+ outputs: {
721
+ toggle: "toggleChange",
722
+ action: "action"
723
+ },
724
+ viewQueries: [{
725
+ propertyName: "selectorDir",
726
+ first: true,
727
+ predicate: SelectorDirective,
728
+ descendants: true,
729
+ isSignal: true
730
+ }],
731
+ usesInheritance: true,
732
+ ngImport: i0,
733
+ template: `
734
+ <m-one-button
735
+ [config]="triggerButtonConfig()"
736
+ [mSelector]="selectorConfig()"
737
+ (opened)="toggle.set(true)"
738
+ (closed)="toggle.set(false)"
739
+ />
740
+ `,
741
+ isInline: true,
742
+ dependencies: [{
743
+ kind: "component",
744
+ type: ButtonComponent,
745
+ selector: "m-button,m-one-button",
746
+ inputs: [
747
+ "config",
748
+ "color",
749
+ "labelClass",
750
+ "fullWidth",
751
+ "nav",
752
+ "navParams",
753
+ "href",
754
+ "disabled",
755
+ "variant",
756
+ "name",
757
+ "baseUrl",
758
+ "one",
759
+ "remote",
760
+ "label",
761
+ "noTranslate",
762
+ "params",
763
+ "noNative",
764
+ "icon",
765
+ "isRightIcon",
766
+ "iconOnly",
767
+ "stacked",
768
+ "imgSrc",
769
+ "nonClickable",
770
+ "inverted",
771
+ "isSubmit",
772
+ "tabindex"
773
+ ],
774
+ outputs: ["configChange", "clicked"]
775
+ }, {
776
+ kind: "directive",
777
+ type: SelectorDirective,
778
+ selector: "[mSelector]",
779
+ inputs: ["mSelector", "disabled"],
780
+ outputs: ["opened", "closed"],
781
+ exportAs: ["mSelector"]
782
+ }],
783
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
784
+ });
785
+ };
786
+ i0.ɵɵngDeclareClassMetadata({
787
+ minVersion: "12.0.0",
788
+ version: "22.2.1",
789
+ ngImport: i0,
790
+ type: ContextMenuComponent,
791
+ decorators: [{
792
+ type: Component,
793
+ args: [{
794
+ selector: "m-context-menu, m-one-context-menu",
795
+ imports: [ButtonComponent, SelectorDirective],
796
+ template: `
797
+ <m-one-button
798
+ [config]="triggerButtonConfig()"
799
+ [mSelector]="selectorConfig()"
800
+ (opened)="toggle.set(true)"
801
+ (closed)="toggle.set(false)"
802
+ />
803
+ `,
804
+ changeDetection: ChangeDetectionStrategy.OnPush
805
+ }]
806
+ }],
807
+ propDecorators: {
808
+ toggle: [{
809
+ type: i0.Input,
810
+ args: [{
811
+ isSignal: true,
812
+ alias: "toggle",
813
+ required: false
814
+ }]
815
+ }, {
816
+ type: i0.Output,
817
+ args: ["toggleChange"]
818
+ }],
819
+ remote: [{
820
+ type: i0.Input,
821
+ args: [{
822
+ isSignal: true,
823
+ alias: "remote",
824
+ required: false
825
+ }]
826
+ }],
827
+ exclude: [{
828
+ type: i0.Input,
829
+ args: [{
830
+ isSignal: true,
831
+ alias: "exclude",
832
+ required: false
833
+ }]
834
+ }],
835
+ visibilityRule: [{
836
+ type: i0.Input,
837
+ args: [{
838
+ isSignal: true,
839
+ alias: "visibilityRule",
840
+ required: false
841
+ }]
842
+ }],
843
+ disableRule: [{
844
+ type: i0.Input,
845
+ args: [{
846
+ isSignal: true,
847
+ alias: "disableRule",
848
+ required: false
849
+ }]
850
+ }],
851
+ extraData: [{
852
+ type: i0.Input,
853
+ args: [{
854
+ isSignal: true,
855
+ alias: "extraData",
856
+ required: false
857
+ }]
858
+ }],
859
+ inverted: [{
860
+ type: i0.Input,
861
+ args: [{
862
+ isSignal: true,
863
+ alias: "inverted",
864
+ required: false
865
+ }]
866
+ }],
867
+ options: [{
868
+ type: i0.Input,
869
+ args: [{
870
+ isSignal: true,
871
+ alias: "options",
872
+ required: false
873
+ }]
874
+ }],
875
+ action: [{
876
+ type: i0.Output,
877
+ args: ["action"]
878
+ }],
879
+ selectorDir: [{
880
+ type: i0.ViewChild,
881
+ args: [i0.forwardRef(() => SelectorDirective), { isSignal: true }]
882
+ }]
883
+ }
884
+ });
885
+ export { ContextMenuBoxComponent as n, MenuComponent as r, ContextMenuComponent as t };
886
+
887
+ //# sourceMappingURL=magmonium-one-menu-BM9f2knw.mjs.map