@magmonium/one 0.4.41 → 0.4.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/fields/app_color.json +5 -0
- package/assets/fields/logo_glyph_paste.json +7 -0
- package/assets/fields/logo_glyph_upload.json +12 -0
- package/assets/forms/logo_glyph_input.json +13 -0
- package/assets/i18n/ar.json +8 -0
- package/assets/i18n/de.json +8 -0
- package/assets/i18n/en.json +8 -0
- package/assets/i18n/es.json +8 -0
- package/assets/i18n/fr.json +8 -0
- package/assets/i18n/hi.json +8 -0
- package/assets/i18n/it.json +8 -0
- package/assets/i18n/ja.json +8 -0
- package/assets/i18n/ko.json +8 -0
- package/assets/i18n/nl.json +8 -0
- package/assets/i18n/pl.json +8 -0
- package/assets/i18n/pt.json +8 -0
- package/assets/i18n/ru.json +8 -0
- package/assets/i18n/tr.json +8 -0
- package/assets/i18n/zh.json +8 -0
- package/assets/index.json +1 -1
- package/fesm2022/{magmonium-one-attribute-value-DCTXt4Sr.mjs → magmonium-one-attribute-value-C1lqou2L.mjs} +3 -3
- package/fesm2022/{magmonium-one-attribute-value-DCTXt4Sr.mjs.map → magmonium-one-attribute-value-C1lqou2L.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-base-checkbox-BNQAkyYU.mjs → magmonium-one-base-checkbox-CIxAiA4Q.mjs} +2 -2
- package/fesm2022/{magmonium-one-base-checkbox-BNQAkyYU.mjs.map → magmonium-one-base-checkbox-CIxAiA4Q.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-base-dropdown-DU4B4w7c.mjs → magmonium-one-base-dropdown-XpTWe4Ii.mjs} +10 -10
- package/fesm2022/{magmonium-one-base-dropdown-DU4B4w7c.mjs.map → magmonium-one-base-dropdown-XpTWe4Ii.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-base-input-BTxhUtYO.mjs → magmonium-one-base-input-C1Ek0Ezm.mjs} +2 -2
- package/fesm2022/{magmonium-one-base-input-BTxhUtYO.mjs.map → magmonium-one-base-input-C1Ek0Ezm.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-base-text-BCSqKmVs.mjs → magmonium-one-base-text-Di2V2ojp.mjs} +2 -2
- package/fesm2022/{magmonium-one-base-text-BCSqKmVs.mjs.map → magmonium-one-base-text-Di2V2ojp.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-button-BWB3ZKIj.mjs → magmonium-one-button-DZ4wCJgb.mjs} +11 -9
- package/fesm2022/{magmonium-one-button-BWB3ZKIj.mjs.map → magmonium-one-button-DZ4wCJgb.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-checkbox-D5-5WhJ-.mjs → magmonium-one-checkbox-R-hPZrCa.mjs} +5 -5
- package/fesm2022/{magmonium-one-checkbox-D5-5WhJ-.mjs.map → magmonium-one-checkbox-R-hPZrCa.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-color-utl-D86GGpz5.mjs → magmonium-one-color-utl-DI5p24iQ.mjs} +209 -6
- package/fesm2022/magmonium-one-color-utl-DI5p24iQ.mjs.map +1 -0
- package/fesm2022/{magmonium-one-directives-DePukAj8.mjs → magmonium-one-directives-B93p5bAL.mjs} +4 -4
- package/fesm2022/{magmonium-one-directives-DePukAj8.mjs.map → magmonium-one-directives-B93p5bAL.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-group-m41SX_fL.mjs → magmonium-one-group-B7YeUd1u.mjs} +7 -7
- package/fesm2022/{magmonium-one-group-m41SX_fL.mjs.map → magmonium-one-group-B7YeUd1u.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-header-D8CB9CBJ.mjs → magmonium-one-header-DUiBhPUP.mjs} +6 -5
- package/fesm2022/{magmonium-one-header-D8CB9CBJ.mjs.map → magmonium-one-header-DUiBhPUP.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-icon-BTPHGpEN.mjs → magmonium-one-icon-C3jwzbb2.mjs} +80 -9
- package/fesm2022/magmonium-one-icon-C3jwzbb2.mjs.map +1 -0
- package/fesm2022/{magmonium-one-image-editor-Dn0ACfH0.mjs → magmonium-one-image-editor-BRTk8i4O.mjs} +4 -4
- package/fesm2022/{magmonium-one-image-editor-Dn0ACfH0.mjs.map → magmonium-one-image-editor-BRTk8i4O.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-label-DjvJthAB.mjs → magmonium-one-label-D_rU82nD.mjs} +2 -2
- package/fesm2022/{magmonium-one-label-DjvJthAB.mjs.map → magmonium-one-label-D_rU82nD.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-m-ref-C8c4Vf1G.mjs → magmonium-one-m-ref-CEms7B6-.mjs} +2 -2
- package/fesm2022/{magmonium-one-m-ref-C8c4Vf1G.mjs.map → magmonium-one-m-ref-CEms7B6-.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-menu-EIfPlZ4E.mjs → magmonium-one-menu-cO34OcJc.mjs} +8 -7
- package/fesm2022/{magmonium-one-menu-EIfPlZ4E.mjs.map → magmonium-one-menu-cO34OcJc.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-multi-range-o57TiVJU.mjs → magmonium-one-multi-range-Bq3_3NHg.mjs} +3 -3
- package/fesm2022/{magmonium-one-multi-range-o57TiVJU.mjs.map → magmonium-one-multi-range-Bq3_3NHg.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-options-asset-EVsv0DL7.mjs → magmonium-one-options-asset-BMd7W0Mk.mjs} +2 -2
- package/fesm2022/{magmonium-one-options-asset-EVsv0DL7.mjs.map → magmonium-one-options-asset-BMd7W0Mk.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-otp-CE4L1RcG.mjs → magmonium-one-otp-V2tFztLx.mjs} +5 -5
- package/fesm2022/{magmonium-one-otp-CE4L1RcG.mjs.map → magmonium-one-otp-V2tFztLx.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-password-BjqYmT1s.mjs → magmonium-one-password-IdllPMUw.mjs} +6 -6
- package/fesm2022/{magmonium-one-password-BjqYmT1s.mjs.map → magmonium-one-password-IdllPMUw.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-radio-C2wOB_Nb.mjs → magmonium-one-radio-BAL3-3j5.mjs} +3 -3
- package/fesm2022/{magmonium-one-radio-C2wOB_Nb.mjs.map → magmonium-one-radio-BAL3-3j5.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-range-rgDe4O8u.mjs → magmonium-one-range-Cf7yUnhN.mjs} +4 -4
- package/fesm2022/{magmonium-one-range-rgDe4O8u.mjs.map → magmonium-one-range-Cf7yUnhN.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-selector-DeRIUUBA.mjs → magmonium-one-selector-DAEI_0JX.mjs} +4 -4
- package/fesm2022/{magmonium-one-selector-DeRIUUBA.mjs.map → magmonium-one-selector-DAEI_0JX.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-size-converter-C5fG_dgw.mjs → magmonium-one-size-converter-BOBD8nHy.mjs} +8 -1
- package/fesm2022/magmonium-one-size-converter-BOBD8nHy.mjs.map +1 -0
- package/fesm2022/{magmonium-one-text-BL-1lWST.mjs → magmonium-one-text-BnTkYLJe.mjs} +8 -7
- package/fesm2022/{magmonium-one-text-BL-1lWST.mjs.map → magmonium-one-text-BnTkYLJe.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-text-output-Ci93Hi9Y.mjs → magmonium-one-text-output-BZU61QIF.mjs} +4 -4
- package/fesm2022/{magmonium-one-text-output-Ci93Hi9Y.mjs.map → magmonium-one-text-output-BZU61QIF.mjs.map} +1 -1
- package/fesm2022/magmonium-one-theme-DYvNIWmo.mjs +1 -0
- package/fesm2022/{magmonium-one-toggle-BTK2lzqA.mjs → magmonium-one-toggle-V_YnZXx5.mjs} +3 -3
- package/fesm2022/{magmonium-one-toggle-BTK2lzqA.mjs.map → magmonium-one-toggle-V_YnZXx5.mjs.map} +1 -1
- package/fesm2022/magmonium-one.mjs +788 -185
- package/fesm2022/magmonium-one.mjs.map +1 -1
- package/package.json +1 -1
- package/types/magmonium-one.d.ts +355 -53
- package/fesm2022/magmonium-one-color-utl-D86GGpz5.mjs.map +0 -1
- package/fesm2022/magmonium-one-icon-BTPHGpEN.mjs.map +0 -1
- package/fesm2022/magmonium-one-size-converter-C5fG_dgw.mjs.map +0 -1
- package/fesm2022/magmonium-one-theme-CT4cWpe7.mjs +0 -1
package/fesm2022/{magmonium-one-menu-EIfPlZ4E.mjs.map → magmonium-one-menu-cO34OcJc.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magmonium-one-menu-EIfPlZ4E.mjs","names":["catchError"],"sources":["../../../../libs/one/src/lib/shared/ui/menu/ui/menu/menu.ts","../../../../libs/one/src/lib/shared/ui/menu/ui/menu/menu.html","../../../../libs/one/src/lib/shared/ui/menu/ui/context-menu-box/context-menu-box.ts","../../../../libs/one/src/lib/shared/ui/menu/ui/context-menu-box/context-menu-box.html","../../../../libs/one/src/lib/shared/ui/menu/ui/context-menu/context-menu.ts"],"sourcesContent":["import {\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Assets } from '../../../../enum/assets/assets';\nimport { HttpService } from '../../../../services/http';\nimport { TranslatePipe } from '../../../../pipe/translate';\n\nimport { IconComponent } from '../../../icon';\nimport { MenuItem } from '../../type';\nimport { NAV_STORE_REF } from '../../../../config/tokens';\n\n@Component({\n selector: 'm-menu',\n\n imports: [TranslatePipe, IconComponent],\n templateUrl: './menu.html',\n styleUrl: './menu.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown.arrowdown)': 'moveFocus($event, 1)',\n '(keydown.arrowup)': 'moveFocus($event, -1)',\n },\n})\nexport class MenuComponent {\n readonly #navRef = inject(NAV_STORE_REF, { optional: true });\n\n // --- Inputs ---\n config = input<MenuItem[][] | undefined>();\n file = input<string | undefined>();\n root = input<string | undefined>();\n url = input<string | undefined>();\n extra = input<MenuItem[] | undefined>();\n hide = input<string[] | undefined>();\n hideLink = input<boolean>(false);\n isAdmin = input<boolean>(false);\n /** Focus the first item once rendered — a popover menu opened from a trigger. */\n autoFocus = input<boolean>(false);\n readonly action = output<MenuItem>();\n\n visibilityRule = input<(key: string, data?: unknown) => boolean>();\n disableRule = input<(key: string, data?: unknown) => boolean>();\n extraData = input<unknown>();\n\n // --- Internals ---\n #httpService = inject(HttpService);\n #tree = signal<string[]>([]);\n #treeMap = signal<Record<string, MenuItem>>({});\n #host = inject<ElementRef<HTMLElement>>(ElementRef);\n // Whether the next settled render should focus the first item: `autoFocus`\n // decides the first one, a drill or back decides after (its rows replace\n // the focused one, which would drop focus to the body).\n #focusPending?: boolean;\n\n protected back = signal<MenuItem | undefined>(undefined);\n protected slideDirection = signal<'forward' | 'backward' | 'none'>('none');\n\n #asyncOptions = rxResource({\n params: computed(() => this.back()?.file ?? this.file()),\n stream: ({ params: file }) => {\n if (!file) {\n return of(undefined);\n }\n return this.#httpService\n .asset<MenuItem[][]>(['menus', file], Assets.JSON)\n .pipe(catchError(() => of(undefined)));\n },\n });\n\n protected options = computed<MenuItem[][]>(() => {\n const back = this.back();\n const async = this.#asyncOptions.value();\n const config = this.config();\n const hide = this.hide();\n const extra = this.extra();\n const isAdmin = this.isAdmin();\n const vRule = this.visibilityRule();\n const data = this.extraData();\n\n // Filtering recurses so a parent is judged by what survives under it: a row\n // whose every child was hidden would open an empty box, which reads as a\n // broken menu rather than an unavailable one. A `file` parent is exempt —\n // its options are fetched on drill and there is nothing here to count.\n const filterGroups = (groups: MenuItem[][]): MenuItem[][] =>\n groups\n .map((group) =>\n group.filter((item) => {\n if (!isAdmin && item.adminOnly) return false;\n if (hide?.length && hide.includes(item.id)) return false;\n if (vRule && !vRule(item.visibilityKey ?? item.id, data)) {\n return false;\n }\n if (item.options) return filterGroups(item.options).length > 0;\n return true;\n })\n )\n .filter((group) => group.length > 0);\n\n const source = back\n ? (back.options ?? async ?? [])\n : (async ?? config ?? []);\n\n const result = filterGroups(source);\n\n return extra?.length && !back ? [...result, extra] : result;\n });\n\n protected isLoading = computed(() => this.#asyncOptions.isLoading());\n\n constructor() {\n afterRenderEffect(() => {\n this.options();\n if (this.isLoading()) return;\n const pending = this.#focusPending ?? untracked(this.autoFocus);\n this.#focusPending = false;\n if (pending) {\n this.#host.nativeElement\n .querySelector<HTMLElement>('.menu-item:not(.is-disabled)')\n ?.focus();\n }\n });\n }\n\n // ↑/↓ walk the focusable rows (back row included), wrapping; Enter on a\n // row is its own `selectItem`.\n moveFocus(event: Event, step: 1 | -1): void {\n const rows = Array.from(\n this.#host.nativeElement.querySelectorAll<HTMLElement>(\n '.back-btn, .menu-item:not(.is-disabled)'\n )\n );\n if (!rows.length) return;\n event.preventDefault();\n const current = rows.indexOf(document.activeElement as HTMLElement);\n const next =\n current < 0\n ? step > 0\n ? 0\n : rows.length - 1\n : (current + step + rows.length) % rows.length;\n rows[next].focus();\n }\n\n // --- Handlers ---\n selectItem(item: MenuItem): void {\n const dRule = this.disableRule();\n if (item.disabled || (dRule && dRule(item.disableKey ?? item.id))) {\n return;\n }\n\n if (item.options || item.file) {\n this.slideDirection.set('forward');\n this.#treeMap.update((map) => ({ ...map, [item.id]: item }));\n this.#tree.update((t) => [...t, item.id]);\n this.back.set(item);\n this.#focusPending = this.#hasFocus();\n return;\n }\n\n // A row naming a Nav goes there itself — the NavKind on that node decides\n // whether it routes or opens a panel, the answer `[mRef]` gives (GLOSSARY.md\n // NavRef). Still emitted, so whatever holds the menu closes it.\n if (item.nav)\n this.#navRef?.setSelected(\n item.nav,\n undefined,\n item.keepPanel ? { keepPanel: true } : undefined\n );\n this.action.emit(item);\n }\n\n goBack(): void {\n this.slideDirection.set('backward');\n this.#focusPending = this.#hasFocus();\n const currentTree = this.#tree();\n if (currentTree.length <= 1) {\n this.#tree.set([]);\n this.back.set(undefined);\n return;\n }\n\n const newTree = currentTree.slice(0, -1);\n this.#tree.set(newTree);\n const parentId = newTree[newTree.length - 1];\n this.back.set(this.#treeMap()[parentId]);\n }\n\n #hasFocus(): boolean {\n return this.#host.nativeElement.contains(document.activeElement);\n }\n\n isSelected(item: MenuItem): boolean {\n // A NavRef knows what it points at, so selection is an id comparison —\n // no path normalising, and it works for panels as well as pages.\n if (item.nav) {\n return this.#navRef?.id() === item.nav;\n }\n\n const currentUrl = this.url();\n const rootPath = this.root();\n if (!currentUrl || !item.link) {\n return item.selected ?? false;\n }\n const fullLink = rootPath ? `${rootPath}/${item.link}` : item.link;\n return currentUrl === fullLink || currentUrl.startsWith(fullLink + '/');\n }\n\n isItemDisabled(item: MenuItem): boolean {\n const dRule = this.disableRule();\n return !!(\n item.disabled ||\n (dRule && dRule(item.disableKey ?? item.id, this.extraData()))\n );\n }\n}\n","<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","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n} from '@angular/core';\nimport { MenuComponent } from '../menu/menu';\nimport { MenuItem } from '../../type';\n\n@Component({\n selector: 'm-context-menu-box',\n imports: [MenuComponent],\n templateUrl: './context-menu-box.html',\n styleUrl: './context-menu-box.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContextMenuBoxComponent {\n readonly options = input<MenuItem[][]>([]);\n readonly hide = input<string[] | undefined>();\n readonly file = input<string | undefined>();\n readonly width = input<string>('250px');\n readonly height = input<string>('auto');\n readonly isAdmin = input<boolean>(false);\n readonly action = output<MenuItem>();\n\n readonly visibilityRule = input<(key: string, data?: unknown) => boolean>();\n readonly disableRule = input<(key: string, data?: unknown) => boolean>();\n readonly extraData = input<unknown>();\n\n protected readonly emitAction = (item: MenuItem): void => {\n this.action.emit(item);\n };\n}\n","<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","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n inputBinding,\n model,\n output,\n outputBinding,\n viewChild,\n} from '@angular/core';\nimport { ConfigComponent } from '../../../../lib/components/config-component';\nimport { SelectorDirective } from '../../../../directives/selector/selector';\nimport type { SelectorConfig } from '../../../../directives/selector/selector-type';\nimport { Icon } from '../../../icon';\nimport { ButtonComponent } from '../../../button/ui/button';\nimport { ContextMenu, MenuItem } from '../../type';\nimport { ContextMenuBoxComponent } from '../context-menu-box/context-menu-box';\n\n@Component({\n selector: 'm-context-menu, m-one-context-menu',\n imports: [ButtonComponent, SelectorDirective],\n template: `\n <m-one-button\n [config]=\"triggerButtonConfig()\"\n [mSelector]=\"selectorConfig()\"\n (opened)=\"toggle.set(true)\"\n (closed)=\"toggle.set(false)\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContextMenuComponent extends ConfigComponent<ContextMenu> {\n toggle = model<boolean>();\n override remote = input<string | undefined>();\n exclude = input<string[]>();\n readonly visibilityRule = input<(key: string, data?: unknown) => boolean>();\n readonly disableRule = input<(key: string, data?: unknown) => boolean>();\n readonly extraData = input<unknown>();\n readonly inverted = input<boolean | undefined>();\n // A bound list rides the tag, not the config bag: a YAML file cannot hold\n // rows a store computes. `MenuItem[]` is accepted because root groups are an\n // authoring shape — data is one flat group — and normalized on read.\n readonly options = input<MenuItem[] | MenuItem[][] | undefined>();\n readonly action = output<MenuItem>();\n protected override readonly subFolder = 'menu';\n private readonly selectorDir = viewChild(SelectorDirective);\n protected readonly contextMenuConfig = computed(\n () => (this.config() ?? {}) as ContextMenu\n );\n private readonly iconConfig = computed<Partial<Icon>>(() => {\n const toggle = this.toggle();\n const { closeIcon, icon } = this.contextMenuConfig();\n if (toggle) {\n return { name: 'x', ...closeIcon };\n }\n return { name: 'ellipsis-vertical', ...icon };\n });\n protected readonly triggerButtonConfig = computed(() => ({\n variant: 'ghost' as const,\n iconOnly: true as const,\n icon: this.iconConfig().name,\n label: 'actions',\n inverted: this.inverted() ?? this.contextMenuConfig().inverted,\n }));\n // `exclude` is not applied here: a menu nests, and a filter run once over the\n // root groups cannot reach an item a layer down, nor one a `file` parent has\n // not fetched yet. It is handed to the menu as `hide` instead, which the menu\n // re-applies at whatever depth is on screen.\n private readonly contextMenuOptions = computed<MenuItem[][]>(() => {\n const supplied = this.options();\n if (supplied) {\n // The input overrides the config bag the way `inverted` already does.\n return Array.isArray(supplied[0])\n ? (supplied as MenuItem[][])\n : [supplied as MenuItem[]];\n }\n return this.contextMenuConfig().options ?? [];\n });\n protected readonly selectorConfig = computed<\n SelectorConfig<ContextMenuBoxComponent> | undefined\n >(() => {\n // The overlay-bearing primitives' DesignMode rule (ADR 0003): a Canvas\n // owns the click — the ControlLayer selects, never the menu — so the\n // directive is handed nothing to open. An undefined config is the whole\n // suppression, the directive having no `base` to open on.\n if (this.isDesignMode) return undefined;\n return {\n component: ContextMenuBoxComponent,\n base: 'm-context-menu',\n width: this.contextMenuConfig().width ?? '250px',\n height: this.contextMenuConfig().height ?? 'auto',\n align: this.contextMenuConfig().align,\n toggle: true,\n bindings: [\n inputBinding('options', this.contextMenuOptions),\n inputBinding('hide', this.exclude),\n inputBinding('visibilityRule', this.visibilityRule),\n inputBinding('disableRule', this.disableRule),\n inputBinding('extraData', this.extraData),\n outputBinding('action', (event: MenuItem) => {\n this.action.emit(event);\n this.selectorDir()?.close();\n }),\n ],\n };\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"magmonium-one-menu-cO34OcJc.mjs","names":["catchError"],"sources":["../../../../libs/one/src/lib/shared/ui/menu/ui/menu/menu.ts","../../../../libs/one/src/lib/shared/ui/menu/ui/menu/menu.html","../../../../libs/one/src/lib/shared/ui/menu/ui/context-menu-box/context-menu-box.ts","../../../../libs/one/src/lib/shared/ui/menu/ui/context-menu-box/context-menu-box.html","../../../../libs/one/src/lib/shared/ui/menu/ui/context-menu/context-menu.ts"],"sourcesContent":["import {\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Assets } from '../../../../enum/assets/assets';\nimport { HttpService } from '../../../../services/http';\nimport { TranslatePipe } from '../../../../pipe/translate';\n\nimport { IconComponent } from '../../../icon';\nimport { MenuItem } from '../../type';\nimport { NAV_STORE_REF } from '../../../../config/tokens';\n\n@Component({\n selector: 'm-menu',\n\n imports: [TranslatePipe, IconComponent],\n templateUrl: './menu.html',\n styleUrl: './menu.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown.arrowdown)': 'moveFocus($event, 1)',\n '(keydown.arrowup)': 'moveFocus($event, -1)',\n },\n})\nexport class MenuComponent {\n readonly #navRef = inject(NAV_STORE_REF, { optional: true });\n\n // --- Inputs ---\n config = input<MenuItem[][] | undefined>();\n file = input<string | undefined>();\n root = input<string | undefined>();\n url = input<string | undefined>();\n extra = input<MenuItem[] | undefined>();\n hide = input<string[] | undefined>();\n hideLink = input<boolean>(false);\n isAdmin = input<boolean>(false);\n /** Focus the first item once rendered — a popover menu opened from a trigger. */\n autoFocus = input<boolean>(false);\n readonly action = output<MenuItem>();\n\n visibilityRule = input<(key: string, data?: unknown) => boolean>();\n disableRule = input<(key: string, data?: unknown) => boolean>();\n extraData = input<unknown>();\n\n // --- Internals ---\n #httpService = inject(HttpService);\n #tree = signal<string[]>([]);\n #treeMap = signal<Record<string, MenuItem>>({});\n #host = inject<ElementRef<HTMLElement>>(ElementRef);\n // Whether the next settled render should focus the first item: `autoFocus`\n // decides the first one, a drill or back decides after (its rows replace\n // the focused one, which would drop focus to the body).\n #focusPending?: boolean;\n\n protected back = signal<MenuItem | undefined>(undefined);\n protected slideDirection = signal<'forward' | 'backward' | 'none'>('none');\n\n #asyncOptions = rxResource({\n params: computed(() => this.back()?.file ?? this.file()),\n stream: ({ params: file }) => {\n if (!file) {\n return of(undefined);\n }\n return this.#httpService\n .asset<MenuItem[][]>(['menus', file], Assets.JSON)\n .pipe(catchError(() => of(undefined)));\n },\n });\n\n protected options = computed<MenuItem[][]>(() => {\n const back = this.back();\n const async = this.#asyncOptions.value();\n const config = this.config();\n const hide = this.hide();\n const extra = this.extra();\n const isAdmin = this.isAdmin();\n const vRule = this.visibilityRule();\n const data = this.extraData();\n\n // Filtering recurses so a parent is judged by what survives under it: a row\n // whose every child was hidden would open an empty box, which reads as a\n // broken menu rather than an unavailable one. A `file` parent is exempt —\n // its options are fetched on drill and there is nothing here to count.\n const filterGroups = (groups: MenuItem[][]): MenuItem[][] =>\n groups\n .map((group) =>\n group.filter((item) => {\n if (!isAdmin && item.adminOnly) return false;\n if (hide?.length && hide.includes(item.id)) return false;\n if (vRule && !vRule(item.visibilityKey ?? item.id, data)) {\n return false;\n }\n if (item.options) return filterGroups(item.options).length > 0;\n return true;\n })\n )\n .filter((group) => group.length > 0);\n\n const source = back\n ? (back.options ?? async ?? [])\n : (async ?? config ?? []);\n\n const result = filterGroups(source);\n\n return extra?.length && !back ? [...result, extra] : result;\n });\n\n protected isLoading = computed(() => this.#asyncOptions.isLoading());\n\n constructor() {\n afterRenderEffect(() => {\n this.options();\n if (this.isLoading()) return;\n const pending = this.#focusPending ?? untracked(this.autoFocus);\n this.#focusPending = false;\n if (pending) {\n this.#host.nativeElement\n .querySelector<HTMLElement>('.menu-item:not(.is-disabled)')\n ?.focus();\n }\n });\n }\n\n // ↑/↓ walk the focusable rows (back row included), wrapping; Enter on a\n // row is its own `selectItem`.\n moveFocus(event: Event, step: 1 | -1): void {\n const rows = Array.from(\n this.#host.nativeElement.querySelectorAll<HTMLElement>(\n '.back-btn, .menu-item:not(.is-disabled)'\n )\n );\n if (!rows.length) return;\n event.preventDefault();\n const current = rows.indexOf(document.activeElement as HTMLElement);\n const next =\n current < 0\n ? step > 0\n ? 0\n : rows.length - 1\n : (current + step + rows.length) % rows.length;\n rows[next].focus();\n }\n\n // --- Handlers ---\n selectItem(item: MenuItem): void {\n const dRule = this.disableRule();\n if (item.disabled || (dRule && dRule(item.disableKey ?? item.id))) {\n return;\n }\n\n if (item.options || item.file) {\n this.slideDirection.set('forward');\n this.#treeMap.update((map) => ({ ...map, [item.id]: item }));\n this.#tree.update((t) => [...t, item.id]);\n this.back.set(item);\n this.#focusPending = this.#hasFocus();\n return;\n }\n\n // A row naming a Nav goes there itself — the NavKind on that node decides\n // whether it routes or opens a panel, the answer `[mRef]` gives (GLOSSARY.md\n // NavRef). Still emitted, so whatever holds the menu closes it.\n if (item.nav)\n this.#navRef?.setSelected(\n item.nav,\n undefined,\n item.keepPanel ? { keepPanel: true } : undefined\n );\n this.action.emit(item);\n }\n\n goBack(): void {\n this.slideDirection.set('backward');\n this.#focusPending = this.#hasFocus();\n const currentTree = this.#tree();\n if (currentTree.length <= 1) {\n this.#tree.set([]);\n this.back.set(undefined);\n return;\n }\n\n const newTree = currentTree.slice(0, -1);\n this.#tree.set(newTree);\n const parentId = newTree[newTree.length - 1];\n this.back.set(this.#treeMap()[parentId]);\n }\n\n #hasFocus(): boolean {\n return this.#host.nativeElement.contains(document.activeElement);\n }\n\n isSelected(item: MenuItem): boolean {\n // A NavRef knows what it points at, so selection is an id comparison —\n // no path normalising, and it works for panels as well as pages.\n if (item.nav) {\n return this.#navRef?.id() === item.nav;\n }\n\n const currentUrl = this.url();\n const rootPath = this.root();\n if (!currentUrl || !item.link) {\n return item.selected ?? false;\n }\n const fullLink = rootPath ? `${rootPath}/${item.link}` : item.link;\n return currentUrl === fullLink || currentUrl.startsWith(fullLink + '/');\n }\n\n isItemDisabled(item: MenuItem): boolean {\n const dRule = this.disableRule();\n return !!(\n item.disabled ||\n (dRule && dRule(item.disableKey ?? item.id, this.extraData()))\n );\n }\n}\n","<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","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n} from '@angular/core';\nimport { MenuComponent } from '../menu/menu';\nimport { MenuItem } from '../../type';\n\n@Component({\n selector: 'm-context-menu-box',\n imports: [MenuComponent],\n templateUrl: './context-menu-box.html',\n styleUrl: './context-menu-box.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContextMenuBoxComponent {\n readonly options = input<MenuItem[][]>([]);\n readonly hide = input<string[] | undefined>();\n readonly file = input<string | undefined>();\n readonly width = input<string>('250px');\n readonly height = input<string>('auto');\n readonly isAdmin = input<boolean>(false);\n readonly action = output<MenuItem>();\n\n readonly visibilityRule = input<(key: string, data?: unknown) => boolean>();\n readonly disableRule = input<(key: string, data?: unknown) => boolean>();\n readonly extraData = input<unknown>();\n\n protected readonly emitAction = (item: MenuItem): void => {\n this.action.emit(item);\n };\n}\n","<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","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n inputBinding,\n model,\n output,\n outputBinding,\n viewChild,\n} from '@angular/core';\nimport { ConfigComponent } from '../../../../lib/components/config-component';\nimport { SelectorDirective } from '../../../../directives/selector/selector';\nimport type { SelectorConfig } from '../../../../directives/selector/selector-type';\nimport { Icon } from '../../../icon';\nimport { ButtonComponent } from '../../../button/ui/button';\nimport { ContextMenu, MenuItem } from '../../type';\nimport { ContextMenuBoxComponent } from '../context-menu-box/context-menu-box';\n\n@Component({\n selector: 'm-context-menu, m-one-context-menu',\n imports: [ButtonComponent, SelectorDirective],\n template: `\n <m-one-button\n [config]=\"triggerButtonConfig()\"\n [mSelector]=\"selectorConfig()\"\n (opened)=\"toggle.set(true)\"\n (closed)=\"toggle.set(false)\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContextMenuComponent extends ConfigComponent<ContextMenu> {\n toggle = model<boolean>();\n override remote = input<string | undefined>();\n exclude = input<string[]>();\n readonly visibilityRule = input<(key: string, data?: unknown) => boolean>();\n readonly disableRule = input<(key: string, data?: unknown) => boolean>();\n readonly extraData = input<unknown>();\n readonly inverted = input<boolean | undefined>();\n // A bound list rides the tag, not the config bag: a YAML file cannot hold\n // rows a store computes. `MenuItem[]` is accepted because root groups are an\n // authoring shape — data is one flat group — and normalized on read.\n readonly options = input<MenuItem[] | MenuItem[][] | undefined>();\n readonly action = output<MenuItem>();\n protected override readonly subFolder = 'menu';\n private readonly selectorDir = viewChild(SelectorDirective);\n protected readonly contextMenuConfig = computed(\n () => (this.config() ?? {}) as ContextMenu\n );\n private readonly iconConfig = computed<Partial<Icon>>(() => {\n const toggle = this.toggle();\n const { closeIcon, icon } = this.contextMenuConfig();\n if (toggle) {\n return { name: 'x', ...closeIcon };\n }\n return { name: 'ellipsis-vertical', ...icon };\n });\n protected readonly triggerButtonConfig = computed(() => ({\n variant: 'ghost' as const,\n iconOnly: true as const,\n icon: this.iconConfig().name,\n label: 'actions',\n inverted: this.inverted() ?? this.contextMenuConfig().inverted,\n }));\n // `exclude` is not applied here: a menu nests, and a filter run once over the\n // root groups cannot reach an item a layer down, nor one a `file` parent has\n // not fetched yet. It is handed to the menu as `hide` instead, which the menu\n // re-applies at whatever depth is on screen.\n private readonly contextMenuOptions = computed<MenuItem[][]>(() => {\n const supplied = this.options();\n if (supplied) {\n // The input overrides the config bag the way `inverted` already does.\n return Array.isArray(supplied[0])\n ? (supplied as MenuItem[][])\n : [supplied as MenuItem[]];\n }\n return this.contextMenuConfig().options ?? [];\n });\n protected readonly selectorConfig = computed<\n SelectorConfig<ContextMenuBoxComponent> | undefined\n >(() => {\n // The overlay-bearing primitives' DesignMode rule (ADR 0003): a Canvas\n // owns the click — the ControlLayer selects, never the menu — so the\n // directive is handed nothing to open. An undefined config is the whole\n // suppression, the directive having no `base` to open on.\n if (this.isDesignMode) return undefined;\n return {\n component: ContextMenuBoxComponent,\n base: 'm-context-menu',\n width: this.contextMenuConfig().width ?? '250px',\n height: this.contextMenuConfig().height ?? 'auto',\n align: this.contextMenuConfig().align,\n toggle: true,\n bindings: [\n inputBinding('options', this.contextMenuOptions),\n inputBinding('hide', this.exclude),\n inputBinding('visibilityRule', this.visibilityRule),\n inputBinding('disableRule', this.disableRule),\n inputBinding('extraData', this.extraData),\n outputBinding('action', (event: MenuItem) => {\n this.action.emit(event);\n this.selectorDir()?.close();\n }),\n ],\n };\n });\n}\n"],"mappings":"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"}
|
package/fesm2022/{magmonium-one-multi-range-o57TiVJU.mjs → magmonium-one-multi-range-Bq3_3NHg.mjs}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./magmonium-one-rolldown-runtime-DpJrqANO.mjs";
|
|
2
|
-
import { t as LabelComponent } from "./magmonium-one-label-
|
|
3
|
-
import { p as DraggableDirective } from "./magmonium-one-directives-
|
|
2
|
+
import { t as LabelComponent } from "./magmonium-one-label-D_rU82nD.mjs";
|
|
3
|
+
import { p as DraggableDirective } from "./magmonium-one-directives-B93p5bAL.mjs";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import { ChangeDetectionStrategy, Component, ElementRef, HostListener, computed, effect, inject, input, linkedSignal, model, signal, viewChild } from "@angular/core";
|
|
6
6
|
var BaseArrayInputComponent = class BaseArrayInputComponent {
|
|
@@ -455,4 +455,4 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
455
455
|
});
|
|
456
456
|
export { multi_range_exports as n, BaseArrayInputComponent as r, MultiRangeInputComponent as t };
|
|
457
457
|
|
|
458
|
-
//# sourceMappingURL=magmonium-one-multi-range-
|
|
458
|
+
//# sourceMappingURL=magmonium-one-multi-range-Bq3_3NHg.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magmonium-one-multi-range-o57TiVJU.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/text/base-array.ts","../../../../libs/one/src/lib/shared/ui/input/ui/range/multi-range.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n ElementRef,\n inject,\n} from '@angular/core';\nimport {\n FormValueControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\nimport { Input } from '../../model/input';\n\n@Component({\n selector: 'm-base-array-input',\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BaseArrayInputComponent implements FormValueControl<number[]> {\n value = model<number[]>([]);\n readonly focused = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n readonly config = input<Input>();\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n touched = model<boolean>(false);\n\n protected readonly elementRef = inject(ElementRef);\n\n showErrors = computed(() => this.touched() && this.invalid());\n\n protected readonly setValue = (value: number[]): void => {\n this.value.set(value);\n this.touched.set(true);\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n HostListener,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { BaseArrayInputComponent } from '../text/base-array';\nimport { DraggableDirective, Draggable } from '../../../../directives';\nimport { LabelComponent } from '../label';\nimport { MultiRangeInput } from '../../model/input';\nimport { Direction } from '../../../../type';\n\n@Component({\n selector: 'm-multi-range',\n imports: [DraggableDirective, LabelComponent],\n template: `\n @if (config(); as range) {\n <div class=\"m-range m-range--multi\">\n <m-label\n class=\"m-range__label\"\n [placeholder]=\"range.label\"\n [params]=\"range.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n <div class=\"m-range__control\">\n <div class=\"m-range__track\" #track>\n <div\n class=\"m-range__fill\"\n [style.left.px]=\"minThumb().position.x\"\n [style.width.px]=\"fillWidth()\"\n ></div>\n <div\n class=\"m-range__thumb\"\n [(mDraggable)]=\"minThumb\"\n [min]=\"{ x: 0, y: _TRACK_HALF_H }\"\n [max]=\"{ x: maxThumb().position.x, y: _TRACK_HALF_H }\"\n ></div>\n <div\n class=\"m-range__thumb\"\n [(mDraggable)]=\"maxThumb\"\n [min]=\"{ x: minThumb().position.x, y: _TRACK_HALF_H }\"\n [max]=\"{ x: _trackWidth(), y: _TRACK_HALF_H }\"\n ></div>\n </div>\n </div>\n <span class=\"m-range__value\"\n >{{ _displayMin() }}–{{ _displayMax() }}</span\n >\n </div>\n }\n `,\n styleUrl: './range.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MultiRangeInputComponent extends BaseArrayInputComponent {\n private readonly _track = viewChild<ElementRef<HTMLDivElement>>('track');\n protected readonly _trackWidth = signal(0);\n protected readonly _TRACK_HALF_H = 3;\n\n /**\n * Measured live rather than once. The track fills its row and opens inside\n * panels that animate in, and a width read mid\n * animation is the scaled one — `getBoundingClientRect` counts transforms\n * where a ResizeObserver's box does not. A stale width is a thumb that stops\n * short of the track's end or, before the bounds became inputs on the\n * Draggable, ran clean past it.\n */\n private readonly _measure = effect((onCleanup) => {\n const track = this._track();\n if (!track) return;\n\n const el = track.nativeElement;\n this._trackWidth.set(el.getBoundingClientRect().width);\n\n // Absent under jsdom, where the window resize below is the only signal.\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(([entry]) =>\n this._trackWidth.set(entry.contentRect.width)\n );\n observer.observe(el);\n onCleanup(() => observer.disconnect());\n });\n\n readonly minThumb = linkedSignal({\n source: () => ({\n val: this.value()[0],\n tw: this._trackWidth(),\n cfg: this.config(),\n }),\n computation: ({ val, tw, cfg }): Draggable => {\n const c = cfg as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const numVal = val ?? min;\n const x = tw > 0 ? (tw * (numVal - min)) / (max - min) : 0;\n return {\n direction: 'x' as Direction,\n position: { x, y: this._TRACK_HALF_H },\n };\n },\n });\n\n readonly maxThumb = linkedSignal({\n source: () => ({\n val: this.value()[1],\n tw: this._trackWidth(),\n cfg: this.config(),\n }),\n computation: ({ val, tw, cfg }): Draggable => {\n const c = cfg as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const numVal = val ?? max;\n const x = tw > 0 ? (tw * (numVal - min)) / (max - min) : tw;\n return {\n direction: 'x' as Direction,\n position: { x, y: this._TRACK_HALF_H },\n };\n },\n });\n\n readonly fillWidth = computed(() =>\n Math.max(\n 0,\n (this.maxThumb().position.x ?? 0) - (this.minThumb().position.x ?? 0)\n )\n );\n\n readonly _displayMin = computed(() => {\n const c = this.config() as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return this.value()[0] ?? min;\n return Math.round(\n min + ((max - min) * (this.minThumb().position.x ?? 0)) / tw\n );\n });\n\n readonly _displayMax = computed(() => {\n const c = this.config() as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return this.value()[1] ?? max;\n return Math.round(\n min + ((max - min) * (this.maxThumb().position.x ?? 0)) / tw\n );\n });\n\n constructor() {\n super();\n\n effect(() => {\n const pos = this.minThumb().position;\n const c = this.config() as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return;\n const currentVal = this.value()[0] ?? min;\n const expectedX = (tw * (currentVal - min)) / (max - min);\n if (pos.x !== expectedX) {\n const newMin = Math.round(min + ((max - min) * (pos.x ?? 0)) / tw);\n const currentMax = this.value()[1] ?? max;\n this.setValue([newMin, currentMax]);\n }\n });\n\n effect(() => {\n const pos = this.maxThumb().position;\n const c = this.config() as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return;\n const currentVal = this.value()[1] ?? max;\n const expectedX = tw > 0 ? (tw * (currentVal - min)) / (max - min) : tw;\n if (pos.x !== expectedX) {\n const newMax = Math.round(min + ((max - min) * (pos.x ?? 0)) / tw);\n const currentMin = this.value()[0] ?? min;\n this.setValue([currentMin, newMax]);\n }\n });\n }\n\n @HostListener('window:resize')\n protected _onResize(): void {\n const track = this._track();\n if (track) {\n this._trackWidth.set(track.nativeElement.getBoundingClientRect().width);\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"magmonium-one-multi-range-Bq3_3NHg.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/text/base-array.ts","../../../../libs/one/src/lib/shared/ui/input/ui/range/multi-range.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n ElementRef,\n inject,\n} from '@angular/core';\nimport {\n FormValueControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\nimport { Input } from '../../model/input';\n\n@Component({\n selector: 'm-base-array-input',\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BaseArrayInputComponent implements FormValueControl<number[]> {\n value = model<number[]>([]);\n readonly focused = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n readonly config = input<Input>();\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n touched = model<boolean>(false);\n\n protected readonly elementRef = inject(ElementRef);\n\n showErrors = computed(() => this.touched() && this.invalid());\n\n protected readonly setValue = (value: number[]): void => {\n this.value.set(value);\n this.touched.set(true);\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n HostListener,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { BaseArrayInputComponent } from '../text/base-array';\nimport { DraggableDirective, Draggable } from '../../../../directives';\nimport { LabelComponent } from '../label';\nimport { MultiRangeInput } from '../../model/input';\nimport { Direction } from '../../../../type';\n\n@Component({\n selector: 'm-multi-range',\n imports: [DraggableDirective, LabelComponent],\n template: `\n @if (config(); as range) {\n <div class=\"m-range m-range--multi\">\n <m-label\n class=\"m-range__label\"\n [placeholder]=\"range.label\"\n [params]=\"range.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n <div class=\"m-range__control\">\n <div class=\"m-range__track\" #track>\n <div\n class=\"m-range__fill\"\n [style.left.px]=\"minThumb().position.x\"\n [style.width.px]=\"fillWidth()\"\n ></div>\n <div\n class=\"m-range__thumb\"\n [(mDraggable)]=\"minThumb\"\n [min]=\"{ x: 0, y: _TRACK_HALF_H }\"\n [max]=\"{ x: maxThumb().position.x, y: _TRACK_HALF_H }\"\n ></div>\n <div\n class=\"m-range__thumb\"\n [(mDraggable)]=\"maxThumb\"\n [min]=\"{ x: minThumb().position.x, y: _TRACK_HALF_H }\"\n [max]=\"{ x: _trackWidth(), y: _TRACK_HALF_H }\"\n ></div>\n </div>\n </div>\n <span class=\"m-range__value\"\n >{{ _displayMin() }}–{{ _displayMax() }}</span\n >\n </div>\n }\n `,\n styleUrl: './range.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MultiRangeInputComponent extends BaseArrayInputComponent {\n private readonly _track = viewChild<ElementRef<HTMLDivElement>>('track');\n protected readonly _trackWidth = signal(0);\n protected readonly _TRACK_HALF_H = 3;\n\n /**\n * Measured live rather than once. The track fills its row and opens inside\n * panels that animate in, and a width read mid\n * animation is the scaled one — `getBoundingClientRect` counts transforms\n * where a ResizeObserver's box does not. A stale width is a thumb that stops\n * short of the track's end or, before the bounds became inputs on the\n * Draggable, ran clean past it.\n */\n private readonly _measure = effect((onCleanup) => {\n const track = this._track();\n if (!track) return;\n\n const el = track.nativeElement;\n this._trackWidth.set(el.getBoundingClientRect().width);\n\n // Absent under jsdom, where the window resize below is the only signal.\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(([entry]) =>\n this._trackWidth.set(entry.contentRect.width)\n );\n observer.observe(el);\n onCleanup(() => observer.disconnect());\n });\n\n readonly minThumb = linkedSignal({\n source: () => ({\n val: this.value()[0],\n tw: this._trackWidth(),\n cfg: this.config(),\n }),\n computation: ({ val, tw, cfg }): Draggable => {\n const c = cfg as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const numVal = val ?? min;\n const x = tw > 0 ? (tw * (numVal - min)) / (max - min) : 0;\n return {\n direction: 'x' as Direction,\n position: { x, y: this._TRACK_HALF_H },\n };\n },\n });\n\n readonly maxThumb = linkedSignal({\n source: () => ({\n val: this.value()[1],\n tw: this._trackWidth(),\n cfg: this.config(),\n }),\n computation: ({ val, tw, cfg }): Draggable => {\n const c = cfg as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const numVal = val ?? max;\n const x = tw > 0 ? (tw * (numVal - min)) / (max - min) : tw;\n return {\n direction: 'x' as Direction,\n position: { x, y: this._TRACK_HALF_H },\n };\n },\n });\n\n readonly fillWidth = computed(() =>\n Math.max(\n 0,\n (this.maxThumb().position.x ?? 0) - (this.minThumb().position.x ?? 0)\n )\n );\n\n readonly _displayMin = computed(() => {\n const c = this.config() as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return this.value()[0] ?? min;\n return Math.round(\n min + ((max - min) * (this.minThumb().position.x ?? 0)) / tw\n );\n });\n\n readonly _displayMax = computed(() => {\n const c = this.config() as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return this.value()[1] ?? max;\n return Math.round(\n min + ((max - min) * (this.maxThumb().position.x ?? 0)) / tw\n );\n });\n\n constructor() {\n super();\n\n effect(() => {\n const pos = this.minThumb().position;\n const c = this.config() as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return;\n const currentVal = this.value()[0] ?? min;\n const expectedX = (tw * (currentVal - min)) / (max - min);\n if (pos.x !== expectedX) {\n const newMin = Math.round(min + ((max - min) * (pos.x ?? 0)) / tw);\n const currentMax = this.value()[1] ?? max;\n this.setValue([newMin, currentMax]);\n }\n });\n\n effect(() => {\n const pos = this.maxThumb().position;\n const c = this.config() as MultiRangeInput | undefined;\n const min = c?.min ?? 0;\n const max = c?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return;\n const currentVal = this.value()[1] ?? max;\n const expectedX = tw > 0 ? (tw * (currentVal - min)) / (max - min) : tw;\n if (pos.x !== expectedX) {\n const newMax = Math.round(min + ((max - min) * (pos.x ?? 0)) / tw);\n const currentMin = this.value()[0] ?? min;\n this.setValue([currentMin, newMax]);\n }\n });\n }\n\n @HostListener('window:resize')\n protected _onResize(): void {\n const track = this._track();\n if (track) {\n this._trackWidth.set(track.nativeElement.getBoundingClientRect().width);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { J as OPTIONS_SOURCE, p as AssetStore } from "./magmonium-one-size-converter-
|
|
1
|
+
import { J as OPTIONS_SOURCE, p as AssetStore } from "./magmonium-one-size-converter-BOBD8nHy.mjs";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import { Directive, computed, effect, inject, input, untracked } from "@angular/core";
|
|
4
4
|
import { of } from "rxjs";
|
|
@@ -94,4 +94,4 @@ function presetDefaultOption(options, current, apply) {
|
|
|
94
94
|
}
|
|
95
95
|
export { OptionsSourceDirective as i, normalizeAssetOptions as n, presetDefaultOption as r, assetOptions as t };
|
|
96
96
|
|
|
97
|
-
//# sourceMappingURL=magmonium-one-options-asset-
|
|
97
|
+
//# sourceMappingURL=magmonium-one-options-asset-BMd7W0Mk.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magmonium-one-options-asset-
|
|
1
|
+
{"version":3,"file":"magmonium-one-options-asset-BMd7W0Mk.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/form/directive/options-source.directive.ts","../../../../libs/one/src/lib/shared/ui/input/lib/options-asset.ts"],"sourcesContent":["import { Directive, input } from '@angular/core';\n\n/**\n * Names the AssetOptions list a Field chooses from (GLOSSARY.md OptionsSource).\n * The markup spelling of the `optionsAsset:` config key, added beside it rather\n * than in place of it (ADR 0010) — a Field still described by a file keeps\n * declaring the key inside that file.\n *\n * Carries the name and nothing else. Resolution stays where it already lives,\n * in the inputs that read `config.optionsAsset` — the SectionFormItem folds\n * this name into its config, so a Dropdown or a SelectableCard cannot tell\n * which of the two spellings it came from, and there is no second resolver to\n * drift from the first.\n */\n@Directive({\n selector: '[mOptions]',\n})\nexport class OptionsSourceDirective {\n readonly name = input<string | undefined>(undefined, { alias: 'mOptions' });\n}\n","import { computed, effect, inject, Signal, untracked } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { of } from 'rxjs';\nimport { DropdownOption, DropdownValue } from '../model/input';\nimport { AssetStore } from '../../../stores/asset.store';\nimport { OPTIONS_SOURCE } from '../../../config/tokens';\n// Direct path rather than the form barrel: the barrel pulls in the form's\n// components, which import these inputs back.\nimport { OptionsSourceDirective } from '../../form/directive/options-source.directive';\n\n// One row of a `mag_assets/options/<name>.yml` asset. `id` is accepted\n// alongside `value` because option assets predate the field types that read\n// them, and several were written with `id`.\nexport type AssetOption = {\n id?: string;\n value?: string;\n label: string;\n icon?: string;\n disabled?: boolean;\n default?: boolean;\n};\n\n// Option assets are written either flat or as rows of rows (the same shape a\n// form's `inputs` uses), so both are flattened before mapping.\nexport function normalizeAssetOptions(\n data: AssetOption[] | AssetOption[][] | undefined\n): DropdownOption[] {\n if (!data?.length) return [];\n const flat: AssetOption[] = Array.isArray(data[0])\n ? (data as AssetOption[][]).flat()\n : (data as AssetOption[]);\n return flat.map((option) => ({\n value: option.value ?? option.id ?? '',\n label: option.label,\n icon: option.icon,\n disabled: option.disabled,\n ...(option.default === true ? { default: true } : {}),\n }));\n}\n\n/**\n * The choices an OptionsSource resolves to, for whichever Field reads it —\n * Dropdown, SelectableCard, ToggleRadio. One resolver rather than one per\n * Field: the name means the same list wherever it is written, and a second\n * copy of this would be a second answer that could drift.\n *\n * The name comes from the `mOptions` directive on the Field's tag, which is\n * the spelling of the list key (ADR 0010). An `optionsAsset:` written in a\n * field asset is passed in by the Fields that still read one, and outranks the\n * directive — the nearer declaration wins, same order every other key follows.\n * The directive is injected rather than passed because an input created inside\n * a `m-section-form-item` sits under that item's host, where the directive is.\n *\n * OPTIONS_SOURCE is read ahead of the fetch, so a list held only in memory (a\n * visual editor's unsaved OptionSets) fills the Field without ever being a\n * file. Must be called from an injection context.\n */\nexport function assetOptions(\n name?: () => string | undefined\n): Signal<DropdownOption[]> {\n const assetStore = inject(AssetStore);\n const optionsSource = inject(OPTIONS_SOURCE, { optional: true });\n const directive = inject(OptionsSourceDirective, { optional: true });\n\n const assetName = computed(\n () => name?.()?.trim() || directive?.name()?.trim() || undefined\n );\n\n const suppliedRows = computed(() => {\n const key = assetName();\n if (!key) return undefined;\n const rows = optionsSource?.()?.[key];\n return Array.isArray(rows)\n ? (rows as AssetOption[] | AssetOption[][])\n : undefined;\n });\n\n const resource = rxResource({\n // A supplied list is the answer, so the fetch never starts — asking for a\n // file that exists only in memory would 404 on every keystroke that edits it.\n params: () => (suppliedRows() ? undefined : assetName()),\n stream: ({ params }) => {\n if (!params) return of(undefined);\n return assetStore.resolve<AssetOption[] | AssetOption[][]>(\n 'options',\n params,\n true\n );\n },\n });\n\n return computed(() =>\n normalizeAssetOptions(suppliedRows() ?? resource.value())\n );\n}\n\n/** Whether a Field holds nothing yet — no scalar, an empty string or list. */\nconst isEmptyValue = (value: unknown): boolean =>\n value === undefined ||\n value === null ||\n value === '' ||\n (Array.isArray(value) && value.length === 0);\n\n/**\n * Starts a Field on its list's `default` row when it holds no value of its own\n * (m-one-ui GLOSSARY.md OptionSet). The Field's own value — its config, its form\n * data — outranks the row, so a value already held is kept.\n *\n * Each marked row is consulted once: a User who clears the pick is not handed\n * it back, and only a list that moves its mark offers the new row. A disabled\n * row is never preset — the User could not have picked it either. Must be\n * called from an injection context.\n */\nexport function presetDefaultOption(\n options: () => readonly DropdownOption<DropdownValue>[],\n current: () => unknown,\n apply: (value: DropdownValue) => void\n): void {\n let consulted: DropdownValue | undefined;\n effect(() => {\n const row = options().find((option) => option.default && !option.disabled);\n if (!row || row.value === consulted) return;\n consulted = row.value;\n untracked(() => {\n if (isEmptyValue(current())) apply(row.value);\n });\n });\n}\n"],"mappings":";;;;;AAiBA,IAAa,yBAAb,MAAa,uBAAsB;CACxB,OAAO,MAA0B,QAAS;EAAA,GAAA,YAAA,EAAA,WAAA,OAAA,+BAAA,CAAA;EAAI,OAAO;CAAU,CAAA;CAD7D,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAsB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAtB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAsB,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,MAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,UAAA;CAAA,CAAA;;AAAtB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAHlC,MAAA;EAAU,MAAA,CAAA,EACT,UAAU,aACX,CAAA;;;;;;;;;;;ACQD,SAAgB,sBACd,MAAiD;CAEjD,IAAI,CAAC,MAAM,QAAQ,OAAO,CAAA;CAI1B,QAH4B,MAAM,QAAQ,KAAK,EAAE,IAC5C,KAAyB,KAAI,IAC7B,KACE,CAAK,KAAK,YAAY;EAC3B,OAAO,OAAO,SAAS,OAAO,MAAM;EACpC,OAAO,OAAO;EACd,MAAM,OAAO;EACb,UAAU,OAAO;EACjB,GAAI,OAAO,YAAY,OAAO,EAAE,SAAS,KAAI,IAAK,CAAA;CACnD,EAAC;AACJ;AAmBA,SAAgB,aACd,MAA+B;CAE/B,MAAM,aAAa,OAAO,UAAU;CACpC,MAAM,gBAAgB,OAAO,gBAAgB,EAAE,UAAU,KAAI,CAAE;CAC/D,MAAM,YAAY,OAAO,wBAAwB,EAAE,UAAU,KAAI,CAAE;CAEnE,MAAM,YAAY,eACV,OAAM,CAAE,EAAE,KAAI,KAAM,WAAW,KAAI,CAAE,EAAE,KAAI,KAAM,QACxD,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;CAED,MAAM,eAAe,eAAc;EACjC,MAAM,MAAM,UAAS;EACrB,IAAI,CAAC,KAAK,OAAO;EACjB,MAAM,OAAO,gBAAe,CAAE,GAAG;EACjC,OAAO,MAAM,QAAQ,IAAI,IACpB,OACD;CACN,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CAEF,MAAM,WAAW,WAAW;EAG1B,cAAe,aAAY,IAAK,SAAY,UAAS;EACrD,SAAS,EAAE,aAAY;GACrB,IAAI,CAAC,QAAQ,OAAO,GAAG,MAAS;GAChC,OAAO,WAAW,QAChB,WACA,QACA,IAAI;EAER;CACD,CAAA;CAED,OAAO,eACL,sBAAsB,aAAY,KAAM,SAAS,MAAK,CAAE,CAAC;AAE7D;AAGA,MAAM,gBAAgB,UACpB,UAAU,UACV,UAAU,QACV,UAAU,MACT,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAY5C,SAAgB,oBACd,SACA,SACA,OAAqC;CAErC,IAAI;CACJ,aAAY;EACV,MAAM,MAAM,QAAO,CAAE,CAAC,MAAM,WAAW,OAAO,WAAW,CAAC,OAAO,QAAQ;EACzE,IAAI,CAAC,OAAO,IAAI,UAAU,WAAW;EACrC,YAAY,IAAI;EAChB,gBAAe;GACb,IAAI,aAAa,QAAO,CAAE,GAAG,MAAM,IAAI,KAAK;EAC9C,CAAC;CACH,CAAC;AACH"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { B as IS_DESIGN_MODE } from "./magmonium-one-size-converter-
|
|
2
|
-
import { t as LabelComponent } from "./magmonium-one-label-
|
|
3
|
-
import { t as BaseTextInputComponent } from "./magmonium-one-base-text-
|
|
4
|
-
import { t as TextOutputComponent } from "./magmonium-one-text-output-
|
|
1
|
+
import { B as IS_DESIGN_MODE } from "./magmonium-one-size-converter-BOBD8nHy.mjs";
|
|
2
|
+
import { t as LabelComponent } from "./magmonium-one-label-D_rU82nD.mjs";
|
|
3
|
+
import { t as BaseTextInputComponent } from "./magmonium-one-base-text-Di2V2ojp.mjs";
|
|
4
|
+
import { t as TextOutputComponent } from "./magmonium-one-text-output-BZU61QIF.mjs";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import { ChangeDetectionStrategy, Component, afterRenderEffect, computed, effect, inject, signal, untracked, viewChildren } from "@angular/core";
|
|
7
7
|
import { CommonModule } from "@angular/common";
|
|
@@ -258,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
258
258
|
});
|
|
259
259
|
export { OtpInputComponent };
|
|
260
260
|
|
|
261
|
-
//# sourceMappingURL=magmonium-one-otp-
|
|
261
|
+
//# sourceMappingURL=magmonium-one-otp-V2tFztLx.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magmonium-one-otp-
|
|
1
|
+
{"version":3,"file":"magmonium-one-otp-V2tFztLx.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/text/otp.ts"],"sourcesContent":["import {\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n signal,\n untracked,\n viewChildren,\n} from '@angular/core';\nimport { LabelComponent } from '../label';\nimport { TextOutputComponent } from '../../../text-output';\nimport { BaseTextInputComponent } from './base-text';\nimport { CommonModule } from '@angular/common';\nimport { OtpInput } from '../../model/input';\nimport { IS_DESIGN_MODE } from '../../../../config/tokens';\n\n@Component({\n selector: 'm-otp-input',\n template: `\n @if (otpConfig(); as otp) {\n <m-label\n [for]=\"otp.name\"\n [placeholder]=\"otp.label\"\n [params]=\"otp.params\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n />\n <div class=\"otp-container\">\n @for (item of otpArray(); track $index) {\n <input\n [id]=\"$index === 0 ? (otp.name ?? '') : ''\"\n #otpInput\n type=\"text\"\n maxlength=\"1\"\n [class.error]=\"showErrors()\"\n [disabled]=\"isDisabled()\"\n [value]=\"otpValues()[$index] || ''\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeyDown($event, $index)\"\n (paste)=\"onPaste($event)\"\n />\n }\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n `,\n styleUrl: './otp.sass',\n imports: [LabelComponent, TextOutputComponent, CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OtpInputComponent extends BaseTextInputComponent<OtpInput> {\n otpValues = signal<string[]>([]);\n otpInputs = viewChildren<ElementRef<HTMLInputElement>>('otpInput');\n protected readonly otpConfig = computed(() => this.config() as OtpInput);\n otpArray = computed(() => {\n const length = this.otpConfig()?.length || 6;\n return Array(length).fill(0);\n });\n\n // Inert on the Canvas — other inputs stay idle because they never autofocus;\n // OTP used to steal focus and look live while composing (DesignMode).\n private readonly isDesignMode = !!inject(IS_DESIGN_MODE, { optional: true });\n protected readonly isDisabled = computed(\n () => this.isDesignMode || this.disabled()\n );\n\n // BaseText answers `focused` by focusing its `#inputElement`, and an OTP has\n // none — it has a row of boxes. Without this the caret never lands on an OTP\n // field, so the form that opens on one (login's verification step) reads as\n // dead until the User clicks it.\n private hasAutofocused = false;\n\n constructor() {\n super();\n effect(() => {\n const length = this.otpConfig()?.length || 6;\n this.otpValues.set(Array(length).fill(''));\n });\n\n afterRenderEffect(() => {\n const inputs = this.otpInputs();\n if (!this.focused() || !inputs.length || this.hasAutofocused) return;\n this.hasAutofocused = true;\n untracked(() => this.focusInput(0));\n });\n }\n\n onInput = (event: Event, index: number): void => {\n if (this.isDisabled()) return;\n const input = event.target as HTMLInputElement;\n let value = input.value;\n\n value = value.replace(/[^a-zA-Z0-9]/g, '');\n\n if (value.length > 1) {\n value = value.slice(-1);\n }\n\n input.value = value.toUpperCase();\n\n const newValues = [...this.otpValues()];\n newValues[index] = value.toUpperCase();\n this.otpValues.set(newValues);\n\n const length = this.otpConfig()?.length || 6;\n if (value && index < length - 1) {\n this.focusInput(index + 1);\n }\n this.updateValue();\n };\n\n onKeyDown = (event: KeyboardEvent, index: number): void => {\n if (this.isDisabled()) return;\n const input = event.target as HTMLInputElement;\n const length = this.otpConfig()?.length || 6;\n\n const isAlphaNumeric = /^[a-zA-Z0-9]$/.test(event.key);\n const isControlKey = [\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Tab',\n ].includes(event.key);\n\n if (!isAlphaNumeric && !isControlKey) {\n event.preventDefault();\n return;\n }\n\n if (event.key === 'Backspace') {\n if (!input.value && index > 0) {\n this.focusInput(index - 1);\n }\n }\n if (event.key === 'ArrowLeft' && index > 0) {\n event.preventDefault();\n this.focusInput(index - 1);\n }\n if (event.key === 'ArrowRight' && index < length - 1) {\n event.preventDefault();\n this.focusInput(index + 1);\n }\n };\n\n onPaste = (event: ClipboardEvent): void => {\n if (this.isDisabled()) return;\n event.preventDefault();\n event.stopPropagation();\n\n const length = this.otpConfig()?.length || 6;\n const pastedData = event.clipboardData?.getData('text') || '';\n\n const alphanumeric = pastedData\n .replace(/[^a-zA-Z0-9]/g, '')\n .slice(0, length);\n\n if (alphanumeric.length > 0) {\n const newValues = Array(length).fill('');\n alphanumeric.split('').forEach((char, index) => {\n if (index < length) {\n newValues[index] = char.toUpperCase();\n }\n });\n\n this.otpValues.set(newValues);\n this.updateValue();\n\n const focusIndex = Math.min(alphanumeric.length, length - 1);\n setTimeout(() => this.focusInput(focusIndex), 0);\n }\n };\n\n private focusInput(index: number): void {\n if (this.isDisabled()) return;\n const inputs = this.otpInputs();\n if (inputs[index]) {\n inputs[index].nativeElement.focus();\n }\n }\n\n private updateValue(): void {\n const otpValue = this.otpValues().join('');\n this.setValue(otpValue);\n }\n}\n"],"mappings":";;;;;;;AA6DA,IAAa,oBAAb,MAAa,0BAA0B,uBAAgC;CACrE,YAAY,OAAiB,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,YAAY,aAA2C,YAAW,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;CAC/C,YAAY,eAAe,KAAK,OAAM,GAAe,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;CACxE,WAAW,eAAc;EACvB,MAAM,SAAS,KAAK,UAAS,CAAE,EAAE,UAAU;EAC3C,OAAO,MAAM,MAAM,CAAC,CAAC,KAAK,CAAC;CAC7B,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAIe,eAAe,CAAC,CAAC,OAAO,gBAAgB,EAAE,UAAU,KAAI,CAAE;CACxD,aAAa,eACxB,KAAK,gBAAgB,KAAK,SAAQ,GACzC,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAMO,iBAAiB;CAEzB,cAAA;EACE,MAAK;EACL,aAAY;GACV,MAAM,SAAS,KAAK,UAAS,CAAE,EAAE,UAAU;GAC3C,KAAK,UAAU,IAAI,MAAM,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;EAC3C,CAAC;EAED,wBAAuB;GACrB,MAAM,SAAS,KAAK,UAAS;GAC7B,IAAI,CAAC,KAAK,QAAO,KAAM,CAAC,OAAO,UAAU,KAAK,gBAAgB;GAC9D,KAAK,iBAAiB;GACtB,gBAAgB,KAAK,WAAW,CAAC,CAAC;EACpC,CAAC;CACH;CAEA,WAAW,OAAc,UAAuB;EAC9C,IAAI,KAAK,WAAU,GAAI;EACvB,MAAM,QAAQ,MAAM;EACpB,IAAI,QAAQ,MAAM;EAElB,QAAQ,MAAM,QAAQ,iBAAiB,EAAE;EAEzC,IAAI,MAAM,SAAS,GACjB,QAAQ,MAAM,MAAM,EAAE;EAGxB,MAAM,QAAQ,MAAM,YAAW;EAE/B,MAAM,YAAY,CAAC,GAAG,KAAK,UAAS,CAAE;EACtC,UAAU,SAAS,MAAM,YAAW;EACpC,KAAK,UAAU,IAAI,SAAS;EAE5B,MAAM,SAAS,KAAK,UAAS,CAAE,EAAE,UAAU;EAC3C,IAAI,SAAS,QAAQ,SAAS,GAC5B,KAAK,WAAW,QAAQ,CAAC;EAE3B,KAAK,YAAW;CAClB;CAEA,aAAa,OAAsB,UAAuB;EACxD,IAAI,KAAK,WAAU,GAAI;EACvB,MAAM,QAAQ,MAAM;EACpB,MAAM,SAAS,KAAK,UAAS,CAAE,EAAE,UAAU;EAE3C,MAAM,iBAAiB,gBAAgB,KAAK,MAAM,GAAG;EACrD,MAAM,eAAe;GACnB;GACA;GACA;GACA;GACA;EACD,CAAA,CAAC,SAAS,MAAM,GAAG;EAEpB,IAAI,CAAC,kBAAkB,CAAC,cAAc;GACpC,MAAM,eAAc;GACpB;EACF;EAEA,IAAI,MAAM,QAAQ,aAChB;OAAI,CAAC,MAAM,SAAS,QAAQ,GAC1B,KAAK,WAAW,QAAQ,CAAC;EAC3B;EAEF,IAAI,MAAM,QAAQ,eAAe,QAAQ,GAAG;GAC1C,MAAM,eAAc;GACpB,KAAK,WAAW,QAAQ,CAAC;EAC3B;EACA,IAAI,MAAM,QAAQ,gBAAgB,QAAQ,SAAS,GAAG;GACpD,MAAM,eAAc;GACpB,KAAK,WAAW,QAAQ,CAAC;EAC3B;CACF;CAEA,WAAW,UAA+B;EACxC,IAAI,KAAK,WAAU,GAAI;EACvB,MAAM,eAAc;EACpB,MAAM,gBAAe;EAErB,MAAM,SAAS,KAAK,UAAS,CAAE,EAAE,UAAU;EAG3C,MAAM,gBAFa,MAAM,eAAe,QAAQ,MAAM,KAAK,GAEtC,CAClB,QAAQ,iBAAiB,EAAE,CAAC,CAC5B,MAAM,GAAG,MAAM;EAElB,IAAI,aAAa,SAAS,GAAG;GAC3B,MAAM,YAAY,MAAM,MAAM,CAAC,CAAC,KAAK,EAAE;GACvC,aAAa,MAAM,EAAE,CAAC,CAAC,SAAS,MAAM,UAAS;IAC7C,IAAI,QAAQ,QACV,UAAU,SAAS,KAAK,YAAW;GAEvC,CAAC;GAED,KAAK,UAAU,IAAI,SAAS;GAC5B,KAAK,YAAW;GAEhB,MAAM,aAAa,KAAK,IAAI,aAAa,QAAQ,SAAS,CAAC;GAC3D,iBAAiB,KAAK,WAAW,UAAU,GAAG,CAAC;EACjD;CACF;CAEQ,WAAW,OAAa;EAC9B,IAAI,KAAK,WAAU,GAAI;EACvB,MAAM,SAAS,KAAK,UAAS;EAC7B,IAAI,OAAO,QACT,OAAO,MAAM,CAAC,cAAc,MAAK;CAErC;CAEQ,cAAW;EACjB,MAAM,WAAW,KAAK,UAAS,CAAE,CAAC,KAAK,EAAE;EACzC,KAAK,SAAS,QAAQ;CACxB;CAtIW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAiB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAjB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAiB,cAAA;EAAA,UAAA;EAAA,aAAA,CAAA;GAAA,cAAA;GAAA,WAAA,CAAA,UAAA;GAAA,aAAA;GAAA,UAAA;EAAA,CAAA;EAAA,iBAAA;EAAA,UAAA;EAAA,UAxClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCT,UAAA;EAAA,QAAA,CAAA,+qEAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MAES;IAAc,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAmB,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,gBAAA,SAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;GAAY;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAGhD,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EA1C7B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAa,UACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCT,SAEQ;IAAC;IAAgB;IAAqB;GAAY;GAAC,iBAC3C,wBAAwB;GAAM,QAAA,CAAA,+qEAAA;EAAA,CAAA;CAIQ,CAAA;CAAA,sBAAA,CAAA;CAAA,gBAAA,EAAA,WAAA,CAAA;EAAA,MAAA,GAAA;EAAA,MAAA,CAAA,YAAU,EAAA,UAAA,KAAA,CAAA;CAAA,CAAA,EAAA;AAAA,CAAA"}
|
package/fesm2022/{magmonium-one-password-BjqYmT1s.mjs → magmonium-one-password-IdllPMUw.mjs}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { c as TranslatePipe } from "./magmonium-one-size-converter-
|
|
2
|
-
import { t as LabelComponent } from "./magmonium-one-label-
|
|
3
|
-
import { t as BaseTextInputComponent } from "./magmonium-one-base-text-
|
|
4
|
-
import { t as ButtonComponent } from "./magmonium-one-button-
|
|
5
|
-
import { t as TextOutputComponent } from "./magmonium-one-text-output-
|
|
1
|
+
import { c as TranslatePipe } from "./magmonium-one-size-converter-BOBD8nHy.mjs";
|
|
2
|
+
import { t as LabelComponent } from "./magmonium-one-label-D_rU82nD.mjs";
|
|
3
|
+
import { t as BaseTextInputComponent } from "./magmonium-one-base-text-Di2V2ojp.mjs";
|
|
4
|
+
import { t as ButtonComponent } from "./magmonium-one-button-DZ4wCJgb.mjs";
|
|
5
|
+
import { t as TextOutputComponent } from "./magmonium-one-text-output-BZU61QIF.mjs";
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import { ChangeDetectionStrategy, Component, computed, signal } from "@angular/core";
|
|
8
8
|
var PasswordInputComponent = class PasswordInputComponent extends BaseTextInputComponent {
|
|
@@ -214,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
214
214
|
});
|
|
215
215
|
export { PasswordInputComponent };
|
|
216
216
|
|
|
217
|
-
//# sourceMappingURL=magmonium-one-password-
|
|
217
|
+
//# sourceMappingURL=magmonium-one-password-IdllPMUw.mjs.map
|
package/fesm2022/{magmonium-one-password-BjqYmT1s.mjs.map → magmonium-one-password-IdllPMUw.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magmonium-one-password-
|
|
1
|
+
{"version":3,"file":"magmonium-one-password-IdllPMUw.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/text/password.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n signal,\n} from '@angular/core';\nimport { LabelComponent } from '../label';\nimport { TextOutputComponent } from '../../../text-output';\nimport { BaseTextInputComponent } from './base-text';\nimport { ButtonComponent } from '../../../button/ui/button';\nimport { TranslatePipe } from '../../../../pipe';\n\n@Component({\n selector: 'm-password-input',\n template: `\n @if (config(); as text) {\n <m-label\n [for]=\"text.name\"\n [placeholder]=\"text.label\"\n [params]=\"text.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n <div class=\"input-wrapper\">\n <input\n [id]=\"text.name ?? ''\"\n [attr.data-testid]=\"text.testid ?? (text.name ? text.name + '-input' : null)\"\n [value]=\"value()\"\n #inputElement\n [class.error]=\"showErrors()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"(text.placeholder ?? '') | translate: text.params\"\n (input)=\"onInput($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false); touched.set(true)\"\n [type]=\"type()\"\n />\n <m-one-button\n type=\"button\"\n [disabled]=\"disabled()\"\n [name]=\"button()\"\n [color]=\"iconColor()\"\n (clicked)=\"toggleType()\"\n />\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n `,\n imports: [LabelComponent, TextOutputComponent, ButtonComponent, TranslatePipe],\n styleUrl: './password.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PasswordInputComponent extends BaseTextInputComponent {\n isPassword = signal<boolean>(true);\n type = computed(() => (this.isPassword() ? 'password' : 'text'));\n button = computed(() => (!this.isPassword() ? 'eye' : 'eye_close'));\n\n protected toggleType() {\n this.isPassword.update((now) => !now);\n }\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.setValue(target?.value ?? '');\n }\n}\n"],"mappings":";;;;;;;AA4DA,IAAa,yBAAb,MAAa,+BAA+B,uBAAsB;CAChE,aAAa,OAAgB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAClC,OAAO,eAAgB,KAAK,WAAU,IAAK,aAAa,QAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAChE,SAAS,eAAgB,CAAC,KAAK,WAAU,IAAK,QAAQ,aAAa,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAEzD,aAAU;EAClB,KAAK,WAAW,QAAQ,QAAQ,CAAC,GAAG;CACtC;CAEU,QAAQ,OAAY;EAC5B,MAAM,SAAS,MAAM;EACrB,KAAK,SAAS,QAAQ,SAAS,EAAE;CACnC;CAZW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAsB,MAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAtB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAsB,cAAA;EAAA,UAAA;EAAA,iBAAA;EAAA,UAAA;EAAA,UA9CvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCT,UAAA;EAAA,QAAA,CAAA,s8HAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MACS;IAAc,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAmB,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,gBAAA,SAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAe,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,gBAAA,SAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAa,MAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAIlE,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAhDlC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAkB,UAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCT,SACQ;IAAC;IAAgB;IAAqB;IAAiB;GAAa;GAAC,iBAE7D,wBAAwB;GAAM,QAAA,CAAA,s8HAAA;EAAA,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./magmonium-one-rolldown-runtime-DpJrqANO.mjs";
|
|
2
|
-
import { t as LabelComponent } from "./magmonium-one-label-
|
|
3
|
-
import { t as BaseCheckboxInputComponent } from "./magmonium-one-base-checkbox-
|
|
2
|
+
import { t as LabelComponent } from "./magmonium-one-label-D_rU82nD.mjs";
|
|
3
|
+
import { t as BaseCheckboxInputComponent } from "./magmonium-one-base-checkbox-CIxAiA4Q.mjs";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import { ChangeDetectionStrategy, Component, computed } from "@angular/core";
|
|
6
6
|
var radio_exports = /* @__PURE__ */ __exportAll({ RadioInputComponent: () => RadioInputComponent });
|
|
@@ -108,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
108
108
|
});
|
|
109
109
|
export { radio_exports as n, RadioInputComponent as t };
|
|
110
110
|
|
|
111
|
-
//# sourceMappingURL=magmonium-one-radio-
|
|
111
|
+
//# sourceMappingURL=magmonium-one-radio-BAL3-3j5.mjs.map
|
package/fesm2022/{magmonium-one-radio-C2wOB_Nb.mjs.map → magmonium-one-radio-BAL3-3j5.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magmonium-one-radio-
|
|
1
|
+
{"version":3,"file":"magmonium-one-radio-BAL3-3j5.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/checkbox/radio.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { BaseCheckboxInputComponent } from './base-checkbox';\nimport { LabelComponent } from '../label';\nimport { RadioInput } from '../../model/input';\n\n@Component({\n selector: 'm-radio',\n template: `\n @if (radioConfig(); as radio) {\n <div class=\"radio\">\n <input\n [checked]=\"checked()\"\n #inputElement\n [class.error]=\"showErrors()\"\n [disabled]=\"disabled()\"\n (change)=\"onChange($event)\"\n type=\"radio\"\n [name]=\"radio.name\"\n [id]=\"radio.id\"\n />\n <m-label\n [for]=\"radio.id\"\n [placeholder]=\"radio.label\"\n [params]=\"radio.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n </div>\n }\n `,\n styleUrl: './checkbox.sass',\n imports: [LabelComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioInputComponent extends BaseCheckboxInputComponent {\n protected readonly radioConfig = computed(() => this.config() as RadioInput);\n\n protected onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.setValue(target?.checked ?? false);\n }\n}\n"],"mappings":";;;;;;AAkCA,IAAa,sBAAb,MAAa,4BAA4B,2BAA0B;CAC9C,cAAc,eAAe,KAAK,OAAM,GAAiB,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAElE,SAAS,OAAY;EAC7B,MAAM,SAAS,MAAM;EACrB,KAAK,SAAS,QAAQ,WAAW,KAAK;CACxC;CANW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAmB,MAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAnB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAmB,cAAA;EAAA,UAAA;EAAA,iBAAA;EAAA,UAAA;EAAA,UA3BpB;;;;;;;;;;;;;;;;;;;;;;;EAsBT,UAAA;EAAA,QAAA,CAAA,oljBAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAES;GAAc,UAAA;GAAA,QAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;GAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAGb,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmB,YAAA,CAAA;EA7B/B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAS,UACT;;;;;;;;;;;;;;;;;;;;;;;GAsBT,SAEQ,CAAC,cAAc;GAAC,iBACR,wBAAwB;GAAM,QAAA,CAAA,oljBAAA;EAAA,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./magmonium-one-rolldown-runtime-DpJrqANO.mjs";
|
|
2
|
-
import { t as LabelComponent } from "./magmonium-one-label-
|
|
3
|
-
import { t as BaseTextInputComponent } from "./magmonium-one-base-text-
|
|
4
|
-
import { p as DraggableDirective } from "./magmonium-one-directives-
|
|
2
|
+
import { t as LabelComponent } from "./magmonium-one-label-D_rU82nD.mjs";
|
|
3
|
+
import { t as BaseTextInputComponent } from "./magmonium-one-base-text-Di2V2ojp.mjs";
|
|
4
|
+
import { p as DraggableDirective } from "./magmonium-one-directives-B93p5bAL.mjs";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import { ChangeDetectionStrategy, Component, HostListener, computed, effect, linkedSignal, signal, viewChild } from "@angular/core";
|
|
7
7
|
var range_exports = /* @__PURE__ */ __exportAll({ RangeInputComponent: () => RangeInputComponent });
|
|
@@ -213,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
213
213
|
});
|
|
214
214
|
export { range_exports as n, RangeInputComponent as t };
|
|
215
215
|
|
|
216
|
-
//# sourceMappingURL=magmonium-one-range-
|
|
216
|
+
//# sourceMappingURL=magmonium-one-range-Cf7yUnhN.mjs.map
|
package/fesm2022/{magmonium-one-range-rgDe4O8u.mjs.map → magmonium-one-range-Cf7yUnhN.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magmonium-one-range-
|
|
1
|
+
{"version":3,"file":"magmonium-one-range-Cf7yUnhN.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/range/range.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n HostListener,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { BaseTextInputComponent } from '../text/base-text';\nimport { DraggableDirective, Draggable } from '../../../../directives';\nimport { LabelComponent } from '../label';\nimport { RangeInput } from '../../model/input';\nimport { Direction } from '../../../../type';\n\n@Component({\n selector: 'm-range',\n imports: [DraggableDirective, LabelComponent],\n template: `\n @if (config(); as range) {\n <div class=\"m-range\">\n <m-label\n class=\"m-range__label\"\n [placeholder]=\"range.label\"\n [params]=\"range.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n <div class=\"m-range__control\">\n <div class=\"m-range__track\" #track>\n <div\n class=\"m-range__fill\"\n [style.width.px]=\"thumbDraggable().position.x\"\n ></div>\n <div\n class=\"m-range__thumb\"\n [(mDraggable)]=\"thumbDraggable\"\n [min]=\"{ x: 0, y: _TRACK_HALF_H }\"\n [max]=\"{ x: _trackWidth(), y: _TRACK_HALF_H }\"\n ></div>\n </div>\n <span class=\"m-range__value\" [class.hidden]=\"_displayValue() === 0\">{{ _displayValue() !== 0 ? _displayValue() : '' }}</span>\n </div>\n </div>\n }\n `,\n styleUrl: './range.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangeInputComponent extends BaseTextInputComponent<RangeInput> {\n private readonly _track = viewChild<ElementRef<HTMLDivElement>>('track');\n protected readonly _trackWidth = signal(0);\n protected readonly _TRACK_HALF_H = 3;\n\n /**\n * Measured live rather than once. The track shares its row with the value\n * readout and opens inside panels that animate in, and a width read mid\n * animation is the scaled one — `getBoundingClientRect` counts transforms\n * where a ResizeObserver's box does not. A stale width is a thumb that stops\n * short of the track's end or, before the bounds became inputs on the\n * Draggable, ran clean past it.\n */\n private readonly _measure = effect((onCleanup) => {\n const track = this._track();\n if (!track) return;\n\n const el = track.nativeElement;\n this._trackWidth.set(el.getBoundingClientRect().width);\n\n // Absent under jsdom, where the window resize below is the only signal.\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(([entry]) =>\n this._trackWidth.set(entry.contentRect.width)\n );\n observer.observe(el);\n onCleanup(() => observer.disconnect());\n });\n\n thumbDraggable = linkedSignal({\n source: () => ({\n val: this.value(),\n tw: this._trackWidth(),\n cfg: this.config(),\n }),\n computation: ({\n val,\n tw,\n cfg,\n }: {\n val: string;\n tw: number;\n cfg: unknown;\n }): Draggable => {\n const rangeCfg = cfg as RangeInput | undefined;\n const min = rangeCfg?.min ?? 0;\n const max = rangeCfg?.max ?? 100;\n const numVal = Number(val) || min;\n const x = tw > 0 ? (tw * (numVal - min)) / (max - min) : 0;\n return {\n direction: 'x' as Direction,\n position: { x, y: this._TRACK_HALF_H },\n };\n },\n });\n\n readonly _displayValue = computed(() => {\n const cfg = this.config() as RangeInput | undefined;\n const min = cfg?.min ?? 0;\n const max = cfg?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return Number(this.value()) || min;\n const x = this.thumbDraggable().position.x ?? 0;\n return Math.round(min + ((max - min) * x) / tw);\n });\n\n constructor() {\n super();\n effect(() => {\n const pos = this.thumbDraggable().position;\n const cfg = this.config() as RangeInput | undefined;\n const min = cfg?.min ?? 0;\n const max = cfg?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return;\n const numVal = Number(this.value()) || min;\n const expectedX = tw > 0 ? (tw * (numVal - min)) / (max - min) : 0;\n if (pos.x !== expectedX) {\n const val = Math.round(min + ((max - min) * (pos.x ?? 0)) / tw);\n this.setValue(String(val));\n }\n });\n }\n\n @HostListener('window:resize')\n protected _onResize(): void {\n const track = this._track();\n if (track) {\n this._trackWidth.set(track.nativeElement.getBoundingClientRect().width);\n }\n }\n}\n"],"mappings":"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"}
|
package/fesm2022/{magmonium-one-selector-DeRIUUBA.mjs → magmonium-one-selector-DAEI_0JX.mjs}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { G as MODAL_STORE_REF } from "./magmonium-one-size-converter-
|
|
1
|
+
import { G as MODAL_STORE_REF } from "./magmonium-one-size-converter-BOBD8nHy.mjs";
|
|
2
2
|
import "./magmonium-one-file.service-Bo06pU3_.mjs";
|
|
3
|
-
import { m as ThemeStore } from "./magmonium-one-color-utl-
|
|
4
|
-
import "./magmonium-one-theme-
|
|
3
|
+
import { m as ThemeStore } from "./magmonium-one-color-utl-DI5p24iQ.mjs";
|
|
4
|
+
import "./magmonium-one-theme-DYvNIWmo.mjs";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import { ApplicationRef, DOCUMENT, DestroyRef, Directive, ElementRef, EnvironmentInjector, HostListener, Injectable, RendererFactory2, computed, createComponent, inject, input, linkedSignal, output, signal } from "@angular/core";
|
|
7
7
|
import { Observable } from "rxjs";
|
|
@@ -1062,4 +1062,4 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1062
1062
|
});
|
|
1063
1063
|
export { OverlayService as a, DeviceService as c, OverlayRef as i, Direction as n, ScrollService as o, ThemeService as r, DomService as s, SelectorDirective as t };
|
|
1064
1064
|
|
|
1065
|
-
//# sourceMappingURL=magmonium-one-selector-
|
|
1065
|
+
//# sourceMappingURL=magmonium-one-selector-DAEI_0JX.mjs.map
|