whenFirstSeen("[data-google-maps-geocoding]", () => {
void import("./Component/GoogleMaps/Geocoding").then(({ setup }) => setup());
});
+
+ whenFirstSeen("woltlab-core-menu", () => {
+ void import("./Element/woltlab-core-menu");
+ void import("./Element/woltlab-core-menu-group");
+ void import("./Element/woltlab-core-menu-item");
+ void import("./Element/woltlab-core-menu-separator");
+ });
}
--- /dev/null
+export class WoltlabCoreMenuGroupElement extends HTMLElement {
+ connectedCallback() {
+ this.setAttribute("role", "group");
+
+ this.label = this.getAttribute("label")!;
+ }
+
+ get label(): string {
+ return this.getAttribute("label")!;
+ }
+
+ set label(label: string) {
+ this.setAttribute("label", label);
+ this.setAttribute("aria-label", label);
+ }
+}
+
+export default WoltlabCoreMenuGroupElement;
+
+window.customElements.define("woltlab-core-menu-group", WoltlabCoreMenuGroupElement);
--- /dev/null
+import WoltlabCoreMenuGroupElement from "./woltlab-core-menu-group";
+
+const enum MenuItemType {
+ Checkbox,
+ Item,
+}
+
+export class WoltlabCoreMenuItemElement extends HTMLElement {
+ #type: MenuItemType = MenuItemType.Item;
+
+ connectedCallback() {
+ const shadow = this.attachShadow({ mode: "open" });
+
+ const defaultSlot = document.createElement("slot");
+ shadow.append(defaultSlot);
+
+ this.tabIndex = -1;
+ this.disabled = this.hasAttribute("disabled");
+
+ if (this.parentElement! instanceof WoltlabCoreMenuGroupElement) {
+ this.#type = MenuItemType.Checkbox;
+ this.setAttribute("role", "menuitemcheckbox");
+
+ this.selected = this.hasAttribute("selected");
+ } else {
+ this.#type = MenuItemType.Item;
+ this.setAttribute("role", "menuitem");
+
+ this.removeAttribute("aria-checked");
+ }
+ }
+
+ get selected(): boolean {
+ if (this.#type !== MenuItemType.Item) {
+ return false;
+ }
+
+ return this.hasAttribute("selected");
+ }
+
+ set selected(checked: boolean) {
+ if (this.#type !== MenuItemType.Checkbox) {
+ return;
+ }
+
+ if (checked) {
+ this.setAttribute("selected", "");
+ } else {
+ this.removeAttribute("selected");
+ }
+
+ this.setAttribute("aria-checked", String(checked === true));
+ }
+
+ get disabled(): boolean {
+ return this.hasAttribute("disabled");
+ }
+
+ set disabled(disabled: boolean) {
+ if (disabled) {
+ this.setAttribute("disabled", "");
+ } else {
+ this.removeAttribute("disabled");
+ }
+
+ this.setAttribute("aria-disabled", String(disabled === true));
+ }
+
+ get value(): string {
+ return this.getAttribute("value")!;
+ }
+
+ set value(value: string) {
+ this.setAttribute("value", value);
+ }
+}
+
+export default WoltlabCoreMenuItemElement;
+
+window.customElements.define("woltlab-core-menu-item", WoltlabCoreMenuItemElement);
--- /dev/null
+export class WoltlabCoreMenuSeparatorElement extends HTMLElement {
+ connectedCallback() {
+ this.setAttribute("role", "separator");
+ }
+}
+
+export default WoltlabCoreMenuSeparatorElement;
+
+window.customElements.define("woltlab-core-menu-separator", WoltlabCoreMenuSeparatorElement);
--- /dev/null
+export class WoltlabCoreMenuElement extends HTMLElement {
+ connectedCallback() {
+ this.setAttribute("role", "menu");
+
+ this.label = this.getAttribute("label")!;
+ }
+
+ get label(): string {
+ return this.getAttribute("label")!;
+ }
+
+ set label(label: string) {
+ this.setAttribute("label", label);
+ this.setAttribute("aria-label", label);
+ }
+}
+
+export default WoltlabCoreMenuElement;
+
+window.customElements.define("woltlab-core-menu", WoltlabCoreMenuElement);
(0, LazyLoader_1.whenFirstSeen)("[data-google-maps-geocoding]", () => {
void new Promise((resolve_5, reject_5) => { require(["./Component/GoogleMaps/Geocoding"], resolve_5, reject_5); }).then(tslib_1.__importStar).then(({ setup }) => setup());
});
+ (0, LazyLoader_1.whenFirstSeen)("woltlab-core-menu", () => {
+ void new Promise((resolve_6, reject_6) => { require(["./Element/woltlab-core-menu"], resolve_6, reject_6); }).then(tslib_1.__importStar);
+ void new Promise((resolve_7, reject_7) => { require(["./Element/woltlab-core-menu-group"], resolve_7, reject_7); }).then(tslib_1.__importStar);
+ void new Promise((resolve_8, reject_8) => { require(["./Element/woltlab-core-menu-item"], resolve_8, reject_8); }).then(tslib_1.__importStar);
+ void new Promise((resolve_9, reject_9) => { require(["./Element/woltlab-core-menu-separator"], resolve_9, reject_9); }).then(tslib_1.__importStar);
+ });
}
exports.setup = setup;
});
--- /dev/null
+define(["require", "exports"], function (require, exports) {
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.WoltlabCoreMenuGroupElement = void 0;
+ class WoltlabCoreMenuGroupElement extends HTMLElement {
+ connectedCallback() {
+ this.setAttribute("role", "group");
+ this.label = this.getAttribute("label");
+ }
+ get label() {
+ return this.getAttribute("label");
+ }
+ set label(label) {
+ this.setAttribute("label", label);
+ this.setAttribute("aria-label", label);
+ }
+ }
+ exports.WoltlabCoreMenuGroupElement = WoltlabCoreMenuGroupElement;
+ exports.default = WoltlabCoreMenuGroupElement;
+ window.customElements.define("woltlab-core-menu-group", WoltlabCoreMenuGroupElement);
+});
--- /dev/null
+define(["require", "exports", "tslib", "./woltlab-core-menu-group"], function (require, exports, tslib_1, woltlab_core_menu_group_1) {
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.WoltlabCoreMenuItemElement = void 0;
+ woltlab_core_menu_group_1 = tslib_1.__importDefault(woltlab_core_menu_group_1);
+ class WoltlabCoreMenuItemElement extends HTMLElement {
+ #type = 1 /* MenuItemType.Item */;
+ connectedCallback() {
+ const shadow = this.attachShadow({ mode: "open" });
+ const defaultSlot = document.createElement("slot");
+ shadow.append(defaultSlot);
+ this.tabIndex = -1;
+ this.disabled = this.hasAttribute("disabled");
+ if (this.parentElement instanceof woltlab_core_menu_group_1.default) {
+ this.#type = 0 /* MenuItemType.Checkbox */;
+ this.setAttribute("role", "menuitemcheckbox");
+ this.selected = this.hasAttribute("selected");
+ }
+ else {
+ this.#type = 1 /* MenuItemType.Item */;
+ this.setAttribute("role", "menuitem");
+ this.removeAttribute("aria-checked");
+ }
+ }
+ get selected() {
+ if (this.#type !== 1 /* MenuItemType.Item */) {
+ return false;
+ }
+ return this.hasAttribute("selected");
+ }
+ set selected(checked) {
+ if (this.#type !== 0 /* MenuItemType.Checkbox */) {
+ return;
+ }
+ if (checked) {
+ this.setAttribute("selected", "");
+ }
+ else {
+ this.removeAttribute("selected");
+ }
+ this.setAttribute("aria-checked", String(checked === true));
+ }
+ get disabled() {
+ return this.hasAttribute("disabled");
+ }
+ set disabled(disabled) {
+ if (disabled) {
+ this.setAttribute("disabled", "");
+ }
+ else {
+ this.removeAttribute("disabled");
+ }
+ this.setAttribute("aria-disabled", String(disabled === true));
+ }
+ get value() {
+ return this.getAttribute("value");
+ }
+ set value(value) {
+ this.setAttribute("value", value);
+ }
+ }
+ exports.WoltlabCoreMenuItemElement = WoltlabCoreMenuItemElement;
+ exports.default = WoltlabCoreMenuItemElement;
+ window.customElements.define("woltlab-core-menu-item", WoltlabCoreMenuItemElement);
+});
--- /dev/null
+define(["require", "exports"], function (require, exports) {
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.WoltlabCoreMenuSeparatorElement = void 0;
+ class WoltlabCoreMenuSeparatorElement extends HTMLElement {
+ connectedCallback() {
+ this.setAttribute("role", "separator");
+ }
+ }
+ exports.WoltlabCoreMenuSeparatorElement = WoltlabCoreMenuSeparatorElement;
+ exports.default = WoltlabCoreMenuSeparatorElement;
+ window.customElements.define("woltlab-core-menu-separator", WoltlabCoreMenuSeparatorElement);
+});
--- /dev/null
+define(["require", "exports"], function (require, exports) {
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.WoltlabCoreMenuElement = void 0;
+ class WoltlabCoreMenuElement extends HTMLElement {
+ connectedCallback() {
+ this.setAttribute("role", "menu");
+ this.label = this.getAttribute("label");
+ }
+ get label() {
+ return this.getAttribute("label");
+ }
+ set label(label) {
+ this.setAttribute("label", label);
+ this.setAttribute("aria-label", label);
+ }
+ }
+ exports.WoltlabCoreMenuElement = WoltlabCoreMenuElement;
+ exports.default = WoltlabCoreMenuElement;
+ window.customElements.define("woltlab-core-menu", WoltlabCoreMenuElement);
+});