@muxima-ui/core 1.5.0 → 2.0.1
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/README.md +45 -16
- package/fesm2022/muxima-ui-core-color-picker.mjs +3 -3
- package/fesm2022/muxima-ui-core-color-picker.mjs.map +1 -1
- package/fesm2022/muxima-ui-core-date-picker.mjs +10 -5
- package/fesm2022/muxima-ui-core-date-picker.mjs.map +1 -1
- package/fesm2022/muxima-ui-core-file-upload.mjs +2 -2
- package/fesm2022/muxima-ui-core-file-upload.mjs.map +1 -1
- package/fesm2022/muxima-ui-core-form-field.mjs +2 -2
- package/fesm2022/muxima-ui-core-form-field.mjs.map +1 -1
- package/fesm2022/muxima-ui-core-i18n.mjs +1 -1
- package/fesm2022/muxima-ui-core-i18n.mjs.map +1 -1
- package/fesm2022/muxima-ui-core-notification-center.mjs +3 -3
- package/fesm2022/muxima-ui-core-notification-center.mjs.map +1 -1
- package/fesm2022/muxima-ui-core-slider.mjs +2 -2
- package/fesm2022/muxima-ui-core-slider.mjs.map +1 -1
- package/fesm2022/muxima-ui-core-table.mjs +2 -2
- package/fesm2022/muxima-ui-core-table.mjs.map +1 -1
- package/fesm2022/muxima-ui-core-tour.mjs +3 -8
- package/fesm2022/muxima-ui-core-tour.mjs.map +1 -1
- package/fesm2022/muxima-ui-core.mjs +1 -1
- package/fesm2022/muxima-ui-core.mjs.map +1 -1
- package/package.json +1 -1
- package/types/muxima-ui-core-color-picker.d.ts +1 -1
- package/types/muxima-ui-core-data-grid.d.ts +1 -1
- package/types/muxima-ui-core-date-picker.d.ts +6 -2
- package/types/muxima-ui-core-file-upload.d.ts +1 -1
- package/types/muxima-ui-core-form-field.d.ts +2 -2
- package/types/muxima-ui-core-i18n.d.ts +1 -1
- package/types/muxima-ui-core-notification-center.d.ts +1 -1
- package/types/muxima-ui-core-slider.d.ts +2 -2
- package/types/muxima-ui-core-table.d.ts +1 -1
- package/types/muxima-ui-core-tour.d.ts +1 -6
- package/types/muxima-ui-core.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxima-ui-core-form-field.mjs","sources":["../../../projects/core/form-field/form-control.ts","../../../projects/core/form-field/form-field.ts","../../../projects/core/form-field/native-control.ts","../../../projects/core/form-field/input.ts","../../../projects/core/form-field/choice.ts","../../../projects/core/form-field/input-group.ts","../../../projects/core/form-field/muxima-ui-core-form-field.ts"],"sourcesContent":["import { InjectionToken, Signal } from '@angular/core';\n\n/**\n * Contrato que um controlo (MxInput, MxSelect) cumpre para poder viver dentro de\n * um `<mx-form-field>`. O campo usa-o para ligar o label, as mensagens e o estado de erro.\n */\nexport interface MxFormFieldControl {\n /** id do elemento focável, usado pelo `for` do label. */\n readonly controlId: Signal<string>;\n /** true quando o controlo é inválido e o utilizador já interagiu com ele. */\n errorState(): boolean;\n /** true quando o controlo é obrigatório. */\n isRequired(): boolean;\n}\n\nexport const MX_FORM_FIELD_CONTROL = new InjectionToken<MxFormFieldControl>('MX_FORM_FIELD_CONTROL');\n\nlet nextId = 0;\n/** Gera ids estáveis e únicos para ligar elementos por aria-*. */\nexport function mxUniqueId(prefix: string): string {\n return `${prefix}-${nextId++}`;\n}\n\n/** Normaliza texto para pesquisa: sem acentos e em minúsculas (\"Huíla\" → \"huila\"). */\nexport function mxNormalize(text: string): string {\n return text\n .normalize('NFD')\n .replace(/[̀-ͯ]/g, '')\n .toLowerCase();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ViewEncapsulation,\n computed,\n contentChild,\n contentChildren,\n inject,\n input,\n} from '@angular/core';\nimport { MX_FORM_FIELD_CONTROL, mxUniqueId } from './form-control';\n\n/** Texto de ajuda por baixo do controlo. */\n@Directive({\n selector: 'mx-hint, [mxHint]',\n host: {\n class: 'mx-hint',\n '[id]': 'id()',\n },\n})\nexport class MxHint {\n readonly id = input(mxUniqueId('mx-hint'));\n}\n\n/**\n * Mensagem de erro. Só aparece quando o controlo é inválido e o utilizador\n * já lhe tocou, e é anunciada pelos leitores de ecrã.\n */\n@Directive({\n selector: 'mx-error, [mxError]',\n host: {\n class: 'mx-error',\n role: 'alert',\n '[id]': 'id()',\n '[attr.hidden]': 'field?.showsError() ? null : \"\"',\n },\n})\nexport class MxError {\n readonly id = input(mxUniqueId('mx-error'));\n protected readonly field = inject(MxFormField, { optional: true });\n}\n\n/** Label ligado automaticamente ao controlo do campo. */\n@Directive({\n selector: 'label[mxLabel]',\n host: {\n class: 'mx-label',\n '[id]': 'id()',\n '[attr.for]': 'field?.controlId() ?? null',\n '[attr.data-required]': 'field?.isRequired() ? \"\" : null',\n },\n})\nexport class MxLabel {\n readonly id = input(mxUniqueId('mx-label'));\n protected readonly field = inject(MxFormField, { optional: true });\n}\n\n/**\n * Agrupa label, controlo, ajuda e erro, e liga-os entre si com\n * `for`, `aria-describedby` e `aria-invalid`.\n *\n * ```html\n * <mx-form-field>\n * <label mxLabel>Email</label>\n * <input mxInput type=\"email\" [formControl]=\"email\" required />\n * <mx-hint>Enviamos o recibo para este endereço.</mx-hint>\n * <mx-error>Introduz um email válido.</mx-error>\n * </mx-form-field>\n * ```\n */\n@Component({\n selector: 'mx-form-field',\n exportAs: 'mxFormField',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'mx-form-field' },\n})\nexport class MxFormField {\n private readonly control = contentChild(MX_FORM_FIELD_CONTROL);\n private readonly hints = contentChildren(MxHint);\n private readonly errors = contentChildren(MxError);\n private readonly label = contentChild(MxLabel);\n\n /** id do label, para controlos que precisam de aria-labelledby (ex.: a lista do Select). */\n readonly labelId = computed(() => this.label()?.id() ?? null);\n\n readonly controlId = computed(() => this.control()?.controlId() ?? null);\n\n showsError(): boolean {\n return this.control()?.errorState() ?? false;\n }\n\n isRequired(): boolean {\n return this.control()?.isRequired() ?? false;\n }\n\n /** ids que o controlo deve anunciar em aria-describedby. */\n describedBy(): string | null {\n const ids = this.hints().map((h) => h.id());\n if (this.showsError()) ids.push(...this.errors().map((e) => e.id()));\n return ids.length ? ids.join(' ') : null;\n }\n}\n","import { Directive, ElementRef, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\nimport { MxFormFieldControl, mxUniqueId } from './form-control';\nimport { MxFormField } from './form-field';\n\n/**\n * Base das directivas aplicadas a controlos nativos (input, textarea).\n * Trata do id, do estado de erro ligado ao Reactive Forms, de aria-invalid,\n * aria-required e aria-describedby, para que todos os campos se comportem igual.\n */\n@Directive({\n host: {\n '[id]': 'controlId()',\n '[attr.aria-invalid]': 'errorState() ? \"true\" : null',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-required]': 'isRequired() && !nativeRequiredSupported ? \"true\" : null',\n },\n})\nexport abstract class MxNativeControl implements MxFormFieldControl {\n /** id do elemento. Por omissão é gerado automaticamente. */\n readonly id = input<string | undefined>(undefined);\n /** Força o estado de erro, para validações feitas fora dos formulários Angular. */\n readonly invalid = input(false, { transform: booleanAttribute });\n /** ids extra para aria-describedby, além da ajuda e do erro do campo. */\n readonly ariaDescribedBy = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n\n private readonly generatedId = mxUniqueId('mx-control');\n readonly controlId = computed(() => this.id() ?? this.generatedId);\n\n protected readonly ngControl = inject(NgControl, { self: true, optional: true });\n protected readonly field = inject(MxFormField, { optional: true });\n protected readonly element = inject<ElementRef<HTMLInputElement | HTMLTextAreaElement>>(ElementRef).nativeElement;\n /** Com o atributo required nativo o leitor de ecrã já anuncia \"obrigatório\". */\n protected get nativeRequiredSupported(): boolean {\n return this.element.required;\n }\n\n errorState(): boolean {\n if (this.invalid()) return true;\n const c = this.ngControl;\n return !!c && !!c.invalid && !!(c.touched || c.dirty);\n }\n\n isRequired(): boolean {\n return this.element.required || !!this.ngControl?.control?.hasValidator?.(Validators.required);\n }\n\n protected describedBy(): string | null {\n const ids = [this.ariaDescribedBy(), this.field?.describedBy()].filter(Boolean);\n return ids.length ? ids.join(' ') : null;\n }\n}\n","import { Directive, booleanAttribute, input } from '@angular/core';\nimport { MX_FORM_FIELD_CONTROL } from './form-control';\nimport { MxNativeControl } from './native-control';\n\n/**\n * Campo de texto sobre o `<input>` ou `<textarea>` nativo.\n * Funciona com `ngModel`, `formControl` e `formControlName` sem configuração.\n *\n * ```html\n * <input mxInput type=\"email\" formControlName=\"email\" />\n * <textarea mxInput autosize rows=\"3\"></textarea>\n * ```\n */\n@Directive({\n selector: 'input[mxInput], textarea[mxInput]',\n exportAs: 'mxInput',\n providers: [{ provide: MX_FORM_FIELD_CONTROL, useExisting: MxInput }],\n host: {\n class: 'mx-input',\n '[attr.data-size]': 'size() === \"md\" ? null : size()',\n '[attr.data-autosize]': 'autosize() ? \"\" : null',\n },\n})\nexport class MxInput extends MxNativeControl {\n /** Altura: sm 32 px, md 36 px, lg 40 px. */\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n /** Só em textarea: a altura acompanha o texto (até max-height). */\n readonly autosize = input(false, { transform: booleanAttribute });\n}\n","import { Directive, booleanAttribute, input } from '@angular/core';\n\n/**\n * Label que envolve uma caixa de verificação, um botão de opção ou um interruptor\n * com o seu texto. Clicar no texto activa o controlo, sem ids.\n *\n * ```html\n * <label mxChoice><input type=\"checkbox\" mxCheckbox /> Aceito os termos</label>\n * ```\n */\n@Directive({\n selector: 'label[mxChoice]',\n host: { class: 'mx-choice', '[attr.data-card]': 'card() ? \"\" : null' },\n})\nexport class MxChoice {\n /** Mostra a opção como um cartão clicável, com borda Kwanza quando escolhida. */\n readonly card = input(false, { transform: booleanAttribute });\n}\n\n/** Texto secundário de uma opção, por baixo do título. */\n@Directive({ selector: '[mxChoiceDescription]', host: { class: 'mx-choice-description' } })\nexport class MxChoiceDescription {}\n\n/**\n * Grupo de controlos com título, sobre o `<fieldset>` e `<legend>` nativos.\n * O leitor de ecrã anuncia o título ao entrar no grupo.\n *\n * ```html\n * <fieldset mxFieldset>\n * <legend>Forma de pagamento</legend>\n * <label mxChoice><input type=\"radio\" mxRadio name=\"pag\" value=\"ref\" /> Referência</label>\n * </fieldset>\n * ```\n */\n@Directive({\n selector: 'fieldset[mxFieldset]',\n host: { class: 'mx-fieldset', '[attr.data-orientation]': 'orientation()' },\n})\nexport class MxFieldset {\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Junta um campo com texto ou botões antes e depois (prefixo e sufixo).\n *\n * ```html\n * <div mxInputGroup>\n * <span mxInputAddon>Kz</span>\n * <input mxInput inputmode=\"decimal\" aria-label=\"Valor\" />\n * <span mxInputAddon>,00</span>\n * </div>\n * ```\n *\n * O prefixo e o sufixo são só visuais: inclui a unidade no label (ex.: \"Valor em Kz\").\n */\n@Directive({ selector: '[mxInputGroup]', host: { class: 'mx-input-group' } })\nexport class MxInputGroup {}\n\n/** Texto, ícone ou botão colado ao campo dentro de um `[mxInputGroup]`. */\n@Directive({ selector: '[mxInputAddon]', host: { class: 'mx-input-addon' } })\nexport class MxInputAddon {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"muxima-ui-core-form-field.mjs","sources":["../../../projects/core/form-field/form-control.ts","../../../projects/core/form-field/form-field.ts","../../../projects/core/form-field/native-control.ts","../../../projects/core/form-field/input.ts","../../../projects/core/form-field/choice.ts","../../../projects/core/form-field/input-group.ts","../../../projects/core/form-field/muxima-ui-core-form-field.ts"],"sourcesContent":["import { InjectionToken, Signal } from '@angular/core';\n\n/**\n * Contrato que um controlo (MxInput, MxSelect) cumpre para poder viver dentro de\n * um `<mx-form-field>`. O campo usa-o para ligar o label, as mensagens e o estado de erro.\n */\nexport interface MxFormFieldControl {\n /** id do elemento focável, usado pelo `for` do label. */\n readonly controlId: Signal<string>;\n /** true quando o controlo é inválido e o utilizador já interagiu com ele. */\n errorState(): boolean;\n /** true quando o controlo é obrigatório. */\n isRequired(): boolean;\n}\n\nexport const MX_FORM_FIELD_CONTROL = new InjectionToken<MxFormFieldControl>('MX_FORM_FIELD_CONTROL');\n\nlet nextId = 0;\n/** Gera ids estáveis e únicos para ligar elementos por aria-*. */\nexport function mxUniqueId(prefix: string): string {\n return `${prefix}-${nextId++}`;\n}\n\n/** Normaliza texto para pesquisa: sem acentos e em minúsculas (\"Huíla\" → \"huila\"). */\nexport function mxNormalize(text: string): string {\n return text\n .normalize('NFD')\n .replace(/[̀-ͯ]/g, '')\n .toLowerCase();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ViewEncapsulation,\n computed,\n contentChild,\n contentChildren,\n inject,\n input,\n} from '@angular/core';\nimport { MX_FORM_FIELD_CONTROL, mxUniqueId } from './form-control';\n\n/** Texto de ajuda por baixo do controlo. */\n@Directive({\n selector: 'mx-hint, [mxHint]',\n host: {\n class: 'mx-hint',\n '[id]': 'id()',\n },\n})\nexport class MxHint {\n readonly id = input(mxUniqueId('mx-hint'));\n}\n\n/**\n * Mensagem de erro. Só aparece quando o controlo é inválido e o utilizador\n * já lhe tocou, e é anunciada pelos leitores de ecrã.\n */\n@Directive({\n selector: 'mx-error, [mxError]',\n host: {\n class: 'mx-error',\n role: 'alert',\n '[id]': 'id()',\n '[attr.hidden]': 'field?.showsError() ? null : \"\"',\n },\n})\nexport class MxError {\n readonly id = input(mxUniqueId('mx-error'));\n protected readonly field = inject(MxFormField, { optional: true });\n}\n\n/** Label ligado automaticamente ao controlo do campo. */\n@Directive({\n selector: 'label[mxLabel]',\n host: {\n class: 'mx-label',\n '[id]': 'id()',\n '[attr.for]': 'field?.controlId() ?? null',\n '[attr.data-required]': 'field?.isRequired() ? \"\" : null',\n },\n})\nexport class MxLabel {\n readonly id = input(mxUniqueId('mx-label'));\n protected readonly field = inject(MxFormField, { optional: true });\n}\n\n/**\n * Agrupa label, controlo, ajuda e erro, e liga-os entre si com\n * `for`, `aria-describedby` e `aria-invalid`.\n *\n * ```html\n * <mx-form-field>\n * <label mxLabel>Email</label>\n * <input mxInput type=\"email\" [formControl]=\"email\" required />\n * <mx-hint>Enviamos o recibo para este endereço.</mx-hint>\n * <mx-error>Introduz um email válido.</mx-error>\n * </mx-form-field>\n * ```\n */\n@Component({\n selector: 'mx-form-field',\n exportAs: 'mxFormField',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'mx-form-field' },\n})\nexport class MxFormField {\n private readonly control = contentChild(MX_FORM_FIELD_CONTROL);\n private readonly hints = contentChildren(MxHint);\n private readonly errors = contentChildren(MxError);\n private readonly label = contentChild(MxLabel);\n\n /** id do label, para controlos que precisam de aria-labelledby (ex.: a lista do Select). */\n readonly labelId = computed(() => this.label()?.id() ?? null);\n\n readonly controlId = computed(() => this.control()?.controlId() ?? null);\n\n showsError(): boolean {\n return this.control()?.errorState() ?? false;\n }\n\n isRequired(): boolean {\n return this.control()?.isRequired() ?? false;\n }\n\n /** ids que o controlo deve anunciar em aria-describedby. */\n describedBy(): string | null {\n const ids = this.hints().map((h) => h.id());\n if (this.showsError()) ids.push(...this.errors().map((e) => e.id()));\n return ids.length ? ids.join(' ') : null;\n }\n}\n","import { Directive, ElementRef, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\nimport { MxFormFieldControl, mxUniqueId } from './form-control';\nimport { MxFormField } from './form-field';\n\n/**\n * Base das directivas aplicadas a controlos nativos (input, textarea).\n * Trata do id, do estado de erro ligado ao Reactive Forms, de aria-invalid,\n * aria-required e aria-describedby, para que todos os campos se comportem igual.\n */\n@Directive({\n host: {\n '[id]': 'controlId()',\n '[attr.aria-invalid]': 'errorState() ? \"true\" : null',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-required]': 'isRequired() && !nativeRequiredSupported ? \"true\" : null',\n },\n})\nexport abstract class MxNativeControl implements MxFormFieldControl {\n /** id do elemento. Por omissão é gerado automaticamente. */\n readonly id = input<string | undefined>(undefined);\n /** Força o estado de erro, para validações feitas fora dos formulários Angular. */\n readonly invalid = input(false, { transform: booleanAttribute });\n /** ids extra para aria-describedby, além da ajuda e do erro do campo. */\n readonly ariaDescribedBy = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n\n private readonly generatedId = mxUniqueId('mx-control');\n readonly controlId = computed(() => this.id() ?? this.generatedId);\n\n protected readonly ngControl = inject(NgControl, { self: true, optional: true });\n protected readonly field = inject(MxFormField, { optional: true });\n protected readonly element = inject<ElementRef<HTMLInputElement | HTMLTextAreaElement>>(ElementRef).nativeElement;\n /** Com o atributo required nativo o leitor de ecrã já anuncia \"obrigatório\". */\n protected get nativeRequiredSupported(): boolean {\n return this.element.required;\n }\n\n errorState(): boolean {\n if (this.invalid()) return true;\n const c = this.ngControl;\n return !!c && !!c.invalid && !!(c.touched || c.dirty);\n }\n\n isRequired(): boolean {\n return this.element.required || !!this.ngControl?.control?.hasValidator?.(Validators.required);\n }\n\n protected describedBy(): string | null {\n const ids = [this.ariaDescribedBy(), this.field?.describedBy()].filter(Boolean);\n return ids.length ? ids.join(' ') : null;\n }\n}\n","import { Directive, booleanAttribute, input } from '@angular/core';\nimport { MX_FORM_FIELD_CONTROL } from './form-control';\nimport { MxNativeControl } from './native-control';\n\n/**\n * Campo de texto sobre o `<input>` ou `<textarea>` nativo.\n * Funciona com `ngModel`, `formControl` e `formControlName` sem configuração.\n *\n * ```html\n * <input mxInput type=\"email\" formControlName=\"email\" />\n * <textarea mxInput autosize rows=\"3\"></textarea>\n * ```\n */\n@Directive({\n selector: 'input[mxInput], textarea[mxInput]',\n exportAs: 'mxInput',\n providers: [{ provide: MX_FORM_FIELD_CONTROL, useExisting: MxInput }],\n host: {\n class: 'mx-input',\n '[attr.data-size]': 'size() === \"md\" ? null : size()',\n '[attr.data-autosize]': 'autosize() ? \"\" : null',\n },\n})\nexport class MxInput extends MxNativeControl {\n /** Altura: sm 32 px, md 36 px, lg 40 px. */\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n /** Só em textarea: a altura acompanha o texto (até max-height). */\n readonly autosize = input(false, { transform: booleanAttribute });\n}\n","import { Directive, booleanAttribute, input } from '@angular/core';\n\n/**\n * Label que envolve uma caixa de verificação, um botão de opção ou um interruptor\n * com o seu texto. Clicar no texto activa o controlo, sem ids.\n *\n * ```html\n * <label mxChoice><input type=\"checkbox\" mxCheckbox /> Aceito os termos</label>\n * ```\n */\n@Directive({\n selector: 'label[mxChoice]',\n host: { class: 'mx-choice', '[attr.data-card]': 'card() ? \"\" : null' },\n})\nexport class MxChoice {\n /** Mostra a opção como um cartão clicável, com borda Kwanza quando escolhida. */\n readonly card = input(false, { transform: booleanAttribute });\n}\n\n/** Texto secundário de uma opção, por baixo do título. */\n@Directive({ selector: '[mxChoiceDescription]', host: { class: 'mx-choice-description' } })\nexport class MxChoiceDescription {}\n\n/**\n * Grupo de controlos com título, sobre o `<fieldset>` e `<legend>` nativos.\n * O leitor de ecrã anuncia o título ao entrar no grupo.\n *\n * ```html\n * <fieldset mxFieldset>\n * <legend>Forma de pagamento</legend>\n * <label mxChoice><input type=\"radio\" mxRadio name=\"pag\" value=\"ref\" /> Referência</label>\n * </fieldset>\n * ```\n */\n@Directive({\n selector: 'fieldset[mxFieldset]',\n host: { class: 'mx-fieldset', '[attr.data-orientation]': 'orientation()' },\n})\nexport class MxFieldset {\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Junta um campo com texto ou botões antes e depois (prefixo e sufixo).\n *\n * ```html\n * <div mxInputGroup>\n * <span mxInputAddon>US$</span>\n * <input mxInput inputmode=\"decimal\" aria-label=\"Valor\" />\n * <span mxInputAddon>,00</span>\n * </div>\n * ```\n *\n * O prefixo e o sufixo são só visuais: inclui a unidade no label (ex.: \"Valor em US$\").\n */\n@Directive({ selector: '[mxInputGroup]', host: { class: 'mx-input-group' } })\nexport class MxInputGroup {}\n\n/** Texto, ícone ou botão colado ao campo dentro de um `[mxInputGroup]`. */\n@Directive({ selector: '[mxInputAddon]', host: { class: 'mx-input-addon' } })\nexport class MxInputAddon {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAea,qBAAqB,GAAG,IAAI,cAAc,CAAqB,uBAAuB;AAEnG,IAAI,MAAM,GAAG,CAAC;AACd;AACM,SAAU,UAAU,CAAC,MAAc,EAAA;AACvC,IAAA,OAAO,GAAG,MAAM,CAAA,CAAA,EAAI,MAAM,EAAE,EAAE;AAChC;AAEA;AACM,SAAU,WAAW,CAAC,IAAY,EAAA;AACtC,IAAA,OAAO;SACJ,SAAS,CAAC,KAAK;AACf,SAAA,OAAO,CAAC,QAAQ,EAAE,EAAE;AACpB,SAAA,WAAW,EAAE;AAClB;;AChBA;MAQa,MAAM,CAAA;IACR,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,yEAAC;wGAD/B,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAN,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,MAAM,EAAE,MAAM;AACf,qBAAA;AACF,iBAAA;;AAKD;;;AAGG;MAUU,OAAO,CAAA;IACT,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,yEAAC;IACxB,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;wGAFvD,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,mCAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBATnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,eAAe,EAAE,iCAAiC;AACnD,qBAAA;AACF,iBAAA;;AAMD;MAUa,OAAO,CAAA;IACT,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,yEAAC;IACxB,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;wGAFvD,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,mCAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBATnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,YAAY,EAAE,4BAA4B;AAC1C,wBAAA,sBAAsB,EAAE,iCAAiC;AAC1D,qBAAA;AACF,iBAAA;;AAMD;;;;;;;;;;;;AAYG;MASU,WAAW,CAAA;AACL,IAAA,OAAO,GAAG,YAAY,CAAC,qBAAqB,8EAAC;AAC7C,IAAA,KAAK,GAAG,eAAe,CAAC,MAAM,4EAAC;AAC/B,IAAA,MAAM,GAAG,eAAe,CAAC,OAAO,6EAAC;AACjC,IAAA,KAAK,GAAG,YAAY,CAAC,OAAO,4EAAC;;AAGrC,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,8EAAC;AAEpD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,gFAAC;IAExE,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,KAAK;IAC9C;IAEA,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,KAAK;IAC9C;;IAGA,WAAW,GAAA;AACT,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpE,QAAA,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;IAC1C;wGAxBW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACkB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EACpB,MAAM,yDACL,OAAO,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACX,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATnC,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKf,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;AACjC,iBAAA;AAEyC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACpB,MAAM,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACL,OAAO,uFACX,OAAO,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC9E/C;;;;AAIG;MASmB,eAAe,CAAA;;AAE1B,IAAA,EAAE,GAAG,KAAK,CAAqB,SAAS,yEAAC;;IAEzC,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAEvD,eAAe,GAAG,KAAK,CAAqB,SAAS,uFAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;AAE7E,IAAA,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC;AAC9C,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,WAAW,gFAAC;AAE/C,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7D,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/C,IAAA,OAAO,GAAG,MAAM,CAAqD,UAAU,CAAC,CAAC,aAAa;;AAEjH,IAAA,IAAc,uBAAuB,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;IAC9B;IAEA,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,IAAI;AAC/B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS;QACxB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC;IACvD;IAEA,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC;IAChG;IAEU,WAAW,GAAA;QACnB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/E,QAAA,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;IAC1C;wGAhCoB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gCAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,4DAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,aAAa;AACrB,wBAAA,qBAAqB,EAAE,8BAA8B;AACrD,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,sBAAsB,EAAE,0DAA0D;AACnF,qBAAA;AACF,iBAAA;;;ACbD;;;;;;;;AAQG;AAWG,MAAO,OAAQ,SAAQ,eAAe,CAAA;;AAEjC,IAAA,IAAI,GAAG,KAAK,CAAqB,IAAI,2EAAC;;IAEtC,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGAJtD,OAAO,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAPP,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAO1D,OAAO,EAAA,UAAA,EAAA,CAAA;kBAVnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,QAAQ,EAAE,SAAS;oBACnB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAA,OAAS,EAAE,CAAC;AACrE,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,kBAAkB,EAAE,iCAAiC;AACrD,wBAAA,sBAAsB,EAAE,wBAAwB;AACjD,qBAAA;AACF,iBAAA;;;ACpBD;;;;;;;AAOG;MAKU,QAAQ,CAAA;;IAEV,IAAI,GAAG,KAAK,CAAC,KAAK,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGAFlD,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;oBAC3B,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE;AACvE,iBAAA;;AAMD;MAEa,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE;;AAG1F;;;;;;;;;;AAUG;MAKU,UAAU,CAAA;AACZ,IAAA,WAAW,GAAG,KAAK,CAA4B,UAAU,kFAAC;wGADxD,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,eAAe,EAAE;AAC3E,iBAAA;;;ACnCD;;;;;;;;;;;;AAYG;MAEU,YAAY,CAAA;wGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,SAAS;mBAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE;;AAG5E;MAEa,YAAY,CAAA;wGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,SAAS;mBAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE;;;ACnB5E;;AAEG;;"}
|
|
@@ -496,7 +496,7 @@ function mxBuiltInMessages(locale) {
|
|
|
496
496
|
class MxI18n {
|
|
497
497
|
config = inject(MX_I18N_CONFIG, { optional: true }) ?? {};
|
|
498
498
|
custom = signal(this.config.messages ?? {}, ...(ngDevMode ? [{ debugName: "custom" }] : /* istanbul ignore next */ []));
|
|
499
|
-
current = signal(this.config.locale ?? '
|
|
499
|
+
current = signal(this.config.locale ?? 'en', ...(ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []));
|
|
500
500
|
/** Idioma activo, tal como foi indicado ("pt", "en", "en-GB"...). */
|
|
501
501
|
locale = this.current.asReadonly();
|
|
502
502
|
/** Todos os textos do idioma activo. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxima-ui-core-i18n.mjs","sources":["../../../projects/core/i18n/messages-pt.ts","../../../projects/core/i18n/messages-en.ts","../../../projects/core/i18n/i18n.ts","../../../projects/core/i18n/muxima-ui-core-i18n.ts"],"sourcesContent":["import { MxMessages } from './messages';\n\nconst plural = (n: number, one: string, many: string) => (n === 1 ? one : many);\n\n/** Português (Angola). */\nexport const MX_MESSAGES_PT: MxMessages = {\n intlLocale: 'pt-AO',\n dateOrder: 'dmy',\n firstDayOfWeek: 1,\n\n alert: { close: 'Fechar aviso' },\n breadcrumb: { label: 'Localização' },\n calendar: {\n previousMonth: (m) => `Mês anterior, ${m}`,\n nextMonth: (m) => `Mês seguinte, ${m}`,\n rangeStart: 'início do intervalo',\n rangeEnd: 'fim do intervalo',\n rangeStartEnd: 'início e fim do intervalo',\n rangeHint: (s, e) => `Intervalo de ${s} a ${e}.`,\n rangeStartHint: (s) => `Início ${s}. Escolhe a data de fim.`,\n },\n carousel: {\n carousel: 'carrossel',\n slide: 'diapositivo',\n previous: 'Diapositivo anterior',\n next: 'Diapositivo seguinte',\n choose: 'Escolher diapositivo',\n goTo: (n) => `Diapositivo ${n}`,\n position: (n, total) => `${n} de ${total}`,\n play: 'Iniciar a rotação automática',\n pause: 'Parar a rotação automática',\n },\n chips: {\n remove: 'Remover',\n list: 'Etiquetas',\n help: 'Enter para acrescentar. Backspace no campo vazio vai para a última etiqueta.',\n added: (t) => `${t} acrescentado.`,\n removed: (t) => `${t} removido.`,\n max: (n) => `Máximo de ${n} etiquetas.`,\n duplicate: (t) => `${t} já está na lista.`,\n },\n clipboard: { copy: 'Copiar', copied: 'Copiado', failed: 'Não foi possível copiar' },\n colorPicker: {\n choose: 'Escolher cor',\n change: (name, hex) => `Mudar cor, ${name}, ${hex}`,\n area: 'Saturação e brilho',\n hue: 'Matiz',\n alpha: 'Opacidade',\n swatches: 'Cores sugeridas',\n eyeDropper: 'Escolher uma cor do ecrã',\n hex: 'Hex',\n areaValue: (s, v, name) => `Saturação ${s}%, brilho ${v}%, ${name}`,\n hueValue: (deg, name) => `${deg} graus, ${name}`,\n names: {\n black: 'preto',\n white: 'branco',\n lightGray: 'cinzento claro',\n gray: 'cinzento',\n darkGray: 'cinzento escuro',\n brown: 'castanho',\n red: 'vermelho',\n orange: 'laranja',\n yellow: 'amarelo',\n lime: 'verde-lima',\n green: 'verde',\n teal: 'azul-petróleo',\n blue: 'azul',\n purple: 'roxo',\n magenta: 'magenta',\n tone: (name, tone) => `${name} ${tone === 'dark' ? 'escuro' : 'claro'}`,\n },\n },\n combobox: { placeholder: 'Pesquisar', empty: 'Sem resultados', loading: 'A pesquisar...' },\n command: {\n placeholder: 'Pesquisar...',\n label: 'Pesquisar',\n empty: 'Nada encontrado para',\n results: (n) => `${n} ${plural(n, 'resultado', 'resultados')}`,\n },\n dataGrid: {\n label: 'Tabela de dados',\n empty: 'Sem resultados.',\n loading: 'A carregar...',\n columns: 'Colunas',\n filter: 'Filtrar',\n all: 'Todos',\n selectAll: 'Seleccionar todas as linhas',\n selectRow: 'Seleccionar',\n selection: 'Selecção',\n resizeHint: 'Alt e setas esquerda e direita mudam a largura da coluna.',\n numberFilter: (f, c) => `${f} ${c}, aceita maior que, menor que e intervalos`,\n rows: (n, count) => `${n} ${plural(count, 'linha', 'linhas')}`,\n of: (total) => ` de ${total}`,\n selected: (n, count) => `${n} ${plural(count, 'seleccionada', 'seleccionadas')}`,\n sorted: (c, d) => `Ordenado por ${c}, ${d === 'asc' ? 'ascendente' : 'descendente'}`,\n unsorted: 'Sem ordenação',\n width: (c, px) => `${c}, ${px} píxeis`,\n },\n datePicker: {\n placeholder: 'dd/mm/aaaa',\n choose: 'Escolher data',\n change: (d) => `Mudar data, ${d}`,\n },\n dateRangePicker: {\n start: 'início',\n end: 'fim',\n choose: 'Escolher intervalo',\n change: (s, e) => `Mudar intervalo, ${s} a ${e}`,\n presets: 'Atalhos',\n last7Days: 'Últimos 7 dias',\n last30Days: 'Últimos 30 dias',\n thisMonth: 'Este mês',\n lastMonth: 'Mês passado',\n },\n editor: {\n toolbar: 'Formatação',\n link: 'Endereço da ligação',\n apply: 'Aplicar',\n remove: 'Remover',\n cancel: 'Cancelar',\n characters: 'caracteres',\n tools: {\n bold: 'Negrito',\n italic: 'Itálico',\n underline: 'Sublinhado',\n strike: 'Riscado',\n code: 'Código',\n heading2: 'Título',\n heading3: 'Subtítulo',\n paragraph: 'Parágrafo',\n bulletList: 'Lista',\n orderedList: 'Lista numerada',\n blockquote: 'Citação',\n link: 'Ligação',\n undo: 'Anular',\n redo: 'Refazer',\n },\n },\n fileUpload: {\n drop: 'Arrasta os ficheiros para aqui ou',\n browse: 'escolhe no computador',\n list: 'Ficheiros escolhidos',\n remove: 'Remover',\n done: 'Enviado',\n uploading: (name) => `A enviar ${name}`,\n rejectedType: (name) => `${name}: tipo de ficheiro não aceite.`,\n rejectedSize: (name, size, max) => `${name}: tem ${size}, o máximo é ${max}.`,\n rejectedCount: (name, max) => `${name}: só podes juntar ${max} ${plural(max, 'ficheiro', 'ficheiros')}.`,\n addedOne: (name) => `${name} juntado.`,\n addedMany: (n) => `${n} ficheiros juntados.`,\n removed: (name) => `${name} removido.`,\n },\n imageCropper: {\n alt: 'Imagem a recortar',\n help: 'Setas movem a área. Alt e setas mudam o tamanho. Shift dá passos maiores.',\n zoom: 'Zoom',\n rotateLeft: 'Rodar para a esquerda',\n rotateRight: 'Rodar para a direita',\n reset: 'Repor',\n area: 'área de recorte',\n size: (w, h) => `${w} por ${h} píxeis`,\n position: (w, h, x, y) => `${w} por ${h} píxeis, a ${x} da esquerda e ${y} do topo`,\n rotated: (deg) => `Rodada ${deg} graus`,\n },\n kanban: {\n label: 'Quadro',\n empty: 'Sem cartões',\n help: 'Espaço para agarrar. Setas para mover. Espaço para largar, Esc para cancelar.',\n cards: (n, limit) => plural(n, 'cartão', 'cartões') + (limit ? `, máximo ${limit}` : ''),\n grabbed: (card) => `${card}, agarrado`,\n position: (col, p, total) => `${col}, posição ${p} de ${total}`,\n pickedUp: (card, where) => `${card} agarrado. ${where}.`,\n dropped: (card, where) => `${card} largado. ${where}.`,\n cancelled: (card, where) => `Movimento cancelado. ${card} voltou a ${where}.`,\n full: (col, limit) => `${col} está cheia, máximo ${limit}.`,\n },\n notifications: {\n title: 'Notificações',\n markAll: 'Marcar todas como lidas',\n empty: 'Sem notificações.',\n emptyUnread: 'Está tudo lido.',\n filter: 'Mostrar',\n all: 'Todas',\n unread: 'Por ler',\n unreadPrefix: 'Por ler: ',\n unreadCount: () => 'por ler',\n markRead: (t) => `Marcar como lida: ${t}`,\n remove: (t) => `Remover: ${t}`,\n removed: (t) => `${t} removida.`,\n newOne: (t) => `Nova notificação: ${t}`,\n newMany: (n) => `${n} notificações novas`,\n now: 'agora',\n bellCount: (label, n) => `${label}, ${n} por ler`,\n },\n pagination: {\n label: 'Paginação',\n rowsPerPage: 'Linhas por página',\n first: 'Primeira página',\n previous: 'Página anterior',\n previousShort: 'Anterior',\n next: 'Página seguinte',\n nextShort: 'Seguinte',\n last: 'Última página',\n page: (n) => `Página ${n}`,\n pageOf: (c, t) => `Página ${c} de ${t}`,\n range: (from, to, total) => `${from}–${to} de ${total}`,\n noResults: '0 resultados',\n },\n progress: { label: 'A carregar' },\n rangeSlider: { low: 'mínimo', high: 'máximo' },\n rating: {\n label: 'Avaliação',\n star: (n) => `${n} ${plural(n, 'estrela', 'estrelas')}`,\n summary: (v, max) => `${v} de ${max} estrelas`,\n },\n select: { placeholder: 'Seleccionar', empty: 'Sem opções', loading: 'A carregar...' },\n sidebar: { label: 'Principal', collapse: 'Recolher menu', expand: 'Expandir menu' },\n stepper: { complete: 'concluído' },\n timePicker: { placeholder: 'hh:mm', label: 'Horas' },\n toast: {\n region: 'Notificações',\n close: 'Fechar notificação',\n action: (label) => `Acção disponível: ${label}`,\n },\n tour: {\n next: 'Seguinte',\n previous: 'Anterior',\n done: 'Concluir',\n skip: 'Saltar',\n close: 'Fechar a visita guiada',\n progress: (c, t) => `Passo ${c} de ${t}`,\n },\n};\n","import { MxMessages } from './messages';\n\nconst plural = (n: number, one: string, many: string) => (n === 1 ? one : many);\n\n/** English (United States). */\nexport const MX_MESSAGES_EN: MxMessages = {\n intlLocale: 'en-US',\n dateOrder: 'mdy',\n firstDayOfWeek: 0,\n\n alert: { close: 'Dismiss alert' },\n breadcrumb: { label: 'Breadcrumb' },\n calendar: {\n previousMonth: (m) => `Previous month, ${m}`,\n nextMonth: (m) => `Next month, ${m}`,\n rangeStart: 'range start',\n rangeEnd: 'range end',\n rangeStartEnd: 'range start and end',\n rangeHint: (s, e) => `Range from ${s} to ${e}.`,\n rangeStartHint: (s) => `Start ${s}. Choose the end date.`,\n },\n carousel: {\n carousel: 'carousel',\n slide: 'slide',\n previous: 'Previous slide',\n next: 'Next slide',\n choose: 'Choose slide',\n goTo: (n) => `Slide ${n}`,\n position: (n, total) => `${n} of ${total}`,\n play: 'Start automatic rotation',\n pause: 'Stop automatic rotation',\n },\n chips: {\n remove: 'Remove',\n list: 'Tags',\n help: 'Press Enter to add. Backspace in the empty field moves to the last tag.',\n added: (t) => `${t} added.`,\n removed: (t) => `${t} removed.`,\n max: (n) => `Maximum of ${n} tags.`,\n duplicate: (t) => `${t} is already in the list.`,\n },\n clipboard: { copy: 'Copy', copied: 'Copied', failed: 'Could not copy' },\n colorPicker: {\n choose: 'Choose color',\n change: (name, hex) => `Change color, ${name}, ${hex}`,\n area: 'Saturation and brightness',\n hue: 'Hue',\n alpha: 'Opacity',\n swatches: 'Suggested colors',\n eyeDropper: 'Pick a color from the screen',\n hex: 'Hex',\n areaValue: (s, v, name) => `Saturation ${s}%, brightness ${v}%, ${name}`,\n hueValue: (deg, name) => `${deg} degrees, ${name}`,\n names: {\n black: 'black',\n white: 'white',\n lightGray: 'light gray',\n gray: 'gray',\n darkGray: 'dark gray',\n brown: 'brown',\n red: 'red',\n orange: 'orange',\n yellow: 'yellow',\n lime: 'lime',\n green: 'green',\n teal: 'teal',\n blue: 'blue',\n purple: 'purple',\n magenta: 'magenta',\n tone: (name, tone) => `${tone} ${name}`,\n },\n },\n combobox: { placeholder: 'Search', empty: 'No results', loading: 'Searching...' },\n command: {\n placeholder: 'Search...',\n label: 'Search',\n empty: 'Nothing found for',\n results: (n) => `${n} ${plural(n, 'result', 'results')}`,\n },\n dataGrid: {\n label: 'Data table',\n empty: 'No results.',\n loading: 'Loading...',\n columns: 'Columns',\n filter: 'Filter',\n all: 'All',\n selectAll: 'Select all rows',\n selectRow: 'Select',\n selection: 'Selection',\n resizeHint: 'Alt and the left and right arrows change the column width.',\n numberFilter: (f, c) => `${f} ${c}, accepts greater than, less than and ranges`,\n rows: (n, count) => `${n} ${plural(count, 'row', 'rows')}`,\n of: (total) => ` of ${total}`,\n selected: (n) => `${n} selected`,\n sorted: (c, d) => `Sorted by ${c}, ${d === 'asc' ? 'ascending' : 'descending'}`,\n unsorted: 'Not sorted',\n width: (c, px) => `${c}, ${px} pixels`,\n },\n datePicker: {\n placeholder: 'mm/dd/yyyy',\n choose: 'Choose date',\n change: (d) => `Change date, ${d}`,\n },\n dateRangePicker: {\n start: 'start',\n end: 'end',\n choose: 'Choose range',\n change: (s, e) => `Change range, ${s} to ${e}`,\n presets: 'Shortcuts',\n last7Days: 'Last 7 days',\n last30Days: 'Last 30 days',\n thisMonth: 'This month',\n lastMonth: 'Last month',\n },\n editor: {\n toolbar: 'Formatting',\n link: 'Link address',\n apply: 'Apply',\n remove: 'Remove',\n cancel: 'Cancel',\n characters: 'characters',\n tools: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strike: 'Strikethrough',\n code: 'Code',\n heading2: 'Heading',\n heading3: 'Subheading',\n paragraph: 'Paragraph',\n bulletList: 'Bulleted list',\n orderedList: 'Numbered list',\n blockquote: 'Quote',\n link: 'Link',\n undo: 'Undo',\n redo: 'Redo',\n },\n },\n fileUpload: {\n drop: 'Drag files here or',\n browse: 'browse your computer',\n list: 'Selected files',\n remove: 'Remove',\n done: 'Uploaded',\n uploading: (name) => `Uploading ${name}`,\n rejectedType: (name) => `${name}: file type not accepted.`,\n rejectedSize: (name, size, max) => `${name}: is ${size}, the maximum is ${max}.`,\n rejectedCount: (name, max) => `${name}: you can only add ${max} ${plural(max, 'file', 'files')}.`,\n addedOne: (name) => `${name} added.`,\n addedMany: (n) => `${n} files added.`,\n removed: (name) => `${name} removed.`,\n },\n imageCropper: {\n alt: 'Image to crop',\n help: 'Arrows move the area. Alt and arrows resize it. Shift takes bigger steps.',\n zoom: 'Zoom',\n rotateLeft: 'Rotate left',\n rotateRight: 'Rotate right',\n reset: 'Reset',\n area: 'crop area',\n size: (w, h) => `${w} by ${h} pixels`,\n position: (w, h, x, y) => `${w} by ${h} pixels, ${x} from the left and ${y} from the top`,\n rotated: (deg) => `Rotated ${deg} degrees`,\n },\n kanban: {\n label: 'Board',\n empty: 'No cards',\n help: 'Space to pick up. Arrows to move. Space to drop, Escape to cancel.',\n cards: (n, limit) => plural(n, 'card', 'cards') + (limit ? `, maximum ${limit}` : ''),\n grabbed: (card) => `${card}, picked up`,\n position: (col, p, total) => `${col}, position ${p} of ${total}`,\n pickedUp: (card, where) => `${card} picked up. ${where}.`,\n dropped: (card, where) => `${card} dropped. ${where}.`,\n cancelled: (card, where) => `Move cancelled. ${card} returned to ${where}.`,\n full: (col, limit) => `${col} is full, maximum ${limit}.`,\n },\n notifications: {\n title: 'Notifications',\n markAll: 'Mark all as read',\n empty: 'No notifications.',\n emptyUnread: 'You are all caught up.',\n filter: 'Show',\n all: 'All',\n unread: 'Unread',\n unreadPrefix: 'Unread: ',\n unreadCount: () => 'unread',\n markRead: (t) => `Mark as read: ${t}`,\n remove: (t) => `Remove: ${t}`,\n removed: (t) => `${t} removed.`,\n newOne: (t) => `New notification: ${t}`,\n newMany: (n) => `${n} new notifications`,\n now: 'now',\n bellCount: (label, n) => `${label}, ${n} unread`,\n },\n pagination: {\n label: 'Pagination',\n rowsPerPage: 'Rows per page',\n first: 'First page',\n previous: 'Previous page',\n previousShort: 'Previous',\n next: 'Next page',\n nextShort: 'Next',\n last: 'Last page',\n page: (n) => `Page ${n}`,\n pageOf: (c, t) => `Page ${c} of ${t}`,\n range: (from, to, total) => `${from}–${to} of ${total}`,\n noResults: '0 results',\n },\n progress: { label: 'Loading' },\n rangeSlider: { low: 'minimum', high: 'maximum' },\n rating: {\n label: 'Rating',\n star: (n) => `${n} ${plural(n, 'star', 'stars')}`,\n summary: (v, max) => `${v} of ${max} stars`,\n },\n select: { placeholder: 'Select', empty: 'No options', loading: 'Loading...' },\n sidebar: { label: 'Main', collapse: 'Collapse menu', expand: 'Expand menu' },\n stepper: { complete: 'completed' },\n timePicker: { placeholder: 'hh:mm', label: 'Times' },\n toast: {\n region: 'Notifications',\n close: 'Dismiss notification',\n action: (label) => `Action available: ${label}`,\n },\n tour: {\n next: 'Next',\n previous: 'Back',\n done: 'Done',\n skip: 'Skip',\n close: 'Close the tour',\n progress: (c, t) => `Step ${c} of ${t}`,\n },\n};\n","import {\n EnvironmentProviders,\n Injectable,\n InjectionToken,\n Signal,\n computed,\n inject,\n makeEnvironmentProviders,\n signal,\n} from '@angular/core';\nimport { MxDeepPartial, MxMessages } from './messages';\nimport { MX_MESSAGES_EN } from './messages-en';\nimport { MX_MESSAGES_PT } from './messages-pt';\n\n/** Idiomas incluídos na biblioteca. Outros podem ser registados com `messages`. */\nexport type MxBuiltInLocale = 'pt' | 'en';\n\nexport interface MxI18nConfig {\n /** Idioma inicial: \"pt\" (por omissão na 1.x) ou \"en\". Aceita também \"pt-BR\", \"en-GB\", etc. */\n locale?: string;\n /**\n * Textos por idioma. Para \"pt\" e \"en\" basta indicar o que muda; um idioma novo\n * (ex.: \"fr\") parte do inglês e substitui o que indicares.\n */\n messages?: Record<string, MxDeepPartial<MxMessages>>;\n}\n\nexport const MX_I18N_CONFIG = new InjectionToken<MxI18nConfig>('MX_I18N_CONFIG');\n\nconst BUILT_IN: Record<MxBuiltInLocale, MxMessages> = { pt: MX_MESSAGES_PT, en: MX_MESSAGES_EN };\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v) && Object.getPrototypeOf(v) === Object.prototype;\n}\n\n/** Junta `patch` sobre `base`, objecto a objecto; funções, textos e números substituem. */\nexport function mxMergeMessages<T>(base: T, patch: MxDeepPartial<T> | undefined): T {\n if (!patch) return base;\n const out: Record<string, unknown> = { ...(base as Record<string, unknown>) };\n for (const [k, v] of Object.entries(patch)) {\n if (v === undefined) continue;\n const current = out[k];\n out[k] = isPlainObject(v) && isPlainObject(current) ? mxMergeMessages(current, v) : v;\n }\n return out as T;\n}\n\n/** Dicionário incluído para o idioma (\"pt-BR\" usa \"pt\"); inglês quando não há. */\nexport function mxBuiltInMessages(locale: string): MxMessages {\n const base = locale.toLowerCase().split(/[-_]/)[0] as MxBuiltInLocale;\n return BUILT_IN[base] ?? MX_MESSAGES_EN;\n}\n\n/**\n * Idioma activo e os textos dos componentes. Mudar o idioma com `setLocale`\n * actualiza logo todos os componentes no ecrã.\n *\n * ```ts\n * readonly i18n = inject(MxI18n);\n * this.i18n.setLocale('en');\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class MxI18n {\n private readonly config = inject(MX_I18N_CONFIG, { optional: true }) ?? {};\n private readonly custom = signal<Record<string, MxDeepPartial<MxMessages>>>(this.config.messages ?? {});\n private readonly current = signal(this.config.locale ?? 'pt');\n\n /** Idioma activo, tal como foi indicado (\"pt\", \"en\", \"en-GB\"...). */\n readonly locale = this.current.asReadonly();\n\n /** Todos os textos do idioma activo. */\n readonly messages: Signal<MxMessages> = computed(() => {\n const locale = this.current();\n const custom = this.custom();\n const base = locale.toLowerCase().split(/[-_]/)[0];\n let m = mxBuiltInMessages(locale);\n if (base !== locale) m = mxMergeMessages(m, custom[base]);\n return mxMergeMessages(m, custom[locale]);\n });\n\n /** Locale para Intl (números, datas): \"pt-AO\", \"en-US\"... */\n readonly intlLocale = computed(() => this.messages().intlLocale);\n\n setLocale(locale: string): void {\n this.current.set(locale);\n }\n\n /** Acrescenta ou corrige textos de um idioma, sem perder os que já existem. */\n register(locale: string, messages: MxDeepPartial<MxMessages>): void {\n this.custom.update((c) => ({ ...c, [locale]: mxMergeMessages((c[locale] ?? {}) as MxMessages, messages as never) }));\n }\n}\n\n/**\n * Configura o idioma dos componentes.\n *\n * ```ts\n * bootstrapApplication(App, {\n * providers: [provideMuximaI18n({ locale: 'en' })],\n * });\n * ```\n */\nexport function provideMuximaI18n(config: MxI18nConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: MX_I18N_CONFIG, useValue: config }]);\n}\n\n/** Textos do idioma activo; usar dentro de um componente ou serviço. */\nexport function injectMxMessages(): Signal<MxMessages> {\n return inject(MxI18n).messages;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["plural"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"muxima-ui-core-i18n.mjs","sources":["../../../projects/core/i18n/messages-pt.ts","../../../projects/core/i18n/messages-en.ts","../../../projects/core/i18n/i18n.ts","../../../projects/core/i18n/muxima-ui-core-i18n.ts"],"sourcesContent":["import { MxMessages } from './messages';\n\nconst plural = (n: number, one: string, many: string) => (n === 1 ? one : many);\n\n/** Português (Angola). */\nexport const MX_MESSAGES_PT: MxMessages = {\n intlLocale: 'pt-AO',\n dateOrder: 'dmy',\n firstDayOfWeek: 1,\n\n alert: { close: 'Fechar aviso' },\n breadcrumb: { label: 'Localização' },\n calendar: {\n previousMonth: (m) => `Mês anterior, ${m}`,\n nextMonth: (m) => `Mês seguinte, ${m}`,\n rangeStart: 'início do intervalo',\n rangeEnd: 'fim do intervalo',\n rangeStartEnd: 'início e fim do intervalo',\n rangeHint: (s, e) => `Intervalo de ${s} a ${e}.`,\n rangeStartHint: (s) => `Início ${s}. Escolhe a data de fim.`,\n },\n carousel: {\n carousel: 'carrossel',\n slide: 'diapositivo',\n previous: 'Diapositivo anterior',\n next: 'Diapositivo seguinte',\n choose: 'Escolher diapositivo',\n goTo: (n) => `Diapositivo ${n}`,\n position: (n, total) => `${n} de ${total}`,\n play: 'Iniciar a rotação automática',\n pause: 'Parar a rotação automática',\n },\n chips: {\n remove: 'Remover',\n list: 'Etiquetas',\n help: 'Enter para acrescentar. Backspace no campo vazio vai para a última etiqueta.',\n added: (t) => `${t} acrescentado.`,\n removed: (t) => `${t} removido.`,\n max: (n) => `Máximo de ${n} etiquetas.`,\n duplicate: (t) => `${t} já está na lista.`,\n },\n clipboard: { copy: 'Copiar', copied: 'Copiado', failed: 'Não foi possível copiar' },\n colorPicker: {\n choose: 'Escolher cor',\n change: (name, hex) => `Mudar cor, ${name}, ${hex}`,\n area: 'Saturação e brilho',\n hue: 'Matiz',\n alpha: 'Opacidade',\n swatches: 'Cores sugeridas',\n eyeDropper: 'Escolher uma cor do ecrã',\n hex: 'Hex',\n areaValue: (s, v, name) => `Saturação ${s}%, brilho ${v}%, ${name}`,\n hueValue: (deg, name) => `${deg} graus, ${name}`,\n names: {\n black: 'preto',\n white: 'branco',\n lightGray: 'cinzento claro',\n gray: 'cinzento',\n darkGray: 'cinzento escuro',\n brown: 'castanho',\n red: 'vermelho',\n orange: 'laranja',\n yellow: 'amarelo',\n lime: 'verde-lima',\n green: 'verde',\n teal: 'azul-petróleo',\n blue: 'azul',\n purple: 'roxo',\n magenta: 'magenta',\n tone: (name, tone) => `${name} ${tone === 'dark' ? 'escuro' : 'claro'}`,\n },\n },\n combobox: { placeholder: 'Pesquisar', empty: 'Sem resultados', loading: 'A pesquisar...' },\n command: {\n placeholder: 'Pesquisar...',\n label: 'Pesquisar',\n empty: 'Nada encontrado para',\n results: (n) => `${n} ${plural(n, 'resultado', 'resultados')}`,\n },\n dataGrid: {\n label: 'Tabela de dados',\n empty: 'Sem resultados.',\n loading: 'A carregar...',\n columns: 'Colunas',\n filter: 'Filtrar',\n all: 'Todos',\n selectAll: 'Seleccionar todas as linhas',\n selectRow: 'Seleccionar',\n selection: 'Selecção',\n resizeHint: 'Alt e setas esquerda e direita mudam a largura da coluna.',\n numberFilter: (f, c) => `${f} ${c}, aceita maior que, menor que e intervalos`,\n rows: (n, count) => `${n} ${plural(count, 'linha', 'linhas')}`,\n of: (total) => ` de ${total}`,\n selected: (n, count) => `${n} ${plural(count, 'seleccionada', 'seleccionadas')}`,\n sorted: (c, d) => `Ordenado por ${c}, ${d === 'asc' ? 'ascendente' : 'descendente'}`,\n unsorted: 'Sem ordenação',\n width: (c, px) => `${c}, ${px} píxeis`,\n },\n datePicker: {\n placeholder: 'dd/mm/aaaa',\n choose: 'Escolher data',\n change: (d) => `Mudar data, ${d}`,\n },\n dateRangePicker: {\n start: 'início',\n end: 'fim',\n choose: 'Escolher intervalo',\n change: (s, e) => `Mudar intervalo, ${s} a ${e}`,\n presets: 'Atalhos',\n last7Days: 'Últimos 7 dias',\n last30Days: 'Últimos 30 dias',\n thisMonth: 'Este mês',\n lastMonth: 'Mês passado',\n },\n editor: {\n toolbar: 'Formatação',\n link: 'Endereço da ligação',\n apply: 'Aplicar',\n remove: 'Remover',\n cancel: 'Cancelar',\n characters: 'caracteres',\n tools: {\n bold: 'Negrito',\n italic: 'Itálico',\n underline: 'Sublinhado',\n strike: 'Riscado',\n code: 'Código',\n heading2: 'Título',\n heading3: 'Subtítulo',\n paragraph: 'Parágrafo',\n bulletList: 'Lista',\n orderedList: 'Lista numerada',\n blockquote: 'Citação',\n link: 'Ligação',\n undo: 'Anular',\n redo: 'Refazer',\n },\n },\n fileUpload: {\n drop: 'Arrasta os ficheiros para aqui ou',\n browse: 'escolhe no computador',\n list: 'Ficheiros escolhidos',\n remove: 'Remover',\n done: 'Enviado',\n uploading: (name) => `A enviar ${name}`,\n rejectedType: (name) => `${name}: tipo de ficheiro não aceite.`,\n rejectedSize: (name, size, max) => `${name}: tem ${size}, o máximo é ${max}.`,\n rejectedCount: (name, max) => `${name}: só podes juntar ${max} ${plural(max, 'ficheiro', 'ficheiros')}.`,\n addedOne: (name) => `${name} juntado.`,\n addedMany: (n) => `${n} ficheiros juntados.`,\n removed: (name) => `${name} removido.`,\n },\n imageCropper: {\n alt: 'Imagem a recortar',\n help: 'Setas movem a área. Alt e setas mudam o tamanho. Shift dá passos maiores.',\n zoom: 'Zoom',\n rotateLeft: 'Rodar para a esquerda',\n rotateRight: 'Rodar para a direita',\n reset: 'Repor',\n area: 'área de recorte',\n size: (w, h) => `${w} por ${h} píxeis`,\n position: (w, h, x, y) => `${w} por ${h} píxeis, a ${x} da esquerda e ${y} do topo`,\n rotated: (deg) => `Rodada ${deg} graus`,\n },\n kanban: {\n label: 'Quadro',\n empty: 'Sem cartões',\n help: 'Espaço para agarrar. Setas para mover. Espaço para largar, Esc para cancelar.',\n cards: (n, limit) => plural(n, 'cartão', 'cartões') + (limit ? `, máximo ${limit}` : ''),\n grabbed: (card) => `${card}, agarrado`,\n position: (col, p, total) => `${col}, posição ${p} de ${total}`,\n pickedUp: (card, where) => `${card} agarrado. ${where}.`,\n dropped: (card, where) => `${card} largado. ${where}.`,\n cancelled: (card, where) => `Movimento cancelado. ${card} voltou a ${where}.`,\n full: (col, limit) => `${col} está cheia, máximo ${limit}.`,\n },\n notifications: {\n title: 'Notificações',\n markAll: 'Marcar todas como lidas',\n empty: 'Sem notificações.',\n emptyUnread: 'Está tudo lido.',\n filter: 'Mostrar',\n all: 'Todas',\n unread: 'Por ler',\n unreadPrefix: 'Por ler: ',\n unreadCount: () => 'por ler',\n markRead: (t) => `Marcar como lida: ${t}`,\n remove: (t) => `Remover: ${t}`,\n removed: (t) => `${t} removida.`,\n newOne: (t) => `Nova notificação: ${t}`,\n newMany: (n) => `${n} notificações novas`,\n now: 'agora',\n bellCount: (label, n) => `${label}, ${n} por ler`,\n },\n pagination: {\n label: 'Paginação',\n rowsPerPage: 'Linhas por página',\n first: 'Primeira página',\n previous: 'Página anterior',\n previousShort: 'Anterior',\n next: 'Página seguinte',\n nextShort: 'Seguinte',\n last: 'Última página',\n page: (n) => `Página ${n}`,\n pageOf: (c, t) => `Página ${c} de ${t}`,\n range: (from, to, total) => `${from}–${to} de ${total}`,\n noResults: '0 resultados',\n },\n progress: { label: 'A carregar' },\n rangeSlider: { low: 'mínimo', high: 'máximo' },\n rating: {\n label: 'Avaliação',\n star: (n) => `${n} ${plural(n, 'estrela', 'estrelas')}`,\n summary: (v, max) => `${v} de ${max} estrelas`,\n },\n select: { placeholder: 'Seleccionar', empty: 'Sem opções', loading: 'A carregar...' },\n sidebar: { label: 'Principal', collapse: 'Recolher menu', expand: 'Expandir menu' },\n stepper: { complete: 'concluído' },\n timePicker: { placeholder: 'hh:mm', label: 'Horas' },\n toast: {\n region: 'Notificações',\n close: 'Fechar notificação',\n action: (label) => `Acção disponível: ${label}`,\n },\n tour: {\n next: 'Seguinte',\n previous: 'Anterior',\n done: 'Concluir',\n skip: 'Saltar',\n close: 'Fechar a visita guiada',\n progress: (c, t) => `Passo ${c} de ${t}`,\n },\n};\n","import { MxMessages } from './messages';\n\nconst plural = (n: number, one: string, many: string) => (n === 1 ? one : many);\n\n/** English (United States). */\nexport const MX_MESSAGES_EN: MxMessages = {\n intlLocale: 'en-US',\n dateOrder: 'mdy',\n firstDayOfWeek: 0,\n\n alert: { close: 'Dismiss alert' },\n breadcrumb: { label: 'Breadcrumb' },\n calendar: {\n previousMonth: (m) => `Previous month, ${m}`,\n nextMonth: (m) => `Next month, ${m}`,\n rangeStart: 'range start',\n rangeEnd: 'range end',\n rangeStartEnd: 'range start and end',\n rangeHint: (s, e) => `Range from ${s} to ${e}.`,\n rangeStartHint: (s) => `Start ${s}. Choose the end date.`,\n },\n carousel: {\n carousel: 'carousel',\n slide: 'slide',\n previous: 'Previous slide',\n next: 'Next slide',\n choose: 'Choose slide',\n goTo: (n) => `Slide ${n}`,\n position: (n, total) => `${n} of ${total}`,\n play: 'Start automatic rotation',\n pause: 'Stop automatic rotation',\n },\n chips: {\n remove: 'Remove',\n list: 'Tags',\n help: 'Press Enter to add. Backspace in the empty field moves to the last tag.',\n added: (t) => `${t} added.`,\n removed: (t) => `${t} removed.`,\n max: (n) => `Maximum of ${n} tags.`,\n duplicate: (t) => `${t} is already in the list.`,\n },\n clipboard: { copy: 'Copy', copied: 'Copied', failed: 'Could not copy' },\n colorPicker: {\n choose: 'Choose color',\n change: (name, hex) => `Change color, ${name}, ${hex}`,\n area: 'Saturation and brightness',\n hue: 'Hue',\n alpha: 'Opacity',\n swatches: 'Suggested colors',\n eyeDropper: 'Pick a color from the screen',\n hex: 'Hex',\n areaValue: (s, v, name) => `Saturation ${s}%, brightness ${v}%, ${name}`,\n hueValue: (deg, name) => `${deg} degrees, ${name}`,\n names: {\n black: 'black',\n white: 'white',\n lightGray: 'light gray',\n gray: 'gray',\n darkGray: 'dark gray',\n brown: 'brown',\n red: 'red',\n orange: 'orange',\n yellow: 'yellow',\n lime: 'lime',\n green: 'green',\n teal: 'teal',\n blue: 'blue',\n purple: 'purple',\n magenta: 'magenta',\n tone: (name, tone) => `${tone} ${name}`,\n },\n },\n combobox: { placeholder: 'Search', empty: 'No results', loading: 'Searching...' },\n command: {\n placeholder: 'Search...',\n label: 'Search',\n empty: 'Nothing found for',\n results: (n) => `${n} ${plural(n, 'result', 'results')}`,\n },\n dataGrid: {\n label: 'Data table',\n empty: 'No results.',\n loading: 'Loading...',\n columns: 'Columns',\n filter: 'Filter',\n all: 'All',\n selectAll: 'Select all rows',\n selectRow: 'Select',\n selection: 'Selection',\n resizeHint: 'Alt and the left and right arrows change the column width.',\n numberFilter: (f, c) => `${f} ${c}, accepts greater than, less than and ranges`,\n rows: (n, count) => `${n} ${plural(count, 'row', 'rows')}`,\n of: (total) => ` of ${total}`,\n selected: (n) => `${n} selected`,\n sorted: (c, d) => `Sorted by ${c}, ${d === 'asc' ? 'ascending' : 'descending'}`,\n unsorted: 'Not sorted',\n width: (c, px) => `${c}, ${px} pixels`,\n },\n datePicker: {\n placeholder: 'mm/dd/yyyy',\n choose: 'Choose date',\n change: (d) => `Change date, ${d}`,\n },\n dateRangePicker: {\n start: 'start',\n end: 'end',\n choose: 'Choose range',\n change: (s, e) => `Change range, ${s} to ${e}`,\n presets: 'Shortcuts',\n last7Days: 'Last 7 days',\n last30Days: 'Last 30 days',\n thisMonth: 'This month',\n lastMonth: 'Last month',\n },\n editor: {\n toolbar: 'Formatting',\n link: 'Link address',\n apply: 'Apply',\n remove: 'Remove',\n cancel: 'Cancel',\n characters: 'characters',\n tools: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strike: 'Strikethrough',\n code: 'Code',\n heading2: 'Heading',\n heading3: 'Subheading',\n paragraph: 'Paragraph',\n bulletList: 'Bulleted list',\n orderedList: 'Numbered list',\n blockquote: 'Quote',\n link: 'Link',\n undo: 'Undo',\n redo: 'Redo',\n },\n },\n fileUpload: {\n drop: 'Drag files here or',\n browse: 'browse your computer',\n list: 'Selected files',\n remove: 'Remove',\n done: 'Uploaded',\n uploading: (name) => `Uploading ${name}`,\n rejectedType: (name) => `${name}: file type not accepted.`,\n rejectedSize: (name, size, max) => `${name}: is ${size}, the maximum is ${max}.`,\n rejectedCount: (name, max) => `${name}: you can only add ${max} ${plural(max, 'file', 'files')}.`,\n addedOne: (name) => `${name} added.`,\n addedMany: (n) => `${n} files added.`,\n removed: (name) => `${name} removed.`,\n },\n imageCropper: {\n alt: 'Image to crop',\n help: 'Arrows move the area. Alt and arrows resize it. Shift takes bigger steps.',\n zoom: 'Zoom',\n rotateLeft: 'Rotate left',\n rotateRight: 'Rotate right',\n reset: 'Reset',\n area: 'crop area',\n size: (w, h) => `${w} by ${h} pixels`,\n position: (w, h, x, y) => `${w} by ${h} pixels, ${x} from the left and ${y} from the top`,\n rotated: (deg) => `Rotated ${deg} degrees`,\n },\n kanban: {\n label: 'Board',\n empty: 'No cards',\n help: 'Space to pick up. Arrows to move. Space to drop, Escape to cancel.',\n cards: (n, limit) => plural(n, 'card', 'cards') + (limit ? `, maximum ${limit}` : ''),\n grabbed: (card) => `${card}, picked up`,\n position: (col, p, total) => `${col}, position ${p} of ${total}`,\n pickedUp: (card, where) => `${card} picked up. ${where}.`,\n dropped: (card, where) => `${card} dropped. ${where}.`,\n cancelled: (card, where) => `Move cancelled. ${card} returned to ${where}.`,\n full: (col, limit) => `${col} is full, maximum ${limit}.`,\n },\n notifications: {\n title: 'Notifications',\n markAll: 'Mark all as read',\n empty: 'No notifications.',\n emptyUnread: 'You are all caught up.',\n filter: 'Show',\n all: 'All',\n unread: 'Unread',\n unreadPrefix: 'Unread: ',\n unreadCount: () => 'unread',\n markRead: (t) => `Mark as read: ${t}`,\n remove: (t) => `Remove: ${t}`,\n removed: (t) => `${t} removed.`,\n newOne: (t) => `New notification: ${t}`,\n newMany: (n) => `${n} new notifications`,\n now: 'now',\n bellCount: (label, n) => `${label}, ${n} unread`,\n },\n pagination: {\n label: 'Pagination',\n rowsPerPage: 'Rows per page',\n first: 'First page',\n previous: 'Previous page',\n previousShort: 'Previous',\n next: 'Next page',\n nextShort: 'Next',\n last: 'Last page',\n page: (n) => `Page ${n}`,\n pageOf: (c, t) => `Page ${c} of ${t}`,\n range: (from, to, total) => `${from}–${to} of ${total}`,\n noResults: '0 results',\n },\n progress: { label: 'Loading' },\n rangeSlider: { low: 'minimum', high: 'maximum' },\n rating: {\n label: 'Rating',\n star: (n) => `${n} ${plural(n, 'star', 'stars')}`,\n summary: (v, max) => `${v} of ${max} stars`,\n },\n select: { placeholder: 'Select', empty: 'No options', loading: 'Loading...' },\n sidebar: { label: 'Main', collapse: 'Collapse menu', expand: 'Expand menu' },\n stepper: { complete: 'completed' },\n timePicker: { placeholder: 'hh:mm', label: 'Times' },\n toast: {\n region: 'Notifications',\n close: 'Dismiss notification',\n action: (label) => `Action available: ${label}`,\n },\n tour: {\n next: 'Next',\n previous: 'Back',\n done: 'Done',\n skip: 'Skip',\n close: 'Close the tour',\n progress: (c, t) => `Step ${c} of ${t}`,\n },\n};\n","import {\n EnvironmentProviders,\n Injectable,\n InjectionToken,\n Signal,\n computed,\n inject,\n makeEnvironmentProviders,\n signal,\n} from '@angular/core';\nimport { MxDeepPartial, MxMessages } from './messages';\nimport { MX_MESSAGES_EN } from './messages-en';\nimport { MX_MESSAGES_PT } from './messages-pt';\n\n/** Idiomas incluídos na biblioteca. Outros podem ser registados com `messages`. */\nexport type MxBuiltInLocale = 'pt' | 'en';\n\nexport interface MxI18nConfig {\n /** Idioma inicial: \"en\" (por omissão) ou \"pt\". Aceita também \"pt-BR\", \"en-GB\", etc. */\n locale?: string;\n /**\n * Textos por idioma. Para \"pt\" e \"en\" basta indicar o que muda; um idioma novo\n * (ex.: \"fr\") parte do inglês e substitui o que indicares.\n */\n messages?: Record<string, MxDeepPartial<MxMessages>>;\n}\n\nexport const MX_I18N_CONFIG = new InjectionToken<MxI18nConfig>('MX_I18N_CONFIG');\n\nconst BUILT_IN: Record<MxBuiltInLocale, MxMessages> = { pt: MX_MESSAGES_PT, en: MX_MESSAGES_EN };\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v) && Object.getPrototypeOf(v) === Object.prototype;\n}\n\n/** Junta `patch` sobre `base`, objecto a objecto; funções, textos e números substituem. */\nexport function mxMergeMessages<T>(base: T, patch: MxDeepPartial<T> | undefined): T {\n if (!patch) return base;\n const out: Record<string, unknown> = { ...(base as Record<string, unknown>) };\n for (const [k, v] of Object.entries(patch)) {\n if (v === undefined) continue;\n const current = out[k];\n out[k] = isPlainObject(v) && isPlainObject(current) ? mxMergeMessages(current, v) : v;\n }\n return out as T;\n}\n\n/** Dicionário incluído para o idioma (\"pt-BR\" usa \"pt\"); inglês quando não há. */\nexport function mxBuiltInMessages(locale: string): MxMessages {\n const base = locale.toLowerCase().split(/[-_]/)[0] as MxBuiltInLocale;\n return BUILT_IN[base] ?? MX_MESSAGES_EN;\n}\n\n/**\n * Idioma activo e os textos dos componentes. Mudar o idioma com `setLocale`\n * actualiza logo todos os componentes no ecrã.\n *\n * ```ts\n * readonly i18n = inject(MxI18n);\n * this.i18n.setLocale('en');\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class MxI18n {\n private readonly config = inject(MX_I18N_CONFIG, { optional: true }) ?? {};\n private readonly custom = signal<Record<string, MxDeepPartial<MxMessages>>>(this.config.messages ?? {});\n private readonly current = signal(this.config.locale ?? 'en');\n\n /** Idioma activo, tal como foi indicado (\"pt\", \"en\", \"en-GB\"...). */\n readonly locale = this.current.asReadonly();\n\n /** Todos os textos do idioma activo. */\n readonly messages: Signal<MxMessages> = computed(() => {\n const locale = this.current();\n const custom = this.custom();\n const base = locale.toLowerCase().split(/[-_]/)[0];\n let m = mxBuiltInMessages(locale);\n if (base !== locale) m = mxMergeMessages(m, custom[base]);\n return mxMergeMessages(m, custom[locale]);\n });\n\n /** Locale para Intl (números, datas): \"pt-AO\", \"en-US\"... */\n readonly intlLocale = computed(() => this.messages().intlLocale);\n\n setLocale(locale: string): void {\n this.current.set(locale);\n }\n\n /** Acrescenta ou corrige textos de um idioma, sem perder os que já existem. */\n register(locale: string, messages: MxDeepPartial<MxMessages>): void {\n this.custom.update((c) => ({ ...c, [locale]: mxMergeMessages((c[locale] ?? {}) as MxMessages, messages as never) }));\n }\n}\n\n/**\n * Configura o idioma dos componentes.\n *\n * ```ts\n * bootstrapApplication(App, {\n * providers: [provideMuximaI18n({ locale: 'en' })],\n * });\n * ```\n */\nexport function provideMuximaI18n(config: MxI18nConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: MX_I18N_CONFIG, useValue: config }]);\n}\n\n/** Textos do idioma activo; usar dentro de um componente ou serviço. */\nexport function injectMxMessages(): Signal<MxMessages> {\n return inject(MxI18n).messages;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["plural"],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@ import { inject, TemplateRef, Directive, input, booleanAttribute, computed, outp
|
|
|
3
3
|
import { NgTemplateOutlet } from '@angular/common';
|
|
4
4
|
import { LiveAnnouncer } from '@angular/cdk/a11y';
|
|
5
5
|
import { mxUniqueId } from '@muxima-ui/core/form-field';
|
|
6
|
-
import {
|
|
6
|
+
import { MX_MESSAGES_EN, injectMxMessages } from '@muxima-ui/core/i18n';
|
|
7
7
|
|
|
8
|
-
/** "
|
|
9
|
-
function mxRelativeTime(date, now = new Date(), locale = '
|
|
8
|
+
/** "now", "5 min ago", "yesterday", "3 days ago" e, depois de uma semana, a data (em inglês por omissão). */
|
|
9
|
+
function mxRelativeTime(date, now = new Date(), locale = 'en-US', nowText = MX_MESSAGES_EN.notifications.now) {
|
|
10
10
|
const diff = (date.getTime() - now.getTime()) / 1000;
|
|
11
11
|
const abs = Math.abs(diff);
|
|
12
12
|
if (abs < 45)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxima-ui-core-notification-center.mjs","sources":["../../../projects/core/notification-center/notification-center.ts","../../../projects/core/notification-center/muxima-ui-core-notification-center.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n TemplateRef,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { mxUniqueId } from '@muxima-ui/core/form-field';\nimport { MX_MESSAGES_PT, injectMxMessages } from '@muxima-ui/core/i18n';\n\nexport interface MxNotification<D = unknown> {\n id: string | number;\n title: string;\n description?: string;\n time: Date;\n read?: boolean;\n /** Cor do marcador: info em Kwanza, success, warning, danger. */\n variant?: 'default' | 'info' | 'success' | 'warning' | 'danger';\n /** Agrupa por categoria nos filtros (ex.: \"Facturas\"). */\n category?: string;\n data?: D;\n}\n\n/** \"agora\", \"há 5 min\", \"ontem\", \"há 3 dias\" e, depois de uma semana, a data. */\nexport function mxRelativeTime(\n date: Date,\n now = new Date(),\n locale = 'pt-AO',\n nowText = MX_MESSAGES_PT.notifications.now,\n): string {\n const diff = (date.getTime() - now.getTime()) / 1000;\n const abs = Math.abs(diff);\n if (abs < 45) return nowText;\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });\n if (abs < 3600) return rtf.format(Math.round(diff / 60), 'minute');\n if (abs < 86400) return rtf.format(Math.round(diff / 3600), 'hour');\n if (abs < 7 * 86400) return rtf.format(Math.round(diff / 86400), 'day');\n return new Intl.DateTimeFormat(locale, { day: 'numeric', month: 'short' }).format(date);\n}\n\n/** Modelo para o conteúdo de cada notificação: `<ng-template mxNotificationContent let-n>`. */\n@Directive({ selector: 'ng-template[mxNotificationContent]' })\nexport class MxNotificationContent {\n readonly template = inject(TemplateRef);\n}\n\n/**\n * Lista de notificações com por ler e lidas, filtro \"Por ler\", \"Marcar todas como lidas\"\n * e acções por notificação. Usa-se dentro de um popover, de um drawer ou numa página.\n *\n * ```html\n * <mx-notification-center [items]=\"notificacoes()\" (opened)=\"abrir($event)\"\n * (markRead)=\"marcar($event)\" (markAllRead)=\"marcarTodas()\" (dismiss)=\"remover($event)\" />\n * ```\n *\n * O componente não guarda estado: recebe a lista e emite o que a pessoa fez.\n * Quando chegam notificações novas por ler, anuncia-as ao leitor de ecrã.\n */\n@Component({\n selector: 'mx-notification-center',\n exportAs: 'mxNotificationCenter',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'mx-notification-center', '[attr.aria-label]': 'null' },\n template: `\n <div class=\"mx-notification-head\">\n <p\n class=\"mx-notification-title\"\n role=\"heading\"\n [attr.aria-level]=\"headingLevel()\"\n [id]=\"titleId\"\n >\n {{ title() ?? msg().title }}\n </p>\n @if (unread()) {\n <span class=\"mx-notification-count\"\n >{{ unread() }}<span class=\"mx-visually-hidden\"> {{ msg().unreadCount(unread()) }}</span></span\n >\n }\n <button\n type=\"button\"\n class=\"mx-notification-link\"\n [disabled]=\"!unread()\"\n (click)=\"markAllRead.emit()\"\n >\n {{ markAllText() ?? msg().markAll }}\n </button>\n </div>\n\n @if (showFilter()) {\n <div class=\"mx-notification-filters\" role=\"group\" [attr.aria-label]=\"filterLabel() ?? msg().filter\">\n <button\n type=\"button\"\n class=\"mx-chip mx-chip-toggle\"\n data-size=\"sm\"\n [attr.aria-pressed]=\"filter() === 'all'\"\n (click)=\"filter.set('all')\"\n >\n {{ msg().all }}\n </button>\n <button\n type=\"button\"\n class=\"mx-chip mx-chip-toggle\"\n data-size=\"sm\"\n [attr.aria-pressed]=\"filter() === 'unread'\"\n (click)=\"filter.set('unread')\"\n >\n {{ msg().unread }} ({{ unread() }})\n </button>\n @for (c of categories(); track c) {\n <button\n type=\"button\"\n class=\"mx-chip mx-chip-toggle\"\n data-size=\"sm\"\n [attr.aria-pressed]=\"filter() === c\"\n (click)=\"filter.set(c)\"\n >\n {{ c }}\n </button>\n }\n </div>\n }\n\n @if (visible().length) {\n <ul class=\"mx-notification-list\" [attr.aria-labelledby]=\"titleId\">\n @for (n of visible(); track n.id) {\n <li\n class=\"mx-notification\"\n [attr.data-unread]=\"n.read ? null : ''\"\n [attr.data-variant]=\"n.variant && n.variant !== 'default' ? n.variant : null\"\n >\n <span class=\"mx-notification-dot\" aria-hidden=\"true\"></span>\n <button type=\"button\" class=\"mx-notification-main\" (click)=\"open(n)\">\n @if (!n.read) {\n <span class=\"mx-visually-hidden\">{{ msg().unreadPrefix }}</span>\n }\n @if (contentTpl(); as tpl) {\n <ng-container *ngTemplateOutlet=\"tpl.template; context: { $implicit: n }\" />\n } @else {\n <span class=\"mx-notification-text\">{{ n.title }}</span>\n @if (n.description) {\n <span class=\"mx-notification-desc\">{{ n.description }}</span>\n }\n }\n <time class=\"mx-notification-time\" [attr.datetime]=\"n.time.toISOString()\">{{\n relative(n.time)\n }}</time>\n </button>\n <div class=\"mx-notification-actions\">\n @if (!n.read) {\n <button\n type=\"button\"\n class=\"mx-notification-action\"\n [attr.aria-label]=\"msg().markRead(n.title)\"\n (click)=\"markRead.emit(n)\"\n >\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\">\n <path\n d=\"M3.5 8.5l3 3 6-7\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n }\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"mx-notification-action\"\n [attr.aria-label]=\"msg().remove(n.title)\"\n (click)=\"dismissItem(n)\"\n >\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\">\n <path\n d=\"M4.5 4.5l7 7M11.5 4.5l-7 7\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n }\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"mx-notification-empty\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M6 16.5V11a6 6 0 1 1 12 0v5.5l1.5 2h-15l1.5-2z M10 20.5a2 2 0 0 0 4 0\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <p>{{ filter() === 'unread' ? (emptyUnreadText() ?? msg().emptyUnread) : (emptyText() ?? msg().empty) }}</p>\n </div>\n }\n <ng-content select=\"[mxNotificationFooter]\" />\n `,\n})\nexport class MxNotificationCenter<D = unknown> {\n readonly items = input.required<readonly MxNotification<D>[]>();\n readonly title = input<string>();\n /** Nível do título para o leitor de ecrã (h2 por omissão). */\n readonly headingLevel = input(2);\n readonly markAllText = input<string>();\n readonly emptyText = input<string>();\n readonly emptyUnreadText = input<string>();\n readonly filterLabel = input<string>();\n /** Mostra os filtros Todas, Por ler e as categorias. */\n readonly showFilter = input(true, { transform: booleanAttribute });\n /** Mostra o botão de remover em cada notificação. */\n readonly dismissible = input(false, { transform: booleanAttribute });\n /** Marca como lida ao abrir (emite markRead além de opened). */\n readonly markReadOnOpen = input(true, { transform: booleanAttribute });\n /** Anuncia ao leitor de ecrã quando chegam notificações por ler. */\n readonly announce = input(true, { transform: booleanAttribute });\n /** Locale das datas; por omissão o do idioma activo. */\n readonly locale = input<string>();\n private readonly i18n = injectMxMessages();\n protected readonly msg = computed(() => this.i18n().notifications);\n\n readonly opened = output<MxNotification<D>>();\n readonly markRead = output<MxNotification<D>>();\n readonly markAllRead = output<void>();\n readonly dismiss = output<MxNotification<D>>();\n\n protected readonly contentTpl = contentChild(MxNotificationContent);\n private readonly announcer = inject(LiveAnnouncer);\n protected readonly titleId = mxUniqueId('mx-notification-title');\n readonly filter = signal<string>('all');\n /** Muda a cada minuto, para \"há 5 min\" se actualizar. */\n private readonly now = signal(new Date());\n\n readonly unread = computed(() => this.items().filter((n) => !n.read).length);\n protected readonly categories = computed(() => [\n ...new Set(\n this.items()\n .map((n) => n.category)\n .filter((c): c is string => !!c),\n ),\n ]);\n protected readonly visible = computed(() => {\n const f = this.filter();\n const list = [...this.items()].sort((a, b) => b.time.getTime() - a.time.getTime());\n if (f === 'unread') return list.filter((n) => !n.read);\n if (f !== 'all') return list.filter((n) => n.category === f);\n return list;\n });\n\n constructor() {\n const timer = setInterval(() => this.now.set(new Date()), 60_000);\n inject(DestroyRef).onDestroy(() => clearInterval(timer));\n let previous: Set<string | number> | null = null;\n effect(() => {\n const items = this.items();\n const ids = new Set(items.map((n) => n.id));\n if (previous && untracked(() => this.announce())) {\n const fresh = items.filter((n) => !n.read && !previous!.has(n.id));\n if (fresh.length)\n this.announcer.announce(\n fresh.length === 1\n ? untracked(() => this.msg().newOne(fresh[0].title))\n : untracked(() => this.msg().newMany(fresh.length)),\n );\n }\n previous = ids;\n });\n }\n\n protected relative(d: Date): string {\n return mxRelativeTime(d, this.now(), this.locale() ?? this.i18n().intlLocale, this.msg().now);\n }\n\n protected open(n: MxNotification<D>): void {\n if (!n.read && this.markReadOnOpen()) this.markRead.emit(n);\n this.opened.emit(n);\n }\n\n protected dismissItem(n: MxNotification<D>): void {\n this.dismiss.emit(n);\n this.announcer.announce(this.msg().removed(n.title));\n }\n}\n\n/**\n * Botão do sino com a contagem por ler. O nome inclui a contagem:\n * \"Notificações, 3 por ler\".\n *\n * ```html\n * <button mxNotificationBell [count]=\"porLer()\" [mxPopoverTrigger]=\"painel\"></button>\n * ```\n */\n@Component({\n selector: 'button[mxNotificationBell]',\n exportAs: 'mxNotificationBell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'mx-notification-bell',\n type: 'button',\n '[attr.aria-label]': 'count() ? i18n().notifications.bellCount(label() ?? i18n().notifications.title, count()) : (label() ?? i18n().notifications.title)',\n },\n template: `\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M6 16.5V11a6 6 0 1 1 12 0v5.5l1.5 2h-15l1.5-2z\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10 20.5a2 2 0 0 0 4 0\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n />\n </svg>\n @if (count()) {\n <span class=\"mx-notification-bell-count\" aria-hidden=\"true\">{{\n count() > max() ? max() + '+' : count()\n }}</span>\n }\n `,\n})\nexport class MxNotificationBell {\n readonly count = input(0);\n readonly max = input(99);\n readonly label = input<string>();\n protected readonly i18n = injectMxMessages();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"muxima-ui-core-notification-center.mjs","sources":["../../../projects/core/notification-center/notification-center.ts","../../../projects/core/notification-center/muxima-ui-core-notification-center.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n TemplateRef,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { mxUniqueId } from '@muxima-ui/core/form-field';\nimport { MX_MESSAGES_EN, injectMxMessages } from '@muxima-ui/core/i18n';\n\nexport interface MxNotification<D = unknown> {\n id: string | number;\n title: string;\n description?: string;\n time: Date;\n read?: boolean;\n /** Cor do marcador: info em Kwanza, success, warning, danger. */\n variant?: 'default' | 'info' | 'success' | 'warning' | 'danger';\n /** Agrupa por categoria nos filtros (ex.: \"Facturas\"). */\n category?: string;\n data?: D;\n}\n\n/** \"now\", \"5 min ago\", \"yesterday\", \"3 days ago\" e, depois de uma semana, a data (em inglês por omissão). */\nexport function mxRelativeTime(\n date: Date,\n now = new Date(),\n locale = 'en-US',\n nowText = MX_MESSAGES_EN.notifications.now,\n): string {\n const diff = (date.getTime() - now.getTime()) / 1000;\n const abs = Math.abs(diff);\n if (abs < 45) return nowText;\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });\n if (abs < 3600) return rtf.format(Math.round(diff / 60), 'minute');\n if (abs < 86400) return rtf.format(Math.round(diff / 3600), 'hour');\n if (abs < 7 * 86400) return rtf.format(Math.round(diff / 86400), 'day');\n return new Intl.DateTimeFormat(locale, { day: 'numeric', month: 'short' }).format(date);\n}\n\n/** Modelo para o conteúdo de cada notificação: `<ng-template mxNotificationContent let-n>`. */\n@Directive({ selector: 'ng-template[mxNotificationContent]' })\nexport class MxNotificationContent {\n readonly template = inject(TemplateRef);\n}\n\n/**\n * Lista de notificações com por ler e lidas, filtro \"Por ler\", \"Marcar todas como lidas\"\n * e acções por notificação. Usa-se dentro de um popover, de um drawer ou numa página.\n *\n * ```html\n * <mx-notification-center [items]=\"notificacoes()\" (opened)=\"abrir($event)\"\n * (markRead)=\"marcar($event)\" (markAllRead)=\"marcarTodas()\" (dismiss)=\"remover($event)\" />\n * ```\n *\n * O componente não guarda estado: recebe a lista e emite o que a pessoa fez.\n * Quando chegam notificações novas por ler, anuncia-as ao leitor de ecrã.\n */\n@Component({\n selector: 'mx-notification-center',\n exportAs: 'mxNotificationCenter',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'mx-notification-center', '[attr.aria-label]': 'null' },\n template: `\n <div class=\"mx-notification-head\">\n <p\n class=\"mx-notification-title\"\n role=\"heading\"\n [attr.aria-level]=\"headingLevel()\"\n [id]=\"titleId\"\n >\n {{ title() ?? msg().title }}\n </p>\n @if (unread()) {\n <span class=\"mx-notification-count\"\n >{{ unread() }}<span class=\"mx-visually-hidden\"> {{ msg().unreadCount(unread()) }}</span></span\n >\n }\n <button\n type=\"button\"\n class=\"mx-notification-link\"\n [disabled]=\"!unread()\"\n (click)=\"markAllRead.emit()\"\n >\n {{ markAllText() ?? msg().markAll }}\n </button>\n </div>\n\n @if (showFilter()) {\n <div class=\"mx-notification-filters\" role=\"group\" [attr.aria-label]=\"filterLabel() ?? msg().filter\">\n <button\n type=\"button\"\n class=\"mx-chip mx-chip-toggle\"\n data-size=\"sm\"\n [attr.aria-pressed]=\"filter() === 'all'\"\n (click)=\"filter.set('all')\"\n >\n {{ msg().all }}\n </button>\n <button\n type=\"button\"\n class=\"mx-chip mx-chip-toggle\"\n data-size=\"sm\"\n [attr.aria-pressed]=\"filter() === 'unread'\"\n (click)=\"filter.set('unread')\"\n >\n {{ msg().unread }} ({{ unread() }})\n </button>\n @for (c of categories(); track c) {\n <button\n type=\"button\"\n class=\"mx-chip mx-chip-toggle\"\n data-size=\"sm\"\n [attr.aria-pressed]=\"filter() === c\"\n (click)=\"filter.set(c)\"\n >\n {{ c }}\n </button>\n }\n </div>\n }\n\n @if (visible().length) {\n <ul class=\"mx-notification-list\" [attr.aria-labelledby]=\"titleId\">\n @for (n of visible(); track n.id) {\n <li\n class=\"mx-notification\"\n [attr.data-unread]=\"n.read ? null : ''\"\n [attr.data-variant]=\"n.variant && n.variant !== 'default' ? n.variant : null\"\n >\n <span class=\"mx-notification-dot\" aria-hidden=\"true\"></span>\n <button type=\"button\" class=\"mx-notification-main\" (click)=\"open(n)\">\n @if (!n.read) {\n <span class=\"mx-visually-hidden\">{{ msg().unreadPrefix }}</span>\n }\n @if (contentTpl(); as tpl) {\n <ng-container *ngTemplateOutlet=\"tpl.template; context: { $implicit: n }\" />\n } @else {\n <span class=\"mx-notification-text\">{{ n.title }}</span>\n @if (n.description) {\n <span class=\"mx-notification-desc\">{{ n.description }}</span>\n }\n }\n <time class=\"mx-notification-time\" [attr.datetime]=\"n.time.toISOString()\">{{\n relative(n.time)\n }}</time>\n </button>\n <div class=\"mx-notification-actions\">\n @if (!n.read) {\n <button\n type=\"button\"\n class=\"mx-notification-action\"\n [attr.aria-label]=\"msg().markRead(n.title)\"\n (click)=\"markRead.emit(n)\"\n >\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\">\n <path\n d=\"M3.5 8.5l3 3 6-7\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n }\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"mx-notification-action\"\n [attr.aria-label]=\"msg().remove(n.title)\"\n (click)=\"dismissItem(n)\"\n >\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\">\n <path\n d=\"M4.5 4.5l7 7M11.5 4.5l-7 7\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>\n </button>\n }\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"mx-notification-empty\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M6 16.5V11a6 6 0 1 1 12 0v5.5l1.5 2h-15l1.5-2z M10 20.5a2 2 0 0 0 4 0\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <p>{{ filter() === 'unread' ? (emptyUnreadText() ?? msg().emptyUnread) : (emptyText() ?? msg().empty) }}</p>\n </div>\n }\n <ng-content select=\"[mxNotificationFooter]\" />\n `,\n})\nexport class MxNotificationCenter<D = unknown> {\n readonly items = input.required<readonly MxNotification<D>[]>();\n readonly title = input<string>();\n /** Nível do título para o leitor de ecrã (h2 por omissão). */\n readonly headingLevel = input(2);\n readonly markAllText = input<string>();\n readonly emptyText = input<string>();\n readonly emptyUnreadText = input<string>();\n readonly filterLabel = input<string>();\n /** Mostra os filtros Todas, Por ler e as categorias. */\n readonly showFilter = input(true, { transform: booleanAttribute });\n /** Mostra o botão de remover em cada notificação. */\n readonly dismissible = input(false, { transform: booleanAttribute });\n /** Marca como lida ao abrir (emite markRead além de opened). */\n readonly markReadOnOpen = input(true, { transform: booleanAttribute });\n /** Anuncia ao leitor de ecrã quando chegam notificações por ler. */\n readonly announce = input(true, { transform: booleanAttribute });\n /** Locale das datas; por omissão o do idioma activo. */\n readonly locale = input<string>();\n private readonly i18n = injectMxMessages();\n protected readonly msg = computed(() => this.i18n().notifications);\n\n readonly opened = output<MxNotification<D>>();\n readonly markRead = output<MxNotification<D>>();\n readonly markAllRead = output<void>();\n readonly dismiss = output<MxNotification<D>>();\n\n protected readonly contentTpl = contentChild(MxNotificationContent);\n private readonly announcer = inject(LiveAnnouncer);\n protected readonly titleId = mxUniqueId('mx-notification-title');\n readonly filter = signal<string>('all');\n /** Muda a cada minuto, para \"há 5 min\" se actualizar. */\n private readonly now = signal(new Date());\n\n readonly unread = computed(() => this.items().filter((n) => !n.read).length);\n protected readonly categories = computed(() => [\n ...new Set(\n this.items()\n .map((n) => n.category)\n .filter((c): c is string => !!c),\n ),\n ]);\n protected readonly visible = computed(() => {\n const f = this.filter();\n const list = [...this.items()].sort((a, b) => b.time.getTime() - a.time.getTime());\n if (f === 'unread') return list.filter((n) => !n.read);\n if (f !== 'all') return list.filter((n) => n.category === f);\n return list;\n });\n\n constructor() {\n const timer = setInterval(() => this.now.set(new Date()), 60_000);\n inject(DestroyRef).onDestroy(() => clearInterval(timer));\n let previous: Set<string | number> | null = null;\n effect(() => {\n const items = this.items();\n const ids = new Set(items.map((n) => n.id));\n if (previous && untracked(() => this.announce())) {\n const fresh = items.filter((n) => !n.read && !previous!.has(n.id));\n if (fresh.length)\n this.announcer.announce(\n fresh.length === 1\n ? untracked(() => this.msg().newOne(fresh[0].title))\n : untracked(() => this.msg().newMany(fresh.length)),\n );\n }\n previous = ids;\n });\n }\n\n protected relative(d: Date): string {\n return mxRelativeTime(d, this.now(), this.locale() ?? this.i18n().intlLocale, this.msg().now);\n }\n\n protected open(n: MxNotification<D>): void {\n if (!n.read && this.markReadOnOpen()) this.markRead.emit(n);\n this.opened.emit(n);\n }\n\n protected dismissItem(n: MxNotification<D>): void {\n this.dismiss.emit(n);\n this.announcer.announce(this.msg().removed(n.title));\n }\n}\n\n/**\n * Botão do sino com a contagem por ler. O nome inclui a contagem:\n * \"Notificações, 3 por ler\".\n *\n * ```html\n * <button mxNotificationBell [count]=\"porLer()\" [mxPopoverTrigger]=\"painel\"></button>\n * ```\n */\n@Component({\n selector: 'button[mxNotificationBell]',\n exportAs: 'mxNotificationBell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'mx-notification-bell',\n type: 'button',\n '[attr.aria-label]': 'count() ? i18n().notifications.bellCount(label() ?? i18n().notifications.title, count()) : (label() ?? i18n().notifications.title)',\n },\n template: `\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M6 16.5V11a6 6 0 1 1 12 0v5.5l1.5 2h-15l1.5-2z\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10 20.5a2 2 0 0 0 4 0\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n />\n </svg>\n @if (count()) {\n <span class=\"mx-notification-bell-count\" aria-hidden=\"true\">{{\n count() > max() ? max() + '+' : count()\n }}</span>\n }\n `,\n})\nexport class MxNotificationBell {\n readonly count = input(0);\n readonly max = input(99);\n readonly label = input<string>();\n protected readonly i18n = injectMxMessages();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { NgControl, Validators } from '@angular/forms';
|
|
|
10
10
|
*
|
|
11
11
|
* ```html
|
|
12
12
|
* <mx-form-field>
|
|
13
|
-
* <label mxLabel>Orçamento (
|
|
13
|
+
* <label mxLabel>Orçamento (US$)</label>
|
|
14
14
|
* <input type="range" mxSlider min="0" max="500" step="10" formControlName="orcamento" />
|
|
15
15
|
* </mx-form-field>
|
|
16
16
|
* ```
|
|
@@ -56,7 +56,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImpo
|
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
58
|
* Intervalo com dois cursores (mínimo e máximo), feito com dois `<input type="range">`
|
|
59
|
-
* nativos: cada cursor tem o seu teclado e é anunciado como "Preço, mínimo, 20
|
|
59
|
+
* nativos: cada cursor tem o seu teclado e é anunciado como "Preço, mínimo, 20 US$".
|
|
60
60
|
*
|
|
61
61
|
* ```html
|
|
62
62
|
* <mx-form-field>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxima-ui-core-slider.mjs","sources":["../../../projects/core/slider/slider.ts","../../../projects/core/slider/range-slider.ts","../../../projects/core/slider/muxima-ui-core-slider.ts"],"sourcesContent":["import { DestroyRef, Directive, OnInit, afterEveryRender, inject, input } from '@angular/core';\nimport { MX_FORM_FIELD_CONTROL, MxNativeControl } from '@muxima-ui/core/form-field';\n\n/**\n * Cursor de intervalo sobre o `<input type=\"range\">` nativo: setas, Page Up/Down,\n * Home e End funcionam como no navegador, e o valor é anunciado pelo leitor de ecrã.\n *\n * ```html\n * <mx-form-field>\n * <label mxLabel>Orçamento (mil Kz)</label>\n * <input type=\"range\" mxSlider min=\"0\" max=\"500\" step=\"10\" formControlName=\"orcamento\" />\n * </mx-form-field>\n * ```\n */\n@Directive({\n selector: 'input[type=range][mxSlider]',\n exportAs: 'mxSlider',\n providers: [{ provide: MX_FORM_FIELD_CONTROL, useExisting: MxSlider }],\n host: {\n class: 'mx-slider',\n '[attr.data-size]': 'size() === \"md\" ? null : size()',\n '(input)': 'paint()',\n },\n})\nexport class MxSlider extends MxNativeControl implements OnInit {\n /** Espessura da barra: sm 4 px, md 6 px, lg 8 px. */\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n constructor() {\n super();\n // O valor pode mudar por formulário ou atributo sem evento \"input\": repinta após cada render.\n afterEveryRender({ write: () => this.paint() });\n }\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit(): void {\n // setValue/patchValue escrevem no input sem evento nem render: repinta quando o valor muda.\n const sub = this.ngControl?.valueChanges?.subscribe(() => this.paint());\n if (sub) this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n\n protected paint(): void {\n const el = this.element as HTMLInputElement;\n const min = Number(el.min || 0);\n const max = Number(el.max || 100);\n const pct = max > min ? ((Number(el.value) - min) / (max - min)) * 100 : 0;\n el.style.setProperty('--mx-slider-fill', `${pct}%`);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n numberAttribute,\n signal,\n} from '@angular/core';\nimport { injectMxMessages } from '@muxima-ui/core/i18n';\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\nimport { MX_FORM_FIELD_CONTROL, MxFormField, MxFormFieldControl, mxUniqueId } from '@muxima-ui/core/form-field';\n\n/**\n * Intervalo com dois cursores (mínimo e máximo), feito com dois `<input type=\"range\">`\n * nativos: cada cursor tem o seu teclado e é anunciado como \"Preço, mínimo, 20 000 Kz\".\n *\n * ```html\n * <mx-form-field>\n * <label mxLabel>Preço</label>\n * <mx-range-slider formControlName=\"preco\" [min]=\"0\" [max]=\"100000\" [step]=\"1000\" [format]=\"kz\" />\n * </mx-form-field>\n * ```\n *\n * O valor é `[mínimo, máximo]`. Os cursores não se cruzam: ficam a pelo menos `minGap` um do outro.\n */\n@Component({\n selector: 'mx-range-slider',\n exportAs: 'mxRangeSlider',\n providers: [{ provide: MX_FORM_FIELD_CONTROL, useExisting: MxRangeSlider }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'mx-range-slider',\n '[attr.data-size]': 'size() === \"md\" ? null : size()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.data-invalid]': 'errorState() ? \"\" : null',\n '[attr.aria-label]': 'null',\n '[style.--mx-range-from]': 'fromPct() + \"%\"',\n '[style.--mx-range-to]': 'toPct() + \"%\"',\n },\n template: `\n <div class=\"mx-range-slider-track\" aria-hidden=\"true\"><div class=\"mx-range-slider-fill\"></div></div>\n <input\n type=\"range\"\n class=\"mx-range-slider-input\"\n [id]=\"controlId()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"low()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-labelledby]=\"labelledBy(lowId)\"\n [attr.aria-valuetext]=\"format()(low())\"\n [attr.aria-describedby]=\"field?.describedBy() ?? null\"\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\n (input)=\"onInput(0, $event)\"\n (blur)=\"onTouched()\"\n />\n <input\n type=\"range\"\n class=\"mx-range-slider-input\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"high()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-labelledby]=\"labelledBy(highId)\"\n [attr.aria-valuetext]=\"format()(high())\"\n [attr.aria-describedby]=\"field?.describedBy() ?? null\"\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\n (input)=\"onInput(1, $event)\"\n (blur)=\"onTouched()\"\n />\n <span class=\"mx-visually-hidden\" [id]=\"lowId\">{{ lowLabel() ?? i18n().rangeSlider.low }}</span>\n <span class=\"mx-visually-hidden\" [id]=\"highId\">{{ highLabel() ?? i18n().rangeSlider.high }}</span>\n @if (!field?.labelId()) {\n <span class=\"mx-visually-hidden\" [id]=\"nameId\">{{ ariaLabel() }}</span>\n }\n @if (showValues()) {\n <div class=\"mx-range-slider-values\" aria-hidden=\"true\">\n <span>{{ format()(low()) }}</span>\n <span>{{ format()(high()) }}</span>\n </div>\n }\n `,\n})\nexport class MxRangeSlider implements ControlValueAccessor, MxFormFieldControl {\n readonly value = model<[number, number] | null>(null);\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly step = input(1, { transform: numberAttribute });\n /** Distância mínima entre os dois cursores. */\n readonly minGap = input(0, { transform: numberAttribute });\n /** Texto de cada valor, para o leitor de ecrã e as etiquetas. */\n readonly format = input<(v: number) => string>((v) => String(v));\n /** Mostra os dois valores por baixo da barra. */\n readonly showValues = input(false, { transform: booleanAttribute });\n readonly lowLabel = input<string>();\n readonly highLabel = input<string>();\n protected readonly i18n = injectMxMessages();\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly id = input<string | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n protected readonly field = inject(MxFormField, { optional: true });\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly generatedId = mxUniqueId('mx-range');\n readonly controlId = computed(() => this.id() ?? this.generatedId);\n protected readonly lowId = mxUniqueId('mx-range-low');\n protected readonly highId = mxUniqueId('mx-range-high');\n protected readonly nameId = mxUniqueId('mx-range-name');\n private readonly formDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n\n protected readonly low = computed(() => this.value()?.[0] ?? this.min());\n protected readonly high = computed(() => this.value()?.[1] ?? this.max());\n private pct(v: number): number {\n const span = this.max() - this.min();\n return span > 0 ? ((v - this.min()) / span) * 100 : 0;\n }\n protected readonly fromPct = computed(() => this.pct(this.low()));\n protected readonly toPct = computed(() => this.pct(this.high()));\n\n private onChange: (value: [number, number] | null) => void = () => {};\n protected onTouched: () => void = () => {};\n\n constructor() {\n if (this.ngControl) this.ngControl.valueAccessor = this;\n }\n\n protected labelledBy(partId: string): string {\n return `${this.field?.labelId() ?? this.nameId} ${partId}`;\n }\n\n protected onInput(which: 0 | 1, event: Event): void {\n const el = event.target as HTMLInputElement;\n let v = Number(el.value);\n const gap = this.minGap();\n if (which === 0) v = Math.min(v, this.high() - gap);\n else v = Math.max(v, this.low() + gap);\n // o input nativo pode ter passado o outro cursor: repõe a posição\n el.value = String(v);\n const next: [number, number] = which === 0 ? [v, this.high()] : [this.low(), v];\n this.value.set(next);\n this.onChange(next);\n }\n\n // ---- MxFormFieldControl ----\n errorState(): boolean {\n if (this.invalid()) return true;\n const c = this.ngControl;\n return !!c && !!c.invalid && !!(c.touched || c.dirty);\n }\n isRequired(): boolean {\n return this.required() || !!this.ngControl?.control?.hasValidator?.(Validators.required);\n }\n\n // ---- ControlValueAccessor ----\n writeValue(value: [number, number] | null): void {\n this.value.set(value ? [value[0], value[1]] : null);\n }\n registerOnChange(fn: (value: [number, number] | null) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"muxima-ui-core-slider.mjs","sources":["../../../projects/core/slider/slider.ts","../../../projects/core/slider/range-slider.ts","../../../projects/core/slider/muxima-ui-core-slider.ts"],"sourcesContent":["import { DestroyRef, Directive, OnInit, afterEveryRender, inject, input } from '@angular/core';\nimport { MX_FORM_FIELD_CONTROL, MxNativeControl } from '@muxima-ui/core/form-field';\n\n/**\n * Cursor de intervalo sobre o `<input type=\"range\">` nativo: setas, Page Up/Down,\n * Home e End funcionam como no navegador, e o valor é anunciado pelo leitor de ecrã.\n *\n * ```html\n * <mx-form-field>\n * <label mxLabel>Orçamento (US$)</label>\n * <input type=\"range\" mxSlider min=\"0\" max=\"500\" step=\"10\" formControlName=\"orcamento\" />\n * </mx-form-field>\n * ```\n */\n@Directive({\n selector: 'input[type=range][mxSlider]',\n exportAs: 'mxSlider',\n providers: [{ provide: MX_FORM_FIELD_CONTROL, useExisting: MxSlider }],\n host: {\n class: 'mx-slider',\n '[attr.data-size]': 'size() === \"md\" ? null : size()',\n '(input)': 'paint()',\n },\n})\nexport class MxSlider extends MxNativeControl implements OnInit {\n /** Espessura da barra: sm 4 px, md 6 px, lg 8 px. */\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n constructor() {\n super();\n // O valor pode mudar por formulário ou atributo sem evento \"input\": repinta após cada render.\n afterEveryRender({ write: () => this.paint() });\n }\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit(): void {\n // setValue/patchValue escrevem no input sem evento nem render: repinta quando o valor muda.\n const sub = this.ngControl?.valueChanges?.subscribe(() => this.paint());\n if (sub) this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n\n protected paint(): void {\n const el = this.element as HTMLInputElement;\n const min = Number(el.min || 0);\n const max = Number(el.max || 100);\n const pct = max > min ? ((Number(el.value) - min) / (max - min)) * 100 : 0;\n el.style.setProperty('--mx-slider-fill', `${pct}%`);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n numberAttribute,\n signal,\n} from '@angular/core';\nimport { injectMxMessages } from '@muxima-ui/core/i18n';\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\nimport { MX_FORM_FIELD_CONTROL, MxFormField, MxFormFieldControl, mxUniqueId } from '@muxima-ui/core/form-field';\n\n/**\n * Intervalo com dois cursores (mínimo e máximo), feito com dois `<input type=\"range\">`\n * nativos: cada cursor tem o seu teclado e é anunciado como \"Preço, mínimo, 20 US$\".\n *\n * ```html\n * <mx-form-field>\n * <label mxLabel>Preço</label>\n * <mx-range-slider formControlName=\"preco\" [min]=\"0\" [max]=\"100000\" [step]=\"1000\" [format]=\"kz\" />\n * </mx-form-field>\n * ```\n *\n * O valor é `[mínimo, máximo]`. Os cursores não se cruzam: ficam a pelo menos `minGap` um do outro.\n */\n@Component({\n selector: 'mx-range-slider',\n exportAs: 'mxRangeSlider',\n providers: [{ provide: MX_FORM_FIELD_CONTROL, useExisting: MxRangeSlider }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'mx-range-slider',\n '[attr.data-size]': 'size() === \"md\" ? null : size()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.data-invalid]': 'errorState() ? \"\" : null',\n '[attr.aria-label]': 'null',\n '[style.--mx-range-from]': 'fromPct() + \"%\"',\n '[style.--mx-range-to]': 'toPct() + \"%\"',\n },\n template: `\n <div class=\"mx-range-slider-track\" aria-hidden=\"true\"><div class=\"mx-range-slider-fill\"></div></div>\n <input\n type=\"range\"\n class=\"mx-range-slider-input\"\n [id]=\"controlId()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"low()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-labelledby]=\"labelledBy(lowId)\"\n [attr.aria-valuetext]=\"format()(low())\"\n [attr.aria-describedby]=\"field?.describedBy() ?? null\"\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\n (input)=\"onInput(0, $event)\"\n (blur)=\"onTouched()\"\n />\n <input\n type=\"range\"\n class=\"mx-range-slider-input\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"high()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-labelledby]=\"labelledBy(highId)\"\n [attr.aria-valuetext]=\"format()(high())\"\n [attr.aria-describedby]=\"field?.describedBy() ?? null\"\n [attr.aria-invalid]=\"errorState() ? 'true' : null\"\n (input)=\"onInput(1, $event)\"\n (blur)=\"onTouched()\"\n />\n <span class=\"mx-visually-hidden\" [id]=\"lowId\">{{ lowLabel() ?? i18n().rangeSlider.low }}</span>\n <span class=\"mx-visually-hidden\" [id]=\"highId\">{{ highLabel() ?? i18n().rangeSlider.high }}</span>\n @if (!field?.labelId()) {\n <span class=\"mx-visually-hidden\" [id]=\"nameId\">{{ ariaLabel() }}</span>\n }\n @if (showValues()) {\n <div class=\"mx-range-slider-values\" aria-hidden=\"true\">\n <span>{{ format()(low()) }}</span>\n <span>{{ format()(high()) }}</span>\n </div>\n }\n `,\n})\nexport class MxRangeSlider implements ControlValueAccessor, MxFormFieldControl {\n readonly value = model<[number, number] | null>(null);\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly step = input(1, { transform: numberAttribute });\n /** Distância mínima entre os dois cursores. */\n readonly minGap = input(0, { transform: numberAttribute });\n /** Texto de cada valor, para o leitor de ecrã e as etiquetas. */\n readonly format = input<(v: number) => string>((v) => String(v));\n /** Mostra os dois valores por baixo da barra. */\n readonly showValues = input(false, { transform: booleanAttribute });\n readonly lowLabel = input<string>();\n readonly highLabel = input<string>();\n protected readonly i18n = injectMxMessages();\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly id = input<string | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n protected readonly field = inject(MxFormField, { optional: true });\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly generatedId = mxUniqueId('mx-range');\n readonly controlId = computed(() => this.id() ?? this.generatedId);\n protected readonly lowId = mxUniqueId('mx-range-low');\n protected readonly highId = mxUniqueId('mx-range-high');\n protected readonly nameId = mxUniqueId('mx-range-name');\n private readonly formDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n\n protected readonly low = computed(() => this.value()?.[0] ?? this.min());\n protected readonly high = computed(() => this.value()?.[1] ?? this.max());\n private pct(v: number): number {\n const span = this.max() - this.min();\n return span > 0 ? ((v - this.min()) / span) * 100 : 0;\n }\n protected readonly fromPct = computed(() => this.pct(this.low()));\n protected readonly toPct = computed(() => this.pct(this.high()));\n\n private onChange: (value: [number, number] | null) => void = () => {};\n protected onTouched: () => void = () => {};\n\n constructor() {\n if (this.ngControl) this.ngControl.valueAccessor = this;\n }\n\n protected labelledBy(partId: string): string {\n return `${this.field?.labelId() ?? this.nameId} ${partId}`;\n }\n\n protected onInput(which: 0 | 1, event: Event): void {\n const el = event.target as HTMLInputElement;\n let v = Number(el.value);\n const gap = this.minGap();\n if (which === 0) v = Math.min(v, this.high() - gap);\n else v = Math.max(v, this.low() + gap);\n // o input nativo pode ter passado o outro cursor: repõe a posição\n el.value = String(v);\n const next: [number, number] = which === 0 ? [v, this.high()] : [this.low(), v];\n this.value.set(next);\n this.onChange(next);\n }\n\n // ---- MxFormFieldControl ----\n errorState(): boolean {\n if (this.invalid()) return true;\n const c = this.ngControl;\n return !!c && !!c.invalid && !!(c.touched || c.dirty);\n }\n isRequired(): boolean {\n return this.required() || !!this.ngControl?.control?.hasValidator?.(Validators.required);\n }\n\n // ---- ControlValueAccessor ----\n writeValue(value: [number, number] | null): void {\n this.value.set(value ? [value[0], value[1]] : null);\n }\n registerOnChange(fn: (value: [number, number] | null) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|