@slotted/angular 0.1.0-beta.5 → 0.1.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/menu.json +12 -0
- package/docs/menu.md +2 -0
- package/docs/segmented-control.json +7 -11
- package/docs/segmented-control.md +1 -1
- package/docs/side-navigation.json +1 -0
- package/docs/side-navigation.md +1 -1
- package/docs/table.examples.md +2 -2
- package/docs/table.json +2 -2
- package/docs/tabs.json +4 -1
- package/docs/tabs.md +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs +1 -1
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +2 -2
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-button.mjs +12 -12
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +2 -2
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-color-picker.mjs +1 -1
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +2 -2
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-list.mjs +1 -1
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-kbd.mjs +4 -4
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
- package/fesm2022/slotted-angular-menu.mjs +12 -4
- package/fesm2022/slotted-angular-menu.mjs.map +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +2 -2
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-side-navigation.mjs +2 -2
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +4 -4
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +2 -2
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +3 -1
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +2 -2
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
- package/fesm2022/slotted-angular-toolbar.mjs +1 -1
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-menu.d.ts +11 -2
- package/types/slotted-angular-menu.d.ts.map +1 -1
- package/types/slotted-angular-table.d.ts +3 -1
- package/types/slotted-angular-table.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-filter-bar.mjs","sources":["../../filter-bar/src/filter-bar.constants.ts","../../filter-bar/src/filter-bar.ts","../../filter-bar/src/slotted-angular-filter-bar.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { TemplateRef } from '@angular/core';\nimport type { FilterDescriptor, FilterGroup, FilterKind } from '@slotted/core/filter';\n\nexport type FilterBarApply = 'live' | 'manual';\nexport type FilterBarSize = 'sm' | 'md' | 'lg';\nexport type FilterBarValueReason =\n 'pointer' | 'keyboard' | 'clear' | 'remove' | 'select' | 'submit' | 'programmatic';\nexport type FilterBarQueryReason = 'keyboard' | 'clear' | 'submit' | 'programmatic';\nexport type FilterBarPresetReason = 'select' | 'clear' | 'programmatic';\nexport type FilterBarOpenReason =\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'dismiss' | 'submit' | 'programmatic';\nexport type FilterBarRevealedReason = 'pointer' | 'keyboard' | 'programmatic';\n\n/** A value of a set field, with the word a reader sees for it. */\nexport interface FilterBarOption {\n value: string;\n label: string;\n}\n\n/**\n * One field a listing can be filtered by. `key` is what a rule names and what\n * `read(row, field)` receives; `kind` decides the operators and the operand\n * control, which is the same decision `table`'s typed filters make.\n */\nexport interface FilterBarField {\n key: string;\n label: string;\n kind: FilterKind;\n /**\n * Drawn before the field's name on its chip and in the add menu: a glyph\n * name from `@slotted/core/glyph`, or a template of the consumer's.\n */\n icon?: string | TemplateRef<unknown>;\n /** Narrows the operators the kind offers. */\n operators?: readonly string[];\n /** The operator a new rule starts with. Defaults to the kind's. */\n defaultOperator?: string;\n /**\n * Always in sight: a dashed pill while it holds no condition, a chip in the\n * same place once it does.\n */\n pinned?: boolean;\n /**\n * A field that always holds a rule: Clear returns it to `defaultValue`\n * rather than to nothing, and a rule without an operand refuses to be\n * applied or removed. A required field is pinned whether or not it says so.\n */\n required?: boolean;\n defaultValue?: FilterDescriptor | null;\n /** A heading the add menu groups the field under. */\n section?: string;\n /** Whether the global query searches this field. */\n searchable?: boolean;\n /** The values a `set` field offers. */\n options?: readonly FilterBarOption[];\n min?: number | string;\n max?: number | string;\n step?: number;\n}\n\n/** A saved view: a name and the tree it restores. */\nexport interface FilterBarPreset {\n key: string;\n label: string;\n value: FilterGroup | null;\n}\n\nexport const FILTER_BAR_DEFAULT_APPLY: FilterBarApply = 'live';\nexport const FILTER_BAR_DEFAULT_SIZE: FilterBarSize = 'md';\nexport const FILTER_BAR_DEFAULT_QUERY_DELAY = 320;\nexport const FILTER_BAR_DEFAULT_CHIP_LIMIT = 6;\n\nexport interface FilterBarDefaults {\n apply?: FilterBarApply;\n chipLimit?: number;\n queryDelay?: number;\n shortcut?: string | null;\n size?: FilterBarSize;\n}\n\nexport const FILTER_BAR_DEFAULTS_TOKEN = new InjectionToken<FilterBarDefaults>(\n 'slotted filter-bar defaults',\n { providedIn: 'root', factory: (): FilterBarDefaults => ({}) },\n);\n\n/**\n * An application decides once how its bars apply, how long the query waits,\n * how many chips show, and which key reaches the search. A bar that states any\n * of those itself still wins. Its words come from the language in force\n * (`provideSlotted`).\n */\nexport function provideFilterBarDefaults(defaults: FilterBarDefaults) {\n return { provide: FILTER_BAR_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectFilterBarDefaults(): FilterBarDefaults {\n return inject(FILTER_BAR_DEFAULTS_TOKEN);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n isPlainDate,\n isPlainDateTime,\n isPlainTime,\n parseISODate,\n parseISODateTime,\n parseISOTime,\n toISODate,\n toISODateTime,\n toISOTime,\n} from '@slotted/core/date';\nimport {\n defaultOperator as kindDefaultOperator,\n describeFilter,\n describeFilterGroup,\n emptyFilter,\n emptyFilterGroup,\n firstLevelRules,\n insertNodeAt,\n isFilterActive,\n isFilterGroup,\n normalizeFilterGroup,\n operandCount,\n operatorsFor,\n removeNodeAt,\n ruleFor,\n serializeFilterGroup,\n spokenOperator,\n updateNodeAt,\n withCondition,\n withGroupJoin,\n withoutRuleFor,\n withRuleFor,\n} from '@slotted/core/filter';\nimport type {\n FilterCondition,\n FilterDescriptor,\n FilterGroup,\n FilterJoin,\n FilterNode,\n FilterOperator,\n FilterPath,\n FilterRule,\n} from '@slotted/core/filter';\nimport { createRemovalFocus, createRovingTabindex } from '@slotted/core/focus';\nimport { filterBarMessages } from '@slotted/core/i18n';\nimport type {\n FamilyTranslator,\n FilterBarMessages,\n MessageSlots,\n PartialMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { SlButton, SlButtonStart, SlIconButton } from '@slotted/angular/button';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlDatePicker } from '@slotted/angular/date-picker';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport {\n SlDrawer,\n SlDrawerBody,\n SlDrawerClose,\n SlDrawerFooter,\n SlDrawerHeader,\n SlDrawerTitle,\n} from '@slotted/angular/drawer';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlKbd } from '@slotted/angular/kbd';\nimport {\n SlMenu,\n SlMenuGroup,\n SlMenuItem,\n SlMenuItemIcon,\n SlMenuRadioGroup,\n SlMenuTrigger,\n} from '@slotted/angular/menu';\nimport { SlMultiSelect, SlMultiSelectItem } from '@slotted/angular/multi-select';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport {\n SlPopover,\n SlPopoverBody,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n} from '@slotted/angular/popover';\nimport { SlSegment, SlSegmentedControl } from '@slotted/angular/segmented-control';\nimport { SlSelect, SlSelectItem } from '@slotted/angular/select';\nimport {\n SlTextField,\n SlTextFieldEnd,\n SlTextFieldInput,\n SlTextFieldStart,\n} from '@slotted/angular/text-field';\nimport { SlTimePicker } from '@slotted/angular/time-picker';\n\nimport {\n FILTER_BAR_DEFAULT_APPLY,\n FILTER_BAR_DEFAULT_CHIP_LIMIT,\n FILTER_BAR_DEFAULT_QUERY_DELAY,\n FILTER_BAR_DEFAULT_SIZE,\n injectFilterBarDefaults,\n type FilterBarApply,\n type FilterBarField,\n type FilterBarOpenReason,\n type FilterBarPreset,\n type FilterBarPresetReason,\n type FilterBarQueryReason,\n type FilterBarRevealedReason,\n type FilterBarSize,\n type FilterBarValueReason,\n} from './filter-bar.constants';\n\ntype Condition = FilterCondition<string, unknown>;\n\n/**\n * Every stop of the one toolbar, in DOM order: the arrows walk the pills, each\n * segment of each chip, more, add, clear and the actions, line after line. A\n * stop the stylesheet hides at this width is skipped by its visibility.\n */\nconst BAR_ITEMS = [\n 'summary',\n 'pill',\n 'chip-operator',\n 'chip-value',\n 'chip-remove',\n 'more',\n 'add',\n 'clear',\n 'reset',\n 'apply',\n]\n .map((part) => `[data-part='${part}']`)\n .join(', ');\n\nconst SEGMENTS = \"[data-part='chip-operator'], [data-part='chip-value'], [data-part='chip-remove']\";\n\n/** The bar's narrow breakpoint and the builder's sheet breakpoint, in rems — the stylesheet's. */\nconst NARROW_REM = 36;\n\nconst STICKY_TOP = '--slotted-page-sticky-top';\n\nlet counter = 0;\n\nfunction remToPx(element: Element, rem: number) {\n const size = parseFloat(\n element.ownerDocument.defaultView?.getComputedStyle(element.ownerDocument.documentElement)\n .fontSize ?? '16',\n );\n return rem * (Number.isFinite(size) ? size : 16);\n}\n\nfunction sameGroup(a: FilterGroup | null, b: FilterGroup | null) {\n return serializeFilterGroup(a) === serializeFilterGroup(b);\n}\n\nfunction fieldByKey(fields: readonly FilterBarField[], key: string) {\n return fields.find((field) => field.key === key);\n}\n\n/** The family's words in the language in force, with the bar's `messages` laid over them. */\nexport type FilterBarTranslator = FamilyTranslator<FilterBarMessages>;\n\n/**\n * A translator that calls the one an input holds at the moment it is read, so\n * an editor's template writes `t('key')` and follows both the input and a\n * change of language.\n */\nfunction follow(source: () => FilterBarTranslator): FilterBarTranslator {\n return ((key: string, slots?: MessageSlots) =>\n (source() as (key: string, slots?: MessageSlots) => string)(key, slots)) as FilterBarTranslator;\n}\n\n/** An operator's name, or the operator itself when the catalog names no such operator. */\nfunction operatorName(t: FilterBarTranslator, operator: string) {\n return operator in filterBarMessages.base.operators\n ? t(`operators.${operator as FilterOperator}`)\n : operator;\n}\n\n/**\n * A message's text on either side of one slot, for a sentence that holds a\n * control: the join chooser stands where `{join}` stands, in the order the\n * language writes it.\n */\nfunction aroundSlot(written: (mark: string) => string): [string, string] {\n const mark = '\\u0000';\n const [before = '', after = ''] = written(mark).split(mark);\n return [before.trim(), after.trim()];\n}\n\n/** The rule a field starts with: its default, else one empty condition on its default operator. */\nfunction blankRule(field: FilterBarField): FilterDescriptor {\n if (field.defaultValue) return field.defaultValue;\n const operator = field.defaultOperator ?? kindDefaultOperator(field.kind);\n return emptyFilter(field.kind, operator as never) as FilterDescriptor;\n}\n\n/**\n * A condition in the words a chip and a rule card write it with: the operator\n * as the sentence reads it, and the value — a list of more than two written as\n * its first two and a count, the whole list kept in `full` for the name and the\n * title.\n */\nfunction ruleWords(\n t: FilterBarTranslator,\n field: FilterBarField | undefined,\n filter: FilterDescriptor | null | undefined,\n): { operator: string; value: string; full: string; operands: number } {\n const kind = filter?.kind ?? field?.kind ?? 'text';\n const condition: Condition = (filter?.conditions[0] as Condition | undefined) ?? {\n operator: field ? (field.defaultOperator ?? kindDefaultOperator(field.kind)) : 'contains',\n };\n const operands = operandCount(condition.operator as FilterOperator);\n const operator = operatorName(t, spokenOperator(kind, condition));\n const write = (value: unknown) =>\n field?.options?.find((option) => option.value === value)?.label ?? String(value);\n const present = (value: unknown) =>\n value !== undefined &&\n value !== null &&\n value !== '' &&\n !(Array.isArray(value) && value.length === 0);\n if (operands === 0) return { operator, value: '', full: '', operands };\n if (kind === 'set') {\n const values = ((condition.value as readonly unknown[] | undefined) ?? []).map(write);\n const full = values.join(', ');\n const value =\n values.length > 2\n ? t('moreValues', { values: values.slice(0, 2).join(', '), count: values.length - 2 })\n : full;\n return { operator, value, full, operands };\n }\n if (operands === 2) {\n if (!present(condition.value) || !present(condition.end)) {\n return { operator, value: '', full: '', operands };\n }\n const range = `${write(condition.value)} – ${write(condition.end)}`;\n return { operator, value: range, full: range, operands };\n }\n const value = present(condition.value) ? write(condition.value) : '';\n return { operator, value, full: value, operands };\n}\n\nfunction countActive(group: FilterGroup | null): number {\n const active = normalizeFilterGroup(group);\n if (!active) return 0;\n let count = 0;\n const walk = (node: FilterNode) => {\n if (isFilterGroup(node)) node.rules.forEach(walk);\n else count += 1;\n };\n walk(active);\n return count;\n}\n\nfunction isEditable(element: Element | null) {\n if (!element) return false;\n const tag = element.tagName;\n return (\n tag === 'INPUT' ||\n tag === 'TEXTAREA' ||\n tag === 'SELECT' ||\n (element as HTMLElement).isContentEditable\n );\n}\n\n/** What a `slFilterBarOperand` template is handed for one operand. */\nexport interface FilterBarOperandContext {\n $implicit: FilterBarField;\n field: FilterBarField;\n operator: FilterOperator;\n index: 0 | 1;\n value: unknown;\n set: (value: unknown) => void;\n apply: () => void;\n label: string;\n size: FilterBarSize;\n}\n\n/**\n * Replaces the operand control of a field's rules. `slFilterBarOperand` names\n * the field, or `*` for every field. The template is rendered per rule and\n * never built for a closed surface.\n */\n@Directive({ selector: 'ng-template[slFilterBarOperand]', standalone: true })\nexport class SlFilterBarOperand {\n readonly field = input.required<string>({ alias: 'slFilterBarOperand' });\n readonly template = inject<TemplateRef<FilterBarOperandContext>>(TemplateRef);\n}\n\n/**\n * Writes this family's part name on a control another family's directive\n * owns. `slButton`, `slIconButton` and `slMenuTriggerFor` each write\n * `data-part` from their host metadata, which erases the one the template\n * wrote — the rule the briefing records for `toolbar`'s overflow control — so\n * the part is written back after the first render, where nothing writes over\n * it again.\n */\n@Directive({ selector: '[slFilterBarPart]', standalone: true })\nexport class SlFilterBarPart {\n readonly part = input.required<string>({ alias: 'slFilterBarPart' });\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n afterNextRender(() => this.host.nativeElement.setAttribute('data-part', this.part()));\n }\n}\n\n/** The consumer's own controls, drawn in the `end` slot. */\n@Directive({ selector: '[slFilterBarEnd]', standalone: true })\nexport class SlFilterBarEnd {}\n\n/** What every editor in the family reads from the bar. */\nexport interface FilterBarEnvironment {\n fields: () => readonly FilterBarField[];\n t: FilterBarTranslator;\n size: () => FilterBarSize;\n operandTemplates: () => readonly SlFilterBarOperand[];\n}\n\n/**\n * One condition — the operator and its operands — with the operand control the\n * kind draws, the same choice `table`'s typed filters make, or the consumer's\n * own template.\n */\n@Component({\n selector: '[slFilterBarCondition]',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n SlDatePicker,\n SlDateTimePicker,\n SlMultiSelect,\n SlMultiSelectItem,\n SlNumberField,\n SlNumberFieldInput,\n SlSelect,\n SlSelectItem,\n SlTextField,\n SlTextFieldInput,\n SlTimePicker,\n ],\n template: `\n @if (withOperator()) {\n <div data-part=\"operator\" [attr.id]=\"ids()?.operator ?? null\">\n <sl-select\n [size]=\"size()\"\n [fullWidth]=\"true\"\n [invalid]=\"invalid() ? true : undefined\"\n [items]=\"operatorItems()\"\n [attr.aria-label]=\"t('operator')\"\n [value]=\"condition().operator\"\n (valueChange)=\"setOperator($any($event))\"\n >\n @for (operator of operators(); track operator) {\n <sl-select-item [value]=\"operator\">{{ operatorName(operator) }}</sl-select-item>\n }\n </sl-select>\n </div>\n }\n <div data-part=\"operand\" [attr.id]=\"ids()?.operand ?? null\">\n @for (slot of slots(); track slot) {\n @if (customTemplate(); as custom) {\n <ng-container\n [ngTemplateOutlet]=\"custom.template\"\n [ngTemplateOutletContext]=\"context(slot)\"\n />\n } @else {\n @switch (field().kind) {\n @case ('number') {\n <div slNumberField [size]=\"size()\">\n <input\n slNumberFieldInput\n [value]=\"$any(operand(slot)) ?? null\"\n [attr.aria-label]=\"operandLabel(slot)\"\n [attr.placeholder]=\"operandLabel(slot)\"\n [attr.min]=\"numberBound(field().min)\"\n [attr.max]=\"numberBound(field().max)\"\n [attr.step]=\"field().step ?? null\"\n (valueChange)=\"setOperand(slot, $event.value)\"\n (keydown.enter)=\"apply()\"\n />\n </div>\n }\n @case ('date') {\n <div\n slDatePicker\n [size]=\"size()\"\n [value]=\"day(operand(slot))\"\n [min]=\"day(field().min) ?? undefined\"\n [max]=\"day(field().max) ?? undefined\"\n [attr.aria-label]=\"operandLabel(slot)\"\n (valueChange)=\"setOperand(slot, isoDay($event.value))\"\n (keydown.enter)=\"apply()\"\n ></div>\n }\n @case ('time') {\n <div\n slTimePicker\n [size]=\"size()\"\n [value]=\"time(operand(slot))\"\n [attr.aria-label]=\"operandLabel(slot)\"\n (valueChange)=\"setOperand(slot, isoTime($event.value))\"\n (keydown.enter)=\"apply()\"\n ></div>\n }\n @case ('datetime') {\n <div\n slDateTimePicker\n [size]=\"size()\"\n [value]=\"dateTime(operand(slot))\"\n [attr.aria-label]=\"operandLabel(slot)\"\n (valueChange)=\"setOperand(slot, isoDateTime($event.value))\"\n (keydown.enter)=\"apply()\"\n ></div>\n }\n @case ('boolean') {\n <sl-select\n [size]=\"size()\"\n [fullWidth]=\"true\"\n [items]=\"truths\"\n [attr.aria-label]=\"operandLabel(slot)\"\n [value]=\"operand(slot) === true ? 'true' : operand(slot) === false ? 'false' : null\"\n (valueChange)=\"setOperand(slot, $event === 'true')\"\n >\n <sl-select-item value=\"true\">true</sl-select-item>\n <sl-select-item value=\"false\">false</sl-select-item>\n </sl-select>\n }\n @case ('set') {\n <sl-multi-select\n [size]=\"size()\"\n [items]=\"field().options ?? []\"\n [placeholder]=\"operandLabel(slot)\"\n [attr.aria-label]=\"operandLabel(slot)\"\n [value]=\"$any(operand(slot)) ?? []\"\n (valueChange)=\"setOperand(slot, [...$event])\"\n >\n @for (option of field().options ?? []; track option.value) {\n <sl-multi-select-item [value]=\"option.value\" [label]=\"option.label\" />\n }\n </sl-multi-select>\n }\n @default {\n <div slTextField [size]=\"size()\">\n <input\n slTextFieldInput\n [value]=\"$any(operand(slot)) ?? ''\"\n [attr.aria-label]=\"operandLabel(slot)\"\n [attr.placeholder]=\"operandLabel(slot)\"\n (valueChange)=\"setOperand(slot, $event.value)\"\n (keydown.enter)=\"apply()\"\n />\n </div>\n }\n }\n }\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: contents' },\n})\nexport class SlFilterBarCondition {\n readonly field = input.required<FilterBarField>();\n readonly condition = input.required<Condition>();\n /** The bar's words, which the condition speaks in. */\n readonly translator = input.required<FilterBarTranslator>();\n readonly size = input.required<FilterBarSize>();\n readonly operandTemplates = input<readonly SlFilterBarOperand[]>([]);\n /** Draws the operator control. A chip's value popover leaves it to the chip's operator segment. */\n readonly withOperator = input(true, { transform: booleanAttribute });\n /** The rule is invalid: the operator select says so itself, edge and ring. */\n readonly invalid = input(false, { transform: booleanAttribute });\n /** Ids for the two parts, which a rule card's sentence names in `aria-controls`. */\n readonly ids = input<{ operator: string; operand: string } | undefined>(undefined);\n readonly applyRequest = output<void>();\n readonly conditionChange = output<Condition>();\n\n protected readonly truths = [\n { label: 'true', value: 'true' },\n { label: 'false', value: 'false' },\n ];\n\n protected readonly operators = computed(\n () => this.field().operators ?? (operatorsFor(this.field().kind) as readonly string[]),\n );\n protected readonly operatorItems = computed(() =>\n this.operators().map((operator) => ({ label: this.operatorName(operator), value: operator })),\n );\n protected readonly slots = computed<readonly (0 | 1)[]>(() => {\n const operands = operandCount(this.condition().operator as FilterOperator);\n return operands === 0 ? [] : operands === 1 ? [0] : [0, 1];\n });\n protected readonly customTemplate = computed(() => {\n const key = this.field().key;\n const templates = this.operandTemplates();\n return (\n templates.find((entry) => entry.field() === key) ??\n templates.find((entry) => entry.field() === '*')\n );\n });\n\n protected readonly t = follow(this.translator);\n\n operatorName(operator: string) {\n return operatorName(this.t, operator);\n }\n\n protected operandLabel(slot: 0 | 1) {\n if (this.slots().length < 2) return this.t('value');\n return slot === 0 ? this.t('from') : this.t('to');\n }\n\n protected operand(slot: 0 | 1): unknown {\n const condition = this.condition();\n return (slot === 0 ? condition.value : condition.end) ?? null;\n }\n\n protected numberBound(value: number | string | undefined) {\n return typeof value === 'number' ? value : null;\n }\n\n protected day = (value: unknown) => (value ? parseISODate(String(value)) : null);\n protected time = (value: unknown) => (value ? parseISOTime(String(value)) : null);\n protected dateTime = (value: unknown) => (value ? parseISODateTime(String(value)) : null);\n protected isoDay = (value: unknown) => (isPlainDate(value) ? toISODate(value) : null);\n protected isoTime = (value: unknown) => (isPlainTime(value) ? toISOTime(value, 'minute') : null);\n protected isoDateTime = (value: unknown) =>\n isPlainDateTime(value) ? toISODateTime(value) : null;\n\n protected setOperator(operator: string) {\n const condition = this.condition();\n const before = operandCount(condition.operator as FilterOperator);\n const after = operandCount(operator as FilterOperator);\n /* An operand the new operator still takes survives the change. */\n this.conditionChange.emit({\n operator,\n ...(after >= 1 && before >= 1 ? { value: condition.value } : {}),\n ...(after === 2 && before === 2 ? { end: condition.end } : {}),\n });\n }\n\n protected setOperand(slot: 0 | 1, value: unknown) {\n const condition = this.condition();\n this.conditionChange.emit(slot === 0 ? { ...condition, value } : { ...condition, end: value });\n }\n\n protected apply() {\n this.applyRequest.emit();\n }\n\n protected context(slot: 0 | 1): FilterBarOperandContext {\n const field = this.field();\n return {\n $implicit: field,\n apply: () => this.apply(),\n field,\n index: slot,\n label: this.operandLabel(slot),\n operator: this.condition().operator as FilterOperator,\n set: (value) => this.setOperand(slot, value),\n size: this.size(),\n value: this.operand(slot),\n };\n }\n}\n\n/**\n * One rule row in the builder: its sentence, field, operator, operand, remove.\n * The sentence heads the card the stylesheet draws while the builder is\n * narrow, and pressing it expands the card.\n */\n@Component({\n selector: '[slFilterBarRule]',\n standalone: true,\n imports: [SlFilterBarCondition, SlGlyph, SlIcon, SlSelect, SlSelectItem],\n template: `\n <button\n data-part=\"rule-summary\"\n type=\"button\"\n [attr.aria-expanded]=\"isExpanded()\"\n [attr.aria-controls]=\"id + '-field ' + id + '-operator ' + id + '-operand'\"\n (click)=\"expandedChange.emit(isExpanded() ? null : key())\"\n >\n <span data-sentence\n ><span data-field>{{ label() }}</span\n >&ngsp;<span data-operator>{{ words().operator }}</span>\n @if (words().operands > 0) {\n &ngsp;<span data-value>{{ words().value || t('noValue') }}</span>\n }\n </span>\n <span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n <div data-part=\"field\" [id]=\"id + '-field'\">\n <sl-select\n [size]=\"size()\"\n [fullWidth]=\"true\"\n [invalid]=\"invalid() || !field() ? true : undefined\"\n [items]=\"fieldItems()\"\n [attr.aria-label]=\"t('field')\"\n [value]=\"rule().field\"\n (valueChange)=\"changeField($any($event))\"\n >\n @for (entry of fields(); track entry.key) {\n <sl-select-item [value]=\"entry.key\">{{ entry.label }}</sl-select-item>\n }\n </sl-select>\n </div>\n @if (field(); as known) {\n <div\n slFilterBarCondition\n [field]=\"known\"\n [condition]=\"condition()\"\n [translator]=\"translator()\"\n [size]=\"size()\"\n [operandTemplates]=\"operandTemplates()\"\n [ids]=\"{ operator: id + '-operator', operand: id + '-operand' }\"\n [invalid]=\"invalid()\"\n (conditionChange)=\"changeCondition($event)\"\n (applyRequest)=\"applyRequest.emit()\"\n ></div>\n } @else {\n <div data-part=\"operator\" [id]=\"id + '-operator'\"></div>\n <div data-part=\"operand\" [id]=\"id + '-operand'\"></div>\n }\n @if (removable()) {\n <button\n data-part=\"remove\"\n type=\"button\"\n [attr.aria-label]=\"t('removeRule')\"\n (click)=\"removeRequest.emit()\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n } @else {\n <span></span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'rule',\n '[attr.data-kind]': 'field()?.kind ?? null',\n '[attr.data-operands]': 'operands()',\n '[attr.data-invalid]': 'invalid() || !field() ? \"\" : null',\n '[attr.data-expanded]': 'isExpanded() ? \"\" : null',\n },\n})\nexport class SlFilterBarRule {\n readonly rule = input.required<FilterRule>();\n readonly fields = input.required<readonly FilterBarField[]>();\n /** The bar's words, which the rule speaks in. */\n readonly translator = input.required<FilterBarTranslator>();\n readonly size = input.required<FilterBarSize>();\n readonly operandTemplates = input<readonly SlFilterBarOperand[]>([]);\n readonly removable = input(true, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n /** The rule's path inside the root, which names its card. */\n readonly path = input<FilterPath>([]);\n /** The one card open in the builder, by its path joined with dots. */\n readonly expanded = input<string | null>(null);\n readonly ruleChange = output<FilterRule>();\n readonly removeRequest = output<void>();\n readonly applyRequest = output<void>();\n readonly expandedChange = output<string | null>();\n\n protected readonly id = `slotted-filter-bar-rule-${(counter += 1)}`;\n protected readonly t = follow(this.translator);\n protected readonly key = computed(() => this.path().join('.'));\n protected readonly isExpanded = computed(() => this.expanded() === this.key());\n protected readonly field = computed(() => fieldByKey(this.fields(), this.rule().field));\n protected readonly condition = computed<Condition>(() => {\n const field = this.field();\n return (\n this.rule().filter.conditions[0] ?? {\n operator: field ? (field.defaultOperator ?? kindDefaultOperator(field.kind)) : 'contains',\n }\n );\n });\n protected readonly operands = computed(() =>\n this.field() ? operandCount(this.condition().operator as FilterOperator) : 0,\n );\n protected readonly fieldItems = computed(() =>\n this.fields().map((entry) => ({ label: entry.label, value: entry.key })),\n );\n protected readonly words = computed(() => ruleWords(this.t, this.field(), this.rule().filter));\n protected readonly label = computed(\n () => this.field()?.label ?? this.t('unknownField', { field: this.rule().field }),\n );\n\n protected changeField(key: string) {\n const next = fieldByKey(this.fields(), key);\n if (!next) return;\n this.ruleChange.emit({ field: key, filter: blankRule(next) });\n }\n\n protected changeCondition(condition: Condition) {\n const rule = this.rule();\n this.ruleChange.emit({\n field: rule.field,\n filter: withCondition(rule.filter, 0, condition as never),\n });\n }\n}\n\n/**\n * A group: its join, its rules and groups in order, and the controls that grow\n * it. Recursive, so a group holds a group; the depth is on the element for the\n * rail the stylesheet draws.\n */\n@Component({\n selector: 'fieldset[slFilterBarGroup]',\n standalone: true,\n imports: [\n forwardRef(() => SlFilterBarGroup),\n SlButton,\n SlButtonStart,\n SlFilterBarPart,\n SlFilterBarRule,\n SlGlyph,\n SlIcon,\n SlIconButton,\n SlSegment,\n SlSegmentedControl,\n ],\n template: `\n <legend>{{ t('matches', { join: joinWord() }) }}</legend>\n <div data-part=\"join\">\n @if (aroundJoin()[0]) {\n <span>{{ aroundJoin()[0] }}</span>\n }\n <div\n slSegmentedControl\n size=\"sm\"\n [attr.aria-label]=\"t('match')\"\n [value]=\"group().join\"\n (valueChange)=\"setJoin($event.value ?? 'and')\"\n >\n <label slSegment value=\"and\">{{ t('matchAll') }}</label>\n <label slSegment value=\"or\">{{ t('matchAny') }}</label>\n </div>\n @if (aroundJoin()[1]) {\n <span>{{ aroundJoin()[1] }}</span>\n }\n @if (path().length > 0) {\n <button\n slIconButton\n slFilterBarPart=\"remove-group\"\n type=\"button\"\n tone=\"secondary\"\n variant=\"ghost\"\n [size]=\"buttonSize()\"\n [attr.aria-label]=\"t('removeGroup')\"\n [attr.title]=\"t('removeGroup')\"\n (click)=\"rootChange.emit(removeNodeAt(root(), path()))\"\n >\n <span slIcon><svg slGlyph name=\"trash\"></svg></span>\n </button>\n }\n </div>\n <div data-part=\"rules\">\n @for (node of group().rules; track $index) {\n <span data-part=\"conjunction\">{{\n $index === 0 ? t('where') : t(group().join === 'and' ? 'joins.and' : 'joins.or')\n }}</span>\n @if (isGroup(node)) {\n <fieldset\n slFilterBarGroup\n [group]=\"$any(node)\"\n [path]=\"childPath($index)\"\n [root]=\"root()\"\n [fields]=\"fields()\"\n [translator]=\"translator()\"\n [size]=\"size()\"\n [operandTemplates]=\"operandTemplates()\"\n [expanded]=\"expanded()\"\n (expandedChange)=\"expandedChange.emit($event)\"\n (rootChange)=\"rootChange.emit($event)\"\n (applyRequest)=\"applyRequest.emit()\"\n ></fieldset>\n } @else {\n <div\n slFilterBarRule\n [rule]=\"$any(node)\"\n [path]=\"childPath($index)\"\n [fields]=\"fields()\"\n [translator]=\"translator()\"\n [size]=\"size()\"\n [operandTemplates]=\"operandTemplates()\"\n [removable]=\"!isRequired($any(node))\"\n [expanded]=\"expanded()\"\n (expandedChange)=\"expandedChange.emit($event)\"\n (ruleChange)=\"replace($index, $event)\"\n (removeRequest)=\"remove($index)\"\n (applyRequest)=\"applyRequest.emit()\"\n ></div>\n }\n }\n </div>\n <div data-part=\"actions\">\n <button\n slButton\n slFilterBarPart=\"add-rule\"\n type=\"button\"\n tone=\"secondary\"\n [variant]=\"path().length === 0 ? 'outline' : 'ghost'\"\n [size]=\"buttonSize()\"\n [disabled]=\"!firstField()\"\n (click)=\"addRule()\"\n >\n <span slButtonStart\n ><span slIcon><svg slGlyph name=\"plus\"></svg></span\n ></span>\n {{ t('addRule') }}\n </button>\n <button\n slButton\n slFilterBarPart=\"add-group\"\n type=\"button\"\n tone=\"secondary\"\n [variant]=\"path().length === 0 ? 'outline' : 'ghost'\"\n [size]=\"buttonSize()\"\n [disabled]=\"!firstField()\"\n (click)=\"addGroup()\"\n >\n <span slButtonStart\n ><span slIcon><svg slGlyph name=\"plus\"></svg></span\n ></span>\n {{ t('addGroup') }}\n </button>\n @if (path().length === 0) {\n <ng-content></ng-content>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'group',\n '[attr.data-depth]': 'path().length',\n },\n})\nexport class SlFilterBarGroup {\n readonly group = input.required<FilterGroup>();\n readonly path = input<FilterPath>([]);\n readonly root = input.required<FilterGroup>();\n readonly fields = input.required<readonly FilterBarField[]>();\n /** The bar's words, which the group speaks in. */\n readonly translator = input.required<FilterBarTranslator>();\n readonly size = input.required<FilterBarSize>();\n readonly operandTemplates = input<readonly SlFilterBarOperand[]>([]);\n /** The one rule card open in the builder, by its path joined with dots. */\n readonly expanded = input<string | null>(null);\n readonly rootChange = output<FilterGroup>();\n readonly applyRequest = output<void>();\n readonly expandedChange = output<string | null>();\n\n protected readonly t = follow(this.translator);\n protected readonly joinWord = computed(() =>\n this.group().join === 'and' ? this.t('matchAll') : this.t('matchAny'),\n );\n /** The words of `matches` before and after the join chooser, which stands in its `{join}`. */\n protected readonly aroundJoin = computed(() => aroundSlot((join) => this.t('matches', { join })));\n protected readonly removeNodeAt = removeNodeAt;\n protected readonly firstField = computed(() => this.fields()[0]);\n protected readonly buttonSize = computed(() => (this.size() === 'lg' ? 'md' : 'sm'));\n\n protected isGroup(node: FilterNode) {\n return isFilterGroup(node);\n }\n protected isRequired(rule: FilterRule) {\n return fieldByKey(this.fields(), rule.field)?.required === true;\n }\n protected childPath(index: number): FilterPath {\n return [...this.path(), index];\n }\n protected setJoin(join: string) {\n this.rootChange.emit(withGroupJoin(this.root(), this.path(), join as FilterJoin));\n }\n protected replace(index: number, rule: FilterRule) {\n this.rootChange.emit(updateNodeAt(this.root(), this.childPath(index), rule));\n }\n protected remove(index: number) {\n this.rootChange.emit(removeNodeAt(this.root(), this.childPath(index)));\n }\n /* A rule just added opens as an expanded card, where its three controls are. */\n protected addRule() {\n const field = this.firstField();\n if (!field) return;\n const at = this.group().rules.length;\n this.rootChange.emit(\n insertNodeAt(this.root(), this.path(), { field: field.key, filter: blankRule(field) }),\n );\n this.expandedChange.emit([...this.path(), at].join('.'));\n }\n protected addGroup() {\n const field = this.firstField();\n if (!field) return;\n const at = this.group().rules.length;\n this.rootChange.emit(\n insertNodeAt(this.root(), this.path(), {\n join: this.group().join === 'and' ? 'or' : 'and',\n rules: [{ field: field.key, filter: blankRule(field) }],\n }),\n );\n this.expandedChange.emit([...this.path(), at, 0].join('.'));\n }\n}\n\n/**\n * One rule in a popover. Under `live` every change is requested at once — a\n * text or number operand after `queryDelay`, so a query does not fire per\n * keystroke — and Done closes; under `manual` the change goes to the draft the\n * same way. Clear removes the rule, which a required field refuses.\n */\n@Component({\n selector: '[slFilterBarRuleEditor]',\n standalone: true,\n imports: [SlButton, SlFilterBarCondition],\n template: `\n <div\n slFilterBarCondition\n [field]=\"field()\"\n [condition]=\"condition()\"\n [translator]=\"translator()\"\n [size]=\"size()\"\n [operandTemplates]=\"operandTemplates()\"\n [withOperator]=\"withOperator()\"\n [invalid]=\"invalid()\"\n (conditionChange)=\"change($event)\"\n (applyRequest)=\"done()\"\n ></div>\n <div data-part=\"actions\">\n <button\n slButton\n type=\"button\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n [disabled]=\"field().required === true\"\n (click)=\"clear()\"\n >\n {{ t('clearRule') }}\n </button>\n <button slButton type=\"button\" size=\"sm\" (click)=\"done()\">{{ t('done') }}</button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'filter-bar',\n 'data-part': 'rule',\n '[attr.data-kind]': 'field().kind',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n },\n})\nexport class SlFilterBarRuleEditor {\n readonly field = input.required<FilterBarField>();\n readonly current = input<FilterDescriptor | undefined>(undefined);\n /** The bar's words, which the editor speaks in. */\n readonly translator = input.required<FilterBarTranslator>();\n readonly size = input.required<FilterBarSize>();\n readonly operandTemplates = input<readonly SlFilterBarOperand[]>([]);\n readonly queryDelay = input(0);\n readonly invalid = input(false, { transform: booleanAttribute });\n /** Draws the operator control: a chip's value popover leaves it to the chip. */\n readonly withOperator = input(true, { transform: booleanAttribute });\n readonly ruleChange = output<FilterDescriptor | null>();\n readonly doneRequest = output<void>();\n\n protected readonly t = follow(this.translator);\n private readonly destroyRef = inject(DestroyRef);\n private readonly local = signal<FilterDescriptor | null>(null);\n private timer: ReturnType<typeof setTimeout> | undefined;\n\n protected readonly draft = computed(\n () => this.local() ?? this.current() ?? blankRule(this.field()),\n );\n protected readonly condition = computed<Condition>(\n () =>\n this.draft().conditions[0] ?? {\n operator: this.field().defaultOperator ?? kindDefaultOperator(this.field().kind),\n },\n );\n\n constructor() {\n /* A change made elsewhere — the chip's operator segment — reaches the\n editor unless a keystroke is still waiting. */\n effect(() => {\n this.current();\n untracked(() => {\n if (this.timer === undefined) this.local.set(null);\n });\n });\n this.destroyRef.onDestroy(() => clearTimeout(this.timer));\n }\n\n protected change(condition: Condition) {\n const next = { ...this.draft(), conditions: [condition] } as FilterDescriptor;\n this.local.set(next);\n clearTimeout(this.timer);\n this.timer = undefined;\n const kind = this.field().kind;\n const debounced = (kind === 'text' || kind === 'number') && this.queryDelay() > 0;\n if (!debounced) {\n this.ruleChange.emit(next);\n return;\n }\n this.timer = setTimeout(() => {\n this.timer = undefined;\n this.ruleChange.emit(next);\n }, this.queryDelay());\n }\n\n protected done() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = undefined;\n this.ruleChange.emit(this.draft());\n }\n this.doneRequest.emit();\n }\n\n protected clear() {\n clearTimeout(this.timer);\n this.timer = undefined;\n this.local.set(null);\n this.ruleChange.emit(null);\n this.doneRequest.emit();\n }\n}\n\n/** One field's condition in the bar, as its chip draws it. */\ninterface BarChip {\n readonly kind: 'chip';\n readonly id: string;\n readonly key: string;\n readonly field: FilterBarField | undefined;\n readonly filter: FilterDescriptor;\n readonly label: string;\n /** The group's name: the field and its sentence, and whether it is incomplete. */\n readonly name: string;\n /** The operator as the sentence reads it. */\n readonly operator: string;\n /** The condition's own operator, which the operator menu checks. */\n readonly condition: string;\n readonly operators: readonly string[];\n readonly operands: number;\n readonly value: string;\n readonly valueName: string;\n readonly valueTitle: string | null;\n readonly hasValue: boolean;\n readonly pinned: boolean;\n readonly incomplete: boolean;\n readonly folded: boolean;\n readonly unknown: boolean;\n readonly removable: boolean;\n}\n\n/** A pinned field without a condition. */\ninterface BarPill {\n readonly kind: 'pill';\n readonly id: string;\n readonly field: FilterBarField;\n}\n\n/** A group at the first level, written as one sentence that opens the builder. */\ninterface BarGroup {\n readonly kind: 'group';\n readonly id: string;\n readonly path: FilterPath;\n readonly words: string;\n readonly folded: boolean;\n}\n\ntype BarMember = BarChip | BarPill | BarGroup;\n\n/**\n * A condition the reader started — from `add` or from a pinned field's pill —\n * and whose operand is not there yet. It is the bar's own and not the value's:\n * the engine would drop it as inactive anyway, so it is drawn as an incomplete\n * chip and enters the value the moment it is complete.\n */\ninterface PendingRule {\n key: string;\n filter: FilterDescriptor;\n /** Where an applied rule stood before it lost its operand, so its chip keeps its place. */\n at?: number;\n}\n\n/**\n * A bar above a listing that edits one value: a tree of conditions over the\n * listing's fields, whose leaves are the descriptor `table` edits in a column\n * header. The bar draws the first level — a search field, a pill per pinned\n * field without a condition, a chip of segments per condition — and opens a\n * drawer on the whole tree.\n *\n * The family applies nothing. It reports the tree and the query, and\n * `createFilterGroupPredicate` and `createSearchPredicate` in\n * `@slotted/core/filter` are what a consumer applies to its own rows.\n */\n@Component({\n selector: '[slFilterBar]',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlButtonStart,\n SlDrawer,\n SlDrawerBody,\n SlDrawerClose,\n SlDrawerFooter,\n SlDrawerHeader,\n SlDrawerTitle,\n SlFilterBarGroup,\n SlFilterBarPart,\n SlFilterBarRuleEditor,\n SlGlyph,\n SlIcon,\n SlIconButton,\n SlKbd,\n SlMenu,\n SlMenuGroup,\n SlMenuItem,\n SlMenuItemIcon,\n SlMenuRadioGroup,\n SlMenuTrigger,\n SlPopover,\n SlPopoverContent,\n SlPopoverBody,\n SlPopoverLayer,\n SlPopoverTrigger,\n SlSelect,\n SlSelectItem,\n SlTextField,\n SlTextFieldEnd,\n SlTextFieldStart,\n SlTextFieldInput,\n ],\n template: `\n <ng-template #fieldIcon let-icon>\n @if (isTemplate(icon)) {\n <span slIcon><ng-container [ngTemplateOutlet]=\"icon\" /></span>\n } @else if (icon) {\n <span slIcon><svg slGlyph [name]=\"icon\"></svg></span>\n }\n </ng-template>\n\n <div data-part=\"frame\">\n <div data-part=\"search\">\n <div slTextField [size]=\"sizeValue()\" [clearable]=\"true\">\n <span slTextFieldStart\n ><span slIcon><svg slGlyph name=\"search\"></svg></span\n ></span>\n <input\n #search\n slTextFieldInput\n type=\"search\"\n [value]=\"shownQuery()\"\n [attr.aria-label]=\"t('search')\"\n [attr.placeholder]=\"t('search')\"\n [disabled]=\"disabled()\"\n (valueChange)=\"typeQuery($event)\"\n (keydown)=\"onSearchKeyDown($event)\"\n />\n @if (shortcutValue(); as key) {\n <span slTextFieldEnd\n ><kbd slKbd size=\"sm\">{{ key }}</kbd></span\n >\n }\n </div>\n </div>\n\n <div\n #barRow\n data-part=\"bar\"\n role=\"toolbar\"\n [attr.aria-label]=\"t('filters')\"\n [attr.aria-description]=\"readOnly() ? t('readOnly') : null\"\n [attr.data-revealed]=\"isRevealed() ? '' : null\"\n >\n <button\n slButton\n slFilterBarPart=\"summary\"\n type=\"button\"\n tone=\"secondary\"\n variant=\"outline\"\n aria-haspopup=\"dialog\"\n [size]=\"sizeValue()\"\n [disabled]=\"disabled()\"\n (click)=\"openBuilderAt('pointer', $event)\"\n >\n <span slButtonStart\n ><span slIcon><svg slGlyph name=\"funnel\"></svg></span\n ></span>\n <span>{{ t('summary', { count: activeCount() }) }}</span>\n </button>\n\n @for (member of members(); track member.id) {\n @if (pillOf(member); as pill) {\n <button\n data-part=\"pill\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.data-field]=\"pill.field.key\"\n [attr.data-invalid]=\"invalid() === pill.field.key ? '' : null\"\n [attr.aria-invalid]=\"invalid() === pill.field.key ? 'true' : null\"\n [disabled]=\"disabled()\"\n (click)=\"start(pill.field.key, $event)\"\n >\n <span slIcon><svg slGlyph name=\"plus\"></svg></span><span>{{ pill.field.label }}</span>\n </button>\n }\n @if (chipOf(member); as chip) {\n <div\n data-part=\"chip\"\n role=\"group\"\n [attr.aria-label]=\"chip.name\"\n [attr.data-field]=\"chip.key\"\n [attr.data-operands]=\"chip.operands\"\n [attr.data-pinned]=\"chip.pinned ? '' : null\"\n [attr.data-incomplete]=\"chip.incomplete ? '' : null\"\n [attr.data-folded]=\"chip.folded ? '' : null\"\n [attr.data-invalid]=\"chip.unknown || invalid() === chip.key ? '' : null\"\n (keydown)=\"onChipKeyDown($event, chip.key)\"\n >\n <span data-part=\"chip-field\"\n ><ng-container\n [ngTemplateOutlet]=\"fieldIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: chip.field?.icon }\"\n /><span>{{ chip.label }}</span></span\n >\n @if (readOnly() || chip.unknown) {\n <button\n data-part=\"chip-operator\"\n type=\"button\"\n aria-disabled=\"true\"\n [disabled]=\"disabled()\"\n >\n {{ chip.operator }}\n </button>\n } @else {\n <button\n data-part=\"chip-operator\"\n slFilterBarPart=\"chip-operator\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [slMenuTriggerFor]=\"operatorMenu\"\n >\n {{ chip.operator }}\n </button>\n <sl-menu #operatorMenu [aria-label]=\"t('operator')\">\n <sl-menu-radio-group\n [value]=\"chip.condition\"\n (valueChangeRequest)=\"setOperator(chip.key, chip.filter, $event.value)\"\n >\n @for (operator of chip.operators; track operator) {\n <button slMenuRadioItem [value]=\"operator\" [closeOnSelect]=\"true\">\n {{ operatorWords(operator) }}\n </button>\n }\n </sl-menu-radio-group>\n </sl-menu>\n }\n @if (chip.hasValue) {\n @if (readOnly() || chip.unknown || narrow()) {\n <button\n data-part=\"chip-value\"\n type=\"button\"\n [attr.aria-haspopup]=\"readOnly() || chip.unknown ? null : 'dialog'\"\n [attr.aria-disabled]=\"readOnly() || chip.unknown ? 'true' : null\"\n [attr.aria-label]=\"chip.valueName\"\n [attr.title]=\"chip.valueTitle\"\n [disabled]=\"disabled()\"\n (click)=\"onValueSegment(chip, $event)\"\n >\n <span data-operator>{{ chip.operator }}</span\n ><span data-value>{{ chip.value }}</span>\n </button>\n } @else if (chip.field; as field) {\n <ng-container\n slPopover\n [open]=\"valueOpen() === chip.key\"\n (openChange)=\"toggleValue(chip.key, $event)\"\n >\n <button\n slPopoverTrigger\n data-part=\"chip-value\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.aria-label]=\"chip.valueName\"\n [attr.title]=\"chip.valueTitle\"\n [disabled]=\"disabled()\"\n >\n <span data-operator>{{ chip.operator }}</span\n ><span data-value>{{ chip.value }}</span>\n </button>\n <ng-template slPopoverLayer>\n <div slPopoverContent [attr.aria-label]=\"chip.label\">\n <div slPopoverBody>\n <div\n slFilterBarRuleEditor\n [field]=\"field\"\n [current]=\"chip.filter\"\n [translator]=\"t\"\n [size]=\"sizeValue()\"\n [operandTemplates]=\"operandTemplates()\"\n [queryDelay]=\"applyValue() === 'live' ? queryDelayValue() : 0\"\n [invalid]=\"invalid() === chip.key\"\n [withOperator]=\"false\"\n (ruleChange)=\"changeRule(chip.key, $event, 'keyboard')\"\n (doneRequest)=\"finishValue(chip.key)\"\n ></div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n }\n }\n @if (chip.removable) {\n <button\n data-part=\"chip-remove\"\n type=\"button\"\n [attr.aria-label]=\"t('remove', { name: chip.label })\"\n [disabled]=\"disabled()\"\n (click)=\"removeField(chip.key, $event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n </div>\n }\n @if (groupOf(member); as group) {\n <div\n data-part=\"chip\"\n role=\"group\"\n data-operands=\"1\"\n [attr.aria-label]=\"group.words\"\n [attr.data-folded]=\"group.folded ? '' : null\"\n (keydown)=\"onGroupKeyDown($event, group.path)\"\n >\n <button\n data-part=\"chip-value\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.aria-disabled]=\"readOnly() ? 'true' : null\"\n [attr.title]=\"group.words\"\n [disabled]=\"disabled()\"\n (click)=\"readOnly() ? null : openBuilderAt('pointer', $event, { path: group.path })\"\n >\n <span data-value>{{ group.words }}</span>\n </button>\n @if (!readOnly()) {\n <button\n data-part=\"chip-remove\"\n type=\"button\"\n [attr.aria-label]=\"t('remove', { name: group.words })\"\n [disabled]=\"disabled()\"\n (click)=\"removeNode(group.path, $event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n </div>\n }\n }\n\n @if (folded() > 0) {\n <button\n data-part=\"more\"\n type=\"button\"\n [attr.aria-expanded]=\"isRevealed()\"\n [disabled]=\"disabled()\"\n (click)=\"requestRevealed(!isRevealed(), 'pointer', $event)\"\n >\n {{ isRevealed() ? t('less') : t('more', { count: folded() }) }}\n </button>\n }\n\n @if (!readOnly()) {\n @if (chipCount() > 0) {\n <!-- With a chip in the bar, add is its glyph alone, in the chips' shape; the label stays its name. -->\n <button\n slIconButton\n slFilterBarPart=\"add\"\n data-compact\n type=\"button\"\n shape=\"circle\"\n tone=\"secondary\"\n variant=\"outline\"\n [size]=\"sizeValue()\"\n [attr.aria-label]=\"t('add')\"\n [attr.title]=\"t('add')\"\n [disabled]=\"disabled() || unfiltered().length === 0\"\n [slMenuTriggerFor]=\"addMenu\"\n >\n <span slIcon><svg slGlyph name=\"plus\"></svg></span>\n </button>\n } @else {\n <button\n slButton\n slFilterBarPart=\"add\"\n type=\"button\"\n tone=\"secondary\"\n variant=\"ghost\"\n [size]=\"sizeValue()\"\n [disabled]=\"disabled() || unfiltered().length === 0\"\n [slMenuTriggerFor]=\"addMenu\"\n >\n <!-- The glyph stands in the button's own box; bare in the label it has no size. -->\n <span slButtonStart\n ><span slIcon><svg slGlyph name=\"plus\"></svg></span\n ></span>\n {{ t('add') }}\n </button>\n }\n <sl-menu #addMenu [aria-label]=\"t('add')\">\n @for (section of sections(); track section.name ?? '') {\n @if (section.name === undefined) {\n @for (field of section.fields; track field.key) {\n <button slMenuItem (select)=\"start(field.key, $event.source)\">\n @if (field.icon) {\n <span slMenuItemIcon\n ><ng-container\n [ngTemplateOutlet]=\"fieldIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: field.icon }\"\n /></span>\n }\n {{ field.label }}\n </button>\n }\n } @else {\n <sl-menu-group [label]=\"section.name\">\n @for (field of section.fields; track field.key) {\n <button slMenuItem (select)=\"start(field.key, $event.source)\">\n @if (field.icon) {\n <span slMenuItemIcon\n ><ng-container\n [ngTemplateOutlet]=\"fieldIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: field.icon }\"\n /></span>\n }\n {{ field.label }}\n </button>\n }\n </sl-menu-group>\n }\n }\n </sl-menu>\n }\n\n @if (!readOnly() && (activeCount() > 0 || shownQuery() !== '' || pending())) {\n <button\n slButton\n slFilterBarPart=\"clear\"\n type=\"button\"\n tone=\"secondary\"\n variant=\"ghost\"\n [size]=\"sizeValue()\"\n [disabled]=\"disabled()\"\n (click)=\"clearAll($event)\"\n >\n {{ t('clear') }}\n </button>\n }\n\n @if (applyValue() === 'manual' && !readOnly()) {\n <div data-part=\"actions\">\n <button\n slButton\n slFilterBarPart=\"reset\"\n type=\"button\"\n tone=\"secondary\"\n variant=\"ghost\"\n [size]=\"sizeValue()\"\n [disabled]=\"disabled() || !dirty()\"\n (click)=\"reset()\"\n >\n {{ t('reset') }}\n </button>\n <button\n slButton\n slFilterBarPart=\"apply\"\n type=\"button\"\n [size]=\"sizeValue()\"\n [disabled]=\"disabled() || loading() || !dirty()\"\n (click)=\"submit($event)\"\n >\n {{ t('apply') }}\n </button>\n </div>\n }\n </div>\n\n <div data-part=\"end\">\n @if (presets(); as views) {\n @if (views.length > 0) {\n <!-- Clearable: leaving a preset is the control's own clear, and\n without it the one way out of a saved view is deleting it. -->\n <div data-part=\"preset\">\n <sl-select\n clearable\n [size]=\"sizeValue()\"\n [disabled]=\"disabled() || readOnly()\"\n [items]=\"presetItems()\"\n [attr.aria-label]=\"t('preset')\"\n [placeholder]=\"t('presetNone')\"\n [value]=\"currentPreset()\"\n (valueChange)=\"choosePreset($any($event))\"\n >\n @for (view of views; track view.key) {\n <sl-select-item [value]=\"view.key\">{{ view.label }}</sl-select-item>\n }\n </sl-select>\n </div>\n }\n }\n <ng-content select=\"[slFilterBarEnd]\"></ng-content>\n </div>\n\n @if (countText() !== null || loading()) {\n <p data-part=\"count\" aria-live=\"polite\" [attr.aria-busy]=\"loading() ? 'true' : null\">\n @if (loading()) {\n <span\n data-ui=\"spinner\"\n data-part=\"root\"\n data-size=\"sm\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('filters')\"\n ></span>\n }\n {{ countText() }}\n </p>\n }\n </div>\n\n <sl-drawer\n [side]=\"sheet() ? 'bottom' : 'end'\"\n [size]=\"sheet() ? 'content' : 'xl'\"\n [container]=\"container()\"\n [open]=\"isOpen()\"\n (openChangeRequest)=\"onDrawerRequest($event)\"\n >\n <header slDrawerHeader>\n <h2 slDrawerTitle>{{ t('builder') }}</h2>\n <button slDrawerClose></button>\n </header>\n <div slDrawerBody>\n <div data-part=\"builder\" data-ui=\"filter-bar\" [id]=\"id + '-builder'\">\n <fieldset\n slFilterBarGroup\n [group]=\"drawerDraft() ?? empty\"\n [root]=\"drawerDraft() ?? empty\"\n [fields]=\"fields()\"\n [translator]=\"t\"\n [size]=\"sizeValue()\"\n [operandTemplates]=\"operandTemplates()\"\n [expanded]=\"expanded()\"\n (expandedChange)=\"expanded.set($event)\"\n (rootChange)=\"drawerDraft.set($event)\"\n (applyRequest)=\"commitDrawer()\"\n >\n @if (draftActive() > 0) {\n <button\n slButton\n slFilterBarPart=\"clear\"\n type=\"button\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"drawerDraft.set(baseline())\"\n >\n {{ t('clear') }}\n </button>\n }\n @if (savePresetEnabled()) {\n <button\n slButton\n slFilterBarPart=\"save-preset\"\n type=\"button\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"savePreset.emit(normalized(drawerDraft()))\"\n >\n {{ t('savePreset') }}\n </button>\n }\n </fieldset>\n </div>\n </div>\n <footer slDrawerFooter>\n <button\n slButton\n type=\"button\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"requestOpen(false, 'dismiss', $event)\"\n >\n {{ t('cancel') }}\n </button>\n <button slButton type=\"button\" size=\"sm\" (click)=\"commitDrawer()\">\n {{ t('apply') }}\n </button>\n </footer>\n </sl-drawer>\n `,\n styleUrl: '../../../styles/src/filter-bar/filter-bar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slFilterBar',\n host: {\n 'data-ui': 'filter-bar',\n 'data-part': 'root',\n role: 'search',\n '[attr.aria-label]': \"ariaLabel ?? t('bar')\",\n '[attr.data-apply]': 'applyValue()',\n '[attr.data-size]': 'sizeValue()',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-readonly]': 'readOnly() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n '[attr.data-dirty]': 'dirty() || presetDirty() ? \"\" : null',\n '[attr.data-open]': 'isOpen() ? \"\" : null',\n '[attr.data-sticky]': 'sticky() ? \"\" : null',\n },\n})\nexport class SlFilterBar {\n /** The fields the listing can be filtered by, in the order the add menu lists them. */\n readonly fields = input.required<readonly FilterBarField[]>();\n /** The tree. Present is controlled, for the life of the bar. */\n readonly value = model<FilterGroup | null | undefined>(undefined);\n /** Where an uncontrolled tree starts, read once. */\n readonly defaultValue = input<FilterGroup | null>(null);\n /** The global query. */\n readonly query = model<string | undefined>(undefined);\n readonly defaultQuery = input('');\n readonly presets = input<readonly FilterBarPreset[] | undefined>(undefined);\n readonly preset = model<string | null | undefined>(undefined);\n readonly defaultPreset = input<string | null>(null);\n /** Whether the builder is open. */\n readonly open = model<boolean | undefined>(undefined);\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n /** Whether the chips past `chipLimit` are shown. */\n readonly revealed = model<boolean | undefined>(undefined);\n readonly defaultRevealed = input(false, { transform: booleanAttribute });\n\n /** The five effective values: the model when it is set, the default otherwise. */\n readonly currentValue = computed(() => this.value() ?? this.defaultValue());\n readonly currentQuery = computed(() => this.query() ?? this.defaultQuery());\n readonly currentPreset = computed(() => this.preset() ?? this.defaultPreset());\n readonly isOpen = computed(() => this.open() ?? this.defaultOpen());\n readonly isRevealed = computed(() => this.revealed() ?? this.defaultRevealed());\n readonly apply = input<FilterBarApply | undefined>(undefined);\n readonly sticky = input(false, { transform: booleanAttribute });\n /** A parent for the builder's drawer alone, instead of the shared portal root. */\n readonly container = input<Element | null | undefined>(undefined);\n readonly size = input<FilterBarSize | undefined>(undefined);\n readonly queryDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly chipLimit = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly shortcut = input<string | null | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n /** The conditions can be read and reached, and nothing changes them. */\n readonly readOnly = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * The number of rows the filter kept, and the number there are. Written by\n * the `count` message, or `countOnly` without a total, in the digits of the\n * language in force.\n */\n readonly count = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly total = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * landmark's name (`bar`), the controls, the chips' names, the count and the\n * announcements.\n */\n readonly messages = input<PartialMessages<FilterBarMessages> | undefined>(undefined);\n\n /** The requests behind every committed change, each with the reason it carries. */\n readonly valueChangeRequest = output<ChangeRequest<FilterGroup | null>>();\n readonly queryChangeRequest = output<ChangeRequest<string>>();\n readonly presetChangeRequest = output<ChangeRequest<string | null>>();\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n readonly revealedChangeRequest = output<ChangeRequest<boolean>>();\n /** Draws the save-as-view control in the builder. */\n readonly savePresetEnabled = input(false, { transform: booleanAttribute });\n /** Asks the application to save the tree as a view. */\n readonly savePreset = output<FilterGroup | null>();\n\n private readonly defaults = injectFilterBarDefaults();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n protected readonly ariaLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly searchInput = viewChild.required<ElementRef<HTMLInputElement>>('search');\n private readonly barElement = viewChild.required<ElementRef<HTMLDivElement>>('barRow');\n protected readonly operandTemplates = contentChildren(SlFilterBarOperand);\n protected readonly endSlot = contentChild(SlFilterBarEnd);\n\n readonly id = `slotted-filter-bar-${(counter += 1)}`;\n protected readonly empty = emptyFilterGroup();\n\n /** The family's words in the language in force, with this bar's `messages` laid over them. */\n readonly t: FilterBarTranslator = injectMessages(filterBarMessages, this.messages);\n protected readonly applyValue = computed(\n () => this.apply() ?? this.defaults.apply ?? FILTER_BAR_DEFAULT_APPLY,\n );\n protected readonly sizeValue = computed(\n () => this.size() ?? this.defaults.size ?? FILTER_BAR_DEFAULT_SIZE,\n );\n protected readonly queryDelayValue = computed(\n () => this.queryDelay() ?? this.defaults.queryDelay ?? FILTER_BAR_DEFAULT_QUERY_DELAY,\n );\n protected readonly chipLimitValue = computed(\n () => this.chipLimit() ?? this.defaults.chipLimit ?? FILTER_BAR_DEFAULT_CHIP_LIMIT,\n );\n protected readonly shortcutValue = computed(() => {\n const own = this.shortcut();\n return own === undefined ? (this.defaults.shortcut ?? null) : own;\n });\n private readonly locked = computed(() => this.disabled() || this.readOnly());\n\n /* ── State the bar owns ────────────────────────────────────────────── */\n\n private readonly draft = signal<{ value: FilterGroup | null; query: string } | null>(null);\n protected readonly invalid = signal<string | null>(null);\n protected readonly pending = signal<PendingRule | null>(null);\n /** Which chip's value popover is open, by its field key. */\n protected readonly valueOpen = signal<string | null>(null);\n /** The one rule card open in the builder's card form, by its path. */\n protected readonly expanded = signal<string | null>(null);\n protected readonly drawerDraft = signal<FilterGroup | null>(null);\n /** Whether the bar is under its narrow breakpoint: an edit then goes to the builder. */\n protected readonly narrow = signal(false);\n /** Whether the viewport is under the sheet breakpoint: the builder then comes up from the bottom. */\n protected readonly sheet = signal(false);\n private readonly typed = signal<string | null>(null);\n /** A tree the builder opens on instead of the shown one: a rule the reader just started. */\n private seed: FilterGroup | null = null;\n private timer: ReturnType<typeof setTimeout> | undefined;\n\n protected readonly shown = computed(() => {\n const draft = this.draft();\n return this.applyValue() === 'manual' && draft ? draft.value : this.currentValue();\n });\n protected readonly shownQuery = computed(() => {\n const typed = this.typed();\n if (typed !== null) return typed;\n const draft = this.draft();\n return this.applyValue() === 'manual' && draft ? draft.query : this.currentQuery();\n });\n protected readonly dirty = computed(() => {\n const draft = this.draft();\n return (\n this.applyValue() === 'manual' &&\n draft !== null &&\n (!sameGroup(draft.value, this.currentValue()) || draft.query !== this.currentQuery())\n );\n });\n protected readonly presetDirty = computed(() => {\n const chosen = this.presets()?.find((entry) => entry.key === this.currentPreset());\n return (\n chosen !== undefined && !sameGroup(normalizeFilterGroup(chosen.value), this.currentValue())\n );\n });\n\n private readonly format = computed(() => {\n const fields = this.fields();\n return {\n field: (key: string) => fieldByKey(fields, key)?.label ?? key,\n join: (join: FilterJoin) => this.t(join === 'and' ? 'joins.and' : 'joins.or'),\n operator: (operator: string) => operatorName(this.t, operator),\n };\n });\n\n protected readonly required = computed(() => this.fields().filter((field) => field.required));\n protected readonly pinned = computed(() =>\n this.fields().filter((field) => field.pinned || field.required),\n );\n private readonly pinnedKeys = computed(() => new Set(this.pinned().map((field) => field.key)));\n protected readonly activeCount = computed(() => countActive(this.shown()));\n protected readonly draftActive = computed(() => countActive(this.drawerDraft()));\n protected readonly unfiltered = computed(() => {\n const pending = this.pending()?.key;\n return this.fields().filter(\n (field) =>\n !this.pinnedKeys().has(field.key) &&\n ruleFor(this.shown(), field.key) === undefined &&\n field.key !== pending,\n );\n });\n protected readonly sections = computed(() => {\n const map = new Map<string | undefined, FilterBarField[]>();\n for (const field of this.unfiltered()) {\n const list = map.get(field.section) ?? [];\n list.push(field);\n map.set(field.section, list);\n }\n return [...map.entries()].map(([name, fields]) => ({ fields, name }));\n });\n protected readonly presetItems = computed(\n () => this.presets()?.map((entry) => ({ label: entry.label, value: entry.key })) ?? [],\n );\n\n /**\n * The bar's members in order: pinned fields as declared — a chip, or a pill\n * while they hold no condition — then the other first-level conditions, then\n * the one pending, which keeps the place an applied rule had when it lost its\n * operand.\n */\n protected readonly members = computed<readonly BarMember[]>(() => {\n const shown = this.shown();\n const pending = this.pending();\n const pinnedKeys = this.pinnedKeys();\n const limit = this.chipLimitValue();\n const readOnly = this.readOnly();\n const format = this.format();\n const members: BarMember[] = [];\n let index = 0;\n const nextFolded = () => index++ >= limit;\n for (const field of this.pinned()) {\n const rule = ruleFor(shown, field.key);\n if (rule !== undefined) {\n members.push(this.describeChip(field.key, rule, { folded: nextFolded(), pinned: true }));\n } else if (pending?.key === field.key) {\n members.push(\n this.describeChip(field.key, pending.filter, {\n folded: nextFolded(),\n incomplete: true,\n pinned: true,\n }),\n );\n } else if (!readOnly) {\n members.push({ field, id: `pill:${field.key}`, kind: 'pill' });\n }\n }\n const floating =\n pending && !pinnedKeys.has(pending.key) && ruleFor(shown, pending.key) === undefined\n ? pending\n : null;\n const pendingChip = (rule: PendingRule) =>\n this.describeChip(rule.key, rule.filter, { folded: nextFolded(), incomplete: true });\n let placed = false;\n (shown?.rules ?? []).forEach((node, at) => {\n if (floating && floating.at === at) {\n members.push(pendingChip(floating));\n placed = true;\n }\n if (isFilterGroup(node)) {\n members.push({\n folded: nextFolded(),\n id: `group:${at}`,\n kind: 'group',\n path: [at],\n words: `(${describeFilterGroup(node, format)})`,\n });\n } else if (!pinnedKeys.has(node.field)) {\n members.push(this.describeChip(node.field, node.filter, { folded: nextFolded() }));\n }\n });\n if (floating && !placed) members.push(pendingChip(floating));\n return members;\n });\n protected readonly chipCount = computed(\n () => this.members().filter((member) => member.kind !== 'pill').length,\n );\n protected readonly folded = computed(() => Math.max(0, this.chipCount() - this.chipLimitValue()));\n protected readonly countText = computed(() => {\n const count = this.count();\n if (count === undefined) return null;\n const total = this.total();\n return total === undefined ? this.t('countOnly', { count }) : this.t('count', { count, total });\n });\n\n constructor() {\n /* A controlled value that changes from outside replaces the draft: the application's value wins. */\n let last = untracked(this.currentValue);\n effect(() => {\n const value = this.currentValue();\n if (!sameGroup(last, value)) {\n last = value;\n untracked(() => this.draft.set(null));\n }\n });\n\n /* The draft the drawer edits, taken each time it opens from the tree — or\n from the seed a chip left, when the reader started a rule on a phone and\n the builder is where it is finished. */\n let wasOpen = false;\n effect(() => {\n const open = this.isOpen();\n if (open && !wasOpen) {\n untracked(() => {\n this.drawerDraft.set(this.seed ?? this.shown());\n this.seed = null;\n });\n }\n wasOpen = open;\n });\n\n /* The ring: one tab stop for the bar, arrows over every control and every\n chip segment. After render, because the items are the template's. */\n afterRenderEffect((onCleanup) => {\n const bar = this.barElement().nativeElement;\n const ring = createRovingTabindex(bar, {\n includeAriaDisabled: true,\n itemSelector: BAR_ITEMS,\n });\n /* A chip removed by the pointer: focus goes to the stop that took its place. */\n const removal = createRemovalFocus(bar, {\n fallback: () => bar.querySelector<HTMLElement>(\"[data-part='add']\") ?? null,\n itemSelector: BAR_ITEMS,\n });\n /* Read the DOM again after a chip, a pill or a control came or went. */\n const observer = new MutationObserver(() => ring.refresh());\n observer.observe(bar, { childList: true, subtree: true });\n onCleanup(() => {\n observer.disconnect();\n ring.destroy();\n removal.destroy();\n });\n });\n\n /* The narrow breakpoint, read from the root's own width, and the sheet\n breakpoint, read from the viewport — the side a drawer opens from is the\n viewport's question. A root with no box is not measured. */\n afterNextRender(() => {\n const element = this.host.nativeElement;\n const view = element.ownerDocument.defaultView;\n /* Read only in the observer's reports, the first of which arrives\n after layout: a read here forced a layout of the page just rendered. */\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n const width = element.getBoundingClientRect().width;\n this.narrow.set(width > 0 && width < remToPx(element, NARROW_REM));\n });\n observer.observe(element);\n this.destroyRef.onDestroy(() => observer.disconnect());\n }\n if (view?.matchMedia) {\n const query = view.matchMedia(`(max-width: ${NARROW_REM}rem)`);\n const read = () => this.sheet.set(query.matches);\n read();\n query.addEventListener?.('change', read);\n this.destroyRef.onDestroy(() => query.removeEventListener?.('change', read));\n }\n });\n\n /* The document key that reaches the search, unless the reader is typing. */\n effect((onCleanup) => {\n const key = this.shortcutValue();\n if (!key || this.disabled()) return;\n const doc = this.host.nativeElement.ownerDocument;\n const listener = (event: KeyboardEvent) => {\n if (event.defaultPrevented || event.metaKey || event.ctrlKey || event.altKey) return;\n if (event.key !== key || isEditable(doc.activeElement)) return;\n event.preventDefault();\n this.focusSearch();\n };\n doc.addEventListener('keydown', listener);\n onCleanup(() => doc.removeEventListener('keydown', listener));\n });\n\n /* Sticky: the bar reads the page property and adds its own height for what follows. */\n effect((onCleanup) => {\n if (!this.sticky() || typeof ResizeObserver === 'undefined') return;\n const element = this.host.nativeElement;\n const parent = element.parentElement;\n const view = element.ownerDocument.defaultView;\n if (!parent || !view) return;\n /* What the parent declared inline before this bar added itself: put back\n before every read, so a second measure never sums the bar twice. */\n const declared = parent.style.getPropertyValue(STICKY_TOP);\n const restore = () =>\n declared\n ? parent.style.setProperty(STICKY_TOP, declared)\n : parent.style.removeProperty(STICKY_TOP);\n const publish = () => {\n restore();\n const above = view.getComputedStyle(parent).getPropertyValue(STICKY_TOP).trim() || '0px';\n const height = element.getBoundingClientRect().height;\n element.style.setProperty(STICKY_TOP, above);\n parent.style.setProperty(STICKY_TOP, `calc(${above} + ${height}px)`);\n };\n /* Its first report, after layout, is the first measurement. */\n const observer = new ResizeObserver(publish);\n observer.observe(element);\n onCleanup(() => {\n observer.disconnect();\n element.style.removeProperty(STICKY_TOP);\n restore();\n });\n });\n\n this.destroyRef.onDestroy(() => clearTimeout(this.timer));\n }\n\n /* ── Helpers the template reads ─────────────────────────────────────── */\n\n protected pillOf(member: BarMember) {\n return member.kind === 'pill' ? member : null;\n }\n\n protected chipOf(member: BarMember) {\n return member.kind === 'chip' ? member : null;\n }\n\n protected groupOf(member: BarMember) {\n return member.kind === 'group' ? member : null;\n }\n\n protected isTemplate(icon: unknown): icon is TemplateRef<unknown> {\n return icon instanceof TemplateRef;\n }\n\n protected operatorWords(operator: string) {\n return operatorName(this.t, operator);\n }\n\n protected normalized(group: FilterGroup | null) {\n return normalizeFilterGroup(group);\n }\n\n /** One field's condition as its chip draws it. */\n private describeChip(\n key: string,\n filter: FilterDescriptor,\n flags: { pinned?: boolean; incomplete?: boolean; folded: boolean },\n ): BarChip {\n const field = fieldByKey(this.fields(), key);\n const unknown = field === undefined;\n const label = field?.label ?? key;\n const words = ruleWords(this.t, field, filter);\n const incomplete = flags.incomplete === true || !isFilterActive(filter);\n const value = words.value || this.t('noValue');\n const rule = this.t('rule', {\n condition:\n words.operands > 0\n ? this.t('condition', { operator: words.operator, value })\n : words.operator,\n field: unknown ? this.t('unknownField', { field: key }) : label,\n });\n return {\n condition: filter.conditions[0]?.operator ?? '',\n field,\n filter,\n folded: flags.folded,\n hasValue: words.operands > 0 || incomplete,\n id: `chip:${key}`,\n incomplete,\n key,\n kind: 'chip',\n label,\n name: incomplete ? this.t('incomplete', { rule }) : rule,\n operands: words.operands,\n operator: words.operator,\n operators: field?.operators ?? (field ? (operatorsFor(field.kind) as readonly string[]) : []),\n pinned: flags.pinned === true,\n removable: field?.required !== true && !this.readOnly(),\n unknown,\n value,\n valueName: this.t('condition', { operator: words.operator, value: words.full || value }),\n valueTitle: words.full && words.full !== words.value ? words.full : null,\n };\n }\n\n private sentenceOf(\n field: FilterBarField | undefined,\n filter: FilterDescriptor | null | undefined,\n ) {\n return describeFilter(filter, {\n ...this.format(),\n value: (value) =>\n field?.options?.find((option) => option.value === value)?.label ?? String(value),\n });\n }\n\n private announce(message: string) {\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message);\n }\n\n /* ── The five requests ─────────────────────────────────────────────── */\n\n requestValue(next: FilterGroup | null, reason: FilterBarValueReason, source?: unknown) {\n const normalized = normalizeFilterGroup(next);\n const state = createControllable<FilterGroup | null>({\n equals: sameGroup,\n initial: this.currentValue(),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (state.request(normalized, reason, source)) this.value.set(normalized);\n }\n\n requestQuery(next: string, reason: FilterBarQueryReason, source?: unknown) {\n const state = createControllable<string>({\n initial: this.currentQuery(),\n onRequest: (request) => this.queryChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.query.set(next);\n }\n\n requestPreset(next: string | null, reason: FilterBarPresetReason, source?: unknown) {\n const state = createControllable<string | null>({\n initial: this.currentPreset(),\n onRequest: (request) => this.presetChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.preset.set(next);\n }\n\n requestOpen(next: boolean, reason: FilterBarOpenReason, source?: unknown) {\n const state = createControllable<boolean>({\n initial: this.isOpen(),\n onRequest: (request) => this.openChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.open.set(next);\n }\n\n requestRevealed(next: boolean, reason: FilterBarRevealedReason, source?: unknown) {\n const state = createControllable<boolean>({\n initial: this.isRevealed(),\n onRequest: (request) => this.revealedChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.revealed.set(next);\n }\n\n /* ── Edits ─────────────────────────────────────────────────────────── */\n\n /**\n * Every edit of the tree goes through here: under `live` it is requested at\n * once, under `manual` it goes to the draft and Apply requests it.\n */\n private edit(next: FilterGroup | null, reason: FilterBarValueReason, source?: unknown) {\n if (this.applyValue() === 'manual') {\n this.draft.set({ query: this.shownQuery(), value: next });\n return;\n }\n this.requestValue(next, reason, source);\n }\n\n /** The tree with every required field at its default, which is what Clear returns to. */\n protected baseline(): FilterGroup | null {\n let next: FilterGroup | null = null;\n for (const field of this.required()) {\n if (field.defaultValue) next = withRuleFor(next, field.key, field.defaultValue);\n }\n return normalizeFilterGroup(next);\n }\n\n private missing(tree: FilterGroup | null) {\n return this.required().filter((field) => !isFilterActive(ruleFor(tree, field.key) ?? null));\n }\n\n /** A required field refuses: data-invalid on its chip or pill, its message said, and focus on it when asked. */\n private refuse(field: FilterBarField, focus: boolean) {\n this.invalid.set(field.key);\n this.announce(this.t('required', { field: field.label }));\n if (!focus) return;\n const member = this.barElement().nativeElement.querySelector<HTMLElement>(\n `[data-field='${CSS.escape(field.key)}']`,\n );\n (member?.matches('button') ? member : member?.querySelector<HTMLElement>(SEGMENTS))?.focus();\n }\n\n /** A field chosen from `add` or pressed as a pill: its chip, incomplete, with the value popover open. */\n protected start(key: string, source?: unknown) {\n const field = fieldByKey(this.fields(), key);\n if (!field || this.locked()) return;\n if (this.narrow()) {\n this.openBuilderOn(key, source);\n return;\n }\n const filter = blankRule(field);\n if (isFilterActive(filter)) {\n this.edit(withRuleFor(this.shown(), key, filter), 'pointer', source);\n } else {\n this.pending.set({ filter, key });\n }\n this.valueOpen.set(key);\n }\n\n /** Every change to one field's rule from a chip: pending until active, then the value's. */\n protected changeRule(key: string, next: FilterDescriptor | null, reason: FilterBarValueReason) {\n const field = fieldByKey(this.fields(), key);\n const shown = this.shown();\n if (next === null) {\n if (field?.required) {\n this.refuse(field, false);\n return;\n }\n if (this.pending()?.key === key) this.pending.set(null);\n this.edit(withoutRuleFor(shown, key), 'clear');\n return;\n }\n this.invalid.set(null);\n if (!isFilterActive(next)) {\n /* A draft holds an unfinished rule as it stands; the value never does. */\n if (this.applyValue() === 'manual') {\n this.edit(withRuleFor(shown, key, next), reason);\n return;\n }\n const at = shown\n ? shown.rules.findIndex((node) => !isFilterGroup(node) && node.field === key)\n : -1;\n this.pending.set({ filter: next, key, ...(at === -1 ? {} : { at }) });\n if (at !== -1) this.edit(withoutRuleFor(shown, key), reason);\n return;\n }\n if (this.pending()?.key === key) this.pending.set(null);\n this.edit(withRuleFor(shown, key, next), reason);\n }\n\n protected setOperator(key: string, filter: FilterDescriptor, operator: string) {\n const condition = (filter.conditions[0] ?? { operator }) as Condition;\n const before = operandCount(condition.operator as FilterOperator);\n const after = operandCount(operator as FilterOperator);\n const next = withCondition(filter, 0, {\n operator,\n ...(after >= 1 && before >= 1 ? { value: condition.value } : {}),\n ...(after === 2 && before === 2 ? { end: condition.end } : {}),\n } as never);\n this.changeRule(key, next, 'pointer');\n /* An operator that wants an operand the rule lacks moves on to the value. */\n if (after > 0 && !isFilterActive(next)) this.valueOpen.set(key);\n }\n\n protected toggleValue(key: string, open: boolean) {\n const current = this.valueOpen();\n this.valueOpen.set(open ? key : current === key ? null : current);\n }\n\n /** Done in a chip's value popover: the condition is said, and the popover closes. */\n protected finishValue(key: string) {\n const field = fieldByKey(this.fields(), key);\n const rule = ruleFor(this.shown(), key);\n if (rule && isFilterActive(rule)) {\n this.announce(\n this.t('rule', { condition: this.sentenceOf(field, rule), field: field?.label ?? key }),\n );\n }\n if (this.valueOpen() === key) this.valueOpen.set(null);\n }\n\n /** The value segment drawn without its popover: under the narrow breakpoint it opens the builder. */\n protected onValueSegment(chip: BarChip, event: Event) {\n if (this.readOnly() || chip.unknown || !this.narrow()) return;\n this.openBuilderOn(chip.key, event);\n }\n\n protected removeField(key: string, source?: unknown) {\n const field = fieldByKey(this.fields(), key);\n if (field?.required) {\n this.refuse(field, false);\n return;\n }\n const pending = this.pending();\n if (pending?.key === key) {\n this.pending.set(null);\n if (ruleFor(this.shown(), key) === undefined) return;\n }\n this.edit(withoutRuleFor(this.shown(), key), 'remove', source);\n this.announce(this.t('removed', { field: field?.label ?? key }));\n }\n\n protected removeNode(path: FilterPath, source?: unknown) {\n const shown = this.shown();\n if (!shown) return;\n this.edit(removeNodeAt(shown, path), 'remove', source);\n }\n\n /**\n * `Delete` and `Backspace` on a segment remove the condition. The keyboard\n * goes to the segment of the same role on the chip that followed, else on\n * the one before, else to `add` — chosen before the removal, while both\n * neighbours are still in the DOM, and focused after the render.\n */\n protected onChipKeyDown(event: KeyboardEvent, key: string) {\n if (event.key !== 'Delete' && event.key !== 'Backspace') return;\n const segment = (event.target as HTMLElement).closest<HTMLElement>(SEGMENTS);\n if (!segment || this.locked() || event.defaultPrevented) return;\n event.preventDefault();\n if (fieldByKey(this.fields(), key)?.required) {\n this.removeField(key, event);\n return;\n }\n const bar = this.barElement().nativeElement;\n const chips = [...bar.querySelectorAll<HTMLElement>(\"[data-part='chip']\")].filter(\n (chip) => chip.checkVisibility?.() ?? true,\n );\n const here = segment.closest<HTMLElement>(\"[data-part='chip']\");\n const index = here ? chips.indexOf(here) : -1;\n const role = segment.getAttribute('data-part');\n const neighbour = chips[index + 1] ?? chips[index - 1];\n const target =\n neighbour?.querySelector<HTMLElement>(`[data-part='${role}']`) ??\n neighbour?.querySelector<HTMLElement>('button') ??\n null;\n this.focusAfterRender(target);\n this.removeField(key, event);\n }\n\n protected onGroupKeyDown(event: KeyboardEvent, path: FilterPath) {\n if ((event.key !== 'Delete' && event.key !== 'Backspace') || this.locked()) return;\n event.preventDefault();\n this.removeNode(path, event);\n }\n\n private focusAfterRender(target: HTMLElement | null) {\n afterNextRender(\n {\n write: () => {\n const bar = this.barElement().nativeElement;\n (target?.isConnected\n ? target\n : bar.querySelector<HTMLElement>(\"[data-part='add']\")\n )?.focus();\n },\n },\n { injector: this.injector },\n );\n }\n\n protected clearAll(source?: unknown) {\n const next = this.baseline();\n this.invalid.set(null);\n this.pending.set(null);\n if (this.applyValue() === 'manual') {\n this.draft.set({ query: '', value: next });\n } else {\n this.requestValue(next, 'clear', source);\n if (this.currentQuery() !== '') this.requestQuery('', 'clear', source);\n }\n this.announce(\n next\n ? this.t('clearedTo', { filters: describeFilterGroup(next, this.format()) })\n : this.t('cleared'),\n );\n }\n\n protected submit(source?: unknown) {\n const draft = this.draft();\n if (!draft) return;\n const lacking = this.missing(draft.value);\n if (lacking[0]) {\n this.refuse(lacking[0], true);\n return;\n }\n this.invalid.set(null);\n this.requestValue(draft.value, 'submit', source);\n if (draft.query !== this.currentQuery()) this.requestQuery(draft.query, 'submit', source);\n this.draft.set(null);\n const applied = normalizeFilterGroup(draft.value);\n this.announce(\n applied\n ? this.t('appliedCount', {\n count: firstLevelRules(applied).length,\n filters: describeFilterGroup(applied, this.format()),\n })\n : this.t('cleared'),\n );\n }\n\n protected reset() {\n this.draft.set(null);\n this.invalid.set(null);\n }\n\n protected choosePreset(key: string | null, source?: unknown) {\n this.requestPreset(key, key === null ? 'clear' : 'select', source);\n const chosen = this.presets()?.find((entry) => entry.key === key);\n if (chosen) {\n this.draft.set(null);\n this.requestValue(chosen.value, 'select', source);\n this.announce(chosen.label);\n }\n }\n\n /* ── The builder ───────────────────────────────────────────────────── */\n\n /** Opens the builder, with the card at `at.path` expanded, on `at.tree` when given. */\n protected openBuilderAt(\n reason: FilterBarOpenReason,\n source?: unknown,\n at?: { tree?: FilterGroup | null; path: FilterPath },\n ) {\n if (at?.tree !== undefined) this.seed = at.tree;\n this.expanded.set(at ? at.path.join('.') : null);\n this.requestOpen(true, reason, source);\n }\n\n /** The builder open on one field's rule: the applied one, the pending one, or a fresh one. */\n private openBuilderOn(key: string, source?: unknown) {\n const field = fieldByKey(this.fields(), key);\n const shown = this.shown();\n const pending = this.pending();\n const applied = shown\n ? shown.rules.findIndex((node) => !isFilterGroup(node) && node.field === key)\n : -1;\n if (applied !== -1 && pending?.key !== key) {\n this.openBuilderAt('pointer', source, { path: [applied] });\n return;\n }\n const filter = pending?.key === key ? pending.filter : field ? blankRule(field) : null;\n if (!filter) return;\n const tree = withRuleFor(shown, key, filter);\n this.pending.set(null);\n this.openBuilderAt('pointer', source, {\n path: [tree.rules.findIndex((node) => !isFilterGroup(node) && node.field === key)],\n tree,\n });\n }\n\n protected commitDrawer() {\n const next = this.drawerDraft();\n const lacking = this.missing(next);\n if (lacking[0]) {\n this.refuse(lacking[0], false);\n return;\n }\n this.invalid.set(null);\n this.edit(next, 'submit');\n const applied = normalizeFilterGroup(next);\n this.announce(\n applied\n ? this.t('appliedCount', {\n count: countActive(applied),\n filters: describeFilterGroup(applied, this.format()),\n })\n : this.t('cleared'),\n );\n this.requestOpen(false, 'submit');\n }\n\n protected onDrawerRequest(request: ChangeRequest<boolean>) {\n this.requestOpen(request.value, request.reason as FilterBarOpenReason, request.source);\n }\n\n /* ── The query ─────────────────────────────────────────────────────── */\n\n protected typeQuery(request: ChangeRequest<string>) {\n const next = request.value;\n const reason: FilterBarQueryReason = request.reason === 'clear' ? 'clear' : 'keyboard';\n if (this.applyValue() === 'manual') {\n this.draft.set({ query: next, value: this.shown() });\n return;\n }\n this.typed.set(next);\n clearTimeout(this.timer);\n if (reason === 'clear' || this.queryDelayValue() === 0) {\n this.typed.set(null);\n this.requestQuery(next, reason, request.source);\n return;\n }\n this.timer = setTimeout(() => {\n this.timer = undefined;\n this.typed.set(null);\n this.requestQuery(next, reason, request.source);\n }, this.queryDelayValue());\n }\n\n protected onSearchKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n if (event.key === 'Escape' && this.shownQuery() !== '') {\n event.preventDefault();\n this.typeQuery({\n cancel: () => {},\n cancelled: false,\n previous: this.shownQuery(),\n reason: 'clear',\n source: event,\n value: '',\n });\n }\n if (event.key === 'Enter' && this.applyValue() === 'manual') this.submit(event);\n }\n\n /* ── Imperative ────────────────────────────────────────────────────── */\n\n /** Puts focus in the search field. */\n focusSearch() {\n this.searchInput().nativeElement.focus();\n }\n\n /**\n * Opens the builder. With a path, the rule at that path opens as the\n * expanded card. `open` is the model's name here, so the handle's `open(path)`\n * is `openBuilder(path)`.\n */\n openBuilder(path?: FilterPath) {\n this.openBuilderAt('programmatic', undefined, path ? { path } : undefined);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["kindDefaultOperator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-filter-bar.mjs","sources":["../../filter-bar/src/filter-bar.constants.ts","../../filter-bar/src/filter-bar.ts","../../filter-bar/src/slotted-angular-filter-bar.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { TemplateRef } from '@angular/core';\nimport type { FilterDescriptor, FilterGroup, FilterKind } from '@slotted/core/filter';\n\nexport type FilterBarApply = 'live' | 'manual';\nexport type FilterBarSize = 'sm' | 'md' | 'lg';\nexport type FilterBarValueReason =\n 'pointer' | 'keyboard' | 'clear' | 'remove' | 'select' | 'submit' | 'programmatic';\nexport type FilterBarQueryReason = 'keyboard' | 'clear' | 'submit' | 'programmatic';\nexport type FilterBarPresetReason = 'select' | 'clear' | 'programmatic';\nexport type FilterBarOpenReason =\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'dismiss' | 'submit' | 'programmatic';\nexport type FilterBarRevealedReason = 'pointer' | 'keyboard' | 'programmatic';\n\n/** A value of a set field, with the word a reader sees for it. */\nexport interface FilterBarOption {\n value: string;\n label: string;\n}\n\n/**\n * One field a listing can be filtered by. `key` is what a rule names and what\n * `read(row, field)` receives; `kind` decides the operators and the operand\n * control, which is the same decision `table`'s typed filters make.\n */\nexport interface FilterBarField {\n key: string;\n label: string;\n kind: FilterKind;\n /**\n * Drawn before the field's name on its chip and in the add menu: a glyph\n * name from `@slotted/core/glyph`, or a template of the consumer's.\n */\n icon?: string | TemplateRef<unknown>;\n /** Narrows the operators the kind offers. */\n operators?: readonly string[];\n /** The operator a new rule starts with. Defaults to the kind's. */\n defaultOperator?: string;\n /**\n * Always in sight: a dashed pill while it holds no condition, a chip in the\n * same place once it does.\n */\n pinned?: boolean;\n /**\n * A field that always holds a rule: Clear returns it to `defaultValue`\n * rather than to nothing, and a rule without an operand refuses to be\n * applied or removed. A required field is pinned whether or not it says so.\n */\n required?: boolean;\n defaultValue?: FilterDescriptor | null;\n /** A heading the add menu groups the field under. */\n section?: string;\n /** Whether the global query searches this field. */\n searchable?: boolean;\n /** The values a `set` field offers. */\n options?: readonly FilterBarOption[];\n min?: number | string;\n max?: number | string;\n step?: number;\n}\n\n/** A saved view: a name and the tree it restores. */\nexport interface FilterBarPreset {\n key: string;\n label: string;\n value: FilterGroup | null;\n}\n\nexport const FILTER_BAR_DEFAULT_APPLY: FilterBarApply = 'live';\nexport const FILTER_BAR_DEFAULT_SIZE: FilterBarSize = 'md';\nexport const FILTER_BAR_DEFAULT_QUERY_DELAY = 320;\nexport const FILTER_BAR_DEFAULT_CHIP_LIMIT = 6;\n\nexport interface FilterBarDefaults {\n apply?: FilterBarApply;\n chipLimit?: number;\n queryDelay?: number;\n shortcut?: string | null;\n size?: FilterBarSize;\n}\n\nexport const FILTER_BAR_DEFAULTS_TOKEN = new InjectionToken<FilterBarDefaults>(\n 'slotted filter-bar defaults',\n { providedIn: 'root', factory: (): FilterBarDefaults => ({}) },\n);\n\n/**\n * An application decides once how its bars apply, how long the query waits,\n * how many chips show, and which key reaches the search. A bar that states any\n * of those itself still wins. Its words come from the language in force\n * (`provideSlotted`).\n */\nexport function provideFilterBarDefaults(defaults: FilterBarDefaults) {\n return { provide: FILTER_BAR_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectFilterBarDefaults(): FilterBarDefaults {\n return inject(FILTER_BAR_DEFAULTS_TOKEN);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n isPlainDate,\n isPlainDateTime,\n isPlainTime,\n parseISODate,\n parseISODateTime,\n parseISOTime,\n toISODate,\n toISODateTime,\n toISOTime,\n} from '@slotted/core/date';\nimport {\n defaultOperator as kindDefaultOperator,\n describeFilter,\n describeFilterGroup,\n emptyFilter,\n emptyFilterGroup,\n firstLevelRules,\n insertNodeAt,\n isFilterActive,\n isFilterGroup,\n normalizeFilterGroup,\n operandCount,\n operatorsFor,\n removeNodeAt,\n ruleFor,\n serializeFilterGroup,\n spokenOperator,\n updateNodeAt,\n withCondition,\n withGroupJoin,\n withoutRuleFor,\n withRuleFor,\n} from '@slotted/core/filter';\nimport type {\n FilterCondition,\n FilterDescriptor,\n FilterGroup,\n FilterJoin,\n FilterNode,\n FilterOperator,\n FilterPath,\n FilterRule,\n} from '@slotted/core/filter';\nimport { createRemovalFocus, createRovingTabindex } from '@slotted/core/focus';\nimport { filterBarMessages } from '@slotted/core/i18n';\nimport type {\n FamilyTranslator,\n FilterBarMessages,\n MessageSlots,\n PartialMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { SlButton, SlButtonStart, SlIconButton } from '@slotted/angular/button';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlDatePicker } from '@slotted/angular/date-picker';\nimport { SlDateTimePicker } from '@slotted/angular/datetime-picker';\nimport {\n SlDrawer,\n SlDrawerBody,\n SlDrawerClose,\n SlDrawerFooter,\n SlDrawerHeader,\n SlDrawerTitle,\n} from '@slotted/angular/drawer';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlKbd } from '@slotted/angular/kbd';\nimport {\n SlMenu,\n SlMenuGroup,\n SlMenuItem,\n SlMenuItemIcon,\n SlMenuRadioGroup,\n SlMenuTrigger,\n} from '@slotted/angular/menu';\nimport { SlMultiSelect, SlMultiSelectItem } from '@slotted/angular/multi-select';\nimport { SlNumberField, SlNumberFieldInput } from '@slotted/angular/number-field';\nimport {\n SlPopover,\n SlPopoverBody,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n} from '@slotted/angular/popover';\nimport { SlSegment, SlSegmentedControl } from '@slotted/angular/segmented-control';\nimport { SlSelect, SlSelectItem } from '@slotted/angular/select';\nimport {\n SlTextField,\n SlTextFieldEnd,\n SlTextFieldInput,\n SlTextFieldStart,\n} from '@slotted/angular/text-field';\nimport { SlTimePicker } from '@slotted/angular/time-picker';\n\nimport {\n FILTER_BAR_DEFAULT_APPLY,\n FILTER_BAR_DEFAULT_CHIP_LIMIT,\n FILTER_BAR_DEFAULT_QUERY_DELAY,\n FILTER_BAR_DEFAULT_SIZE,\n injectFilterBarDefaults,\n type FilterBarApply,\n type FilterBarField,\n type FilterBarOpenReason,\n type FilterBarPreset,\n type FilterBarPresetReason,\n type FilterBarQueryReason,\n type FilterBarRevealedReason,\n type FilterBarSize,\n type FilterBarValueReason,\n} from './filter-bar.constants';\n\ntype Condition = FilterCondition<string, unknown>;\n\n/**\n * Every stop of the one toolbar, in DOM order: the arrows walk the pills, each\n * segment of each chip, more, add, clear and the actions, line after line. A\n * stop the stylesheet hides at this width is skipped by its visibility.\n */\nconst BAR_ITEMS = [\n 'summary',\n 'pill',\n 'chip-operator',\n 'chip-value',\n 'chip-remove',\n 'more',\n 'add',\n 'clear',\n 'reset',\n 'apply',\n]\n .map((part) => `[data-part='${part}']`)\n .join(', ');\n\nconst SEGMENTS = \"[data-part='chip-operator'], [data-part='chip-value'], [data-part='chip-remove']\";\n\n/** The bar's narrow breakpoint and the builder's sheet breakpoint, in rems — the stylesheet's. */\nconst NARROW_REM = 36;\n\nconst STICKY_TOP = '--slotted-page-sticky-top';\n\nlet counter = 0;\n\nfunction remToPx(element: Element, rem: number) {\n const size = parseFloat(\n element.ownerDocument.defaultView?.getComputedStyle(element.ownerDocument.documentElement)\n .fontSize ?? '16',\n );\n return rem * (Number.isFinite(size) ? size : 16);\n}\n\nfunction sameGroup(a: FilterGroup | null, b: FilterGroup | null) {\n return serializeFilterGroup(a) === serializeFilterGroup(b);\n}\n\nfunction fieldByKey(fields: readonly FilterBarField[], key: string) {\n return fields.find((field) => field.key === key);\n}\n\n/** The family's words in the language in force, with the bar's `messages` laid over them. */\nexport type FilterBarTranslator = FamilyTranslator<FilterBarMessages>;\n\n/**\n * A translator that calls the one an input holds at the moment it is read, so\n * an editor's template writes `t('key')` and follows both the input and a\n * change of language.\n */\nfunction follow(source: () => FilterBarTranslator): FilterBarTranslator {\n return ((key: string, slots?: MessageSlots) =>\n (source() as (key: string, slots?: MessageSlots) => string)(key, slots)) as FilterBarTranslator;\n}\n\n/** An operator's name, or the operator itself when the catalog names no such operator. */\nfunction operatorName(t: FilterBarTranslator, operator: string) {\n return operator in filterBarMessages.base.operators\n ? t(`operators.${operator as FilterOperator}`)\n : operator;\n}\n\n/**\n * A message's text on either side of one slot, for a sentence that holds a\n * control: the join chooser stands where `{join}` stands, in the order the\n * language writes it.\n */\nfunction aroundSlot(written: (mark: string) => string): [string, string] {\n const mark = '\\u0000';\n const [before = '', after = ''] = written(mark).split(mark);\n return [before.trim(), after.trim()];\n}\n\n/** The rule a field starts with: its default, else one empty condition on its default operator. */\nfunction blankRule(field: FilterBarField): FilterDescriptor {\n if (field.defaultValue) return field.defaultValue;\n const operator = field.defaultOperator ?? kindDefaultOperator(field.kind);\n return emptyFilter(field.kind, operator as never) as FilterDescriptor;\n}\n\n/**\n * A condition in the words a chip and a rule card write it with: the operator\n * as the sentence reads it, and the value — a list of more than two written as\n * its first two and a count, the whole list kept in `full` for the name and the\n * title.\n */\nfunction ruleWords(\n t: FilterBarTranslator,\n field: FilterBarField | undefined,\n filter: FilterDescriptor | null | undefined,\n): { operator: string; value: string; full: string; operands: number } {\n const kind = filter?.kind ?? field?.kind ?? 'text';\n const condition: Condition = (filter?.conditions[0] as Condition | undefined) ?? {\n operator: field ? (field.defaultOperator ?? kindDefaultOperator(field.kind)) : 'contains',\n };\n const operands = operandCount(condition.operator as FilterOperator);\n const operator = operatorName(t, spokenOperator(kind, condition));\n const write = (value: unknown) =>\n field?.options?.find((option) => option.value === value)?.label ?? String(value);\n const present = (value: unknown) =>\n value !== undefined &&\n value !== null &&\n value !== '' &&\n !(Array.isArray(value) && value.length === 0);\n if (operands === 0) return { operator, value: '', full: '', operands };\n if (kind === 'set') {\n const values = ((condition.value as readonly unknown[] | undefined) ?? []).map(write);\n const full = values.join(', ');\n const value =\n values.length > 2\n ? t('moreValues', { values: values.slice(0, 2).join(', '), count: values.length - 2 })\n : full;\n return { operator, value, full, operands };\n }\n if (operands === 2) {\n if (!present(condition.value) || !present(condition.end)) {\n return { operator, value: '', full: '', operands };\n }\n const range = `${write(condition.value)} – ${write(condition.end)}`;\n return { operator, value: range, full: range, operands };\n }\n const value = present(condition.value) ? write(condition.value) : '';\n return { operator, value, full: value, operands };\n}\n\nfunction countActive(group: FilterGroup | null): number {\n const active = normalizeFilterGroup(group);\n if (!active) return 0;\n let count = 0;\n const walk = (node: FilterNode) => {\n if (isFilterGroup(node)) node.rules.forEach(walk);\n else count += 1;\n };\n walk(active);\n return count;\n}\n\nfunction isEditable(element: Element | null) {\n if (!element) return false;\n const tag = element.tagName;\n return (\n tag === 'INPUT' ||\n tag === 'TEXTAREA' ||\n tag === 'SELECT' ||\n (element as HTMLElement).isContentEditable\n );\n}\n\n/** What a `slFilterBarOperand` template is handed for one operand. */\nexport interface FilterBarOperandContext {\n $implicit: FilterBarField;\n field: FilterBarField;\n operator: FilterOperator;\n index: 0 | 1;\n value: unknown;\n set: (value: unknown) => void;\n apply: () => void;\n label: string;\n size: FilterBarSize;\n}\n\n/**\n * Replaces the operand control of a field's rules. `slFilterBarOperand` names\n * the field, or `*` for every field. The template is rendered per rule and\n * never built for a closed surface.\n */\n@Directive({ selector: 'ng-template[slFilterBarOperand]', standalone: true })\nexport class SlFilterBarOperand {\n readonly field = input.required<string>({ alias: 'slFilterBarOperand' });\n readonly template = inject<TemplateRef<FilterBarOperandContext>>(TemplateRef);\n}\n\n/**\n * Writes this family's part name on a control another family's directive\n * owns. `slButton`, `slIconButton` and `slMenuTriggerFor` each write\n * `data-part` from their host metadata, which erases the one the template\n * wrote — the rule the briefing records for `toolbar`'s overflow control — so\n * the part is written back after the first render, where nothing writes over\n * it again.\n */\n@Directive({ selector: '[slFilterBarPart]', standalone: true })\nexport class SlFilterBarPart {\n readonly part = input.required<string>({ alias: 'slFilterBarPart' });\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n afterNextRender(() => this.host.nativeElement.setAttribute('data-part', this.part()));\n }\n}\n\n/** The consumer's own controls, drawn in the `end` slot. */\n@Directive({ selector: '[slFilterBarEnd]', standalone: true })\nexport class SlFilterBarEnd {}\n\n/** What every editor in the family reads from the bar. */\nexport interface FilterBarEnvironment {\n fields: () => readonly FilterBarField[];\n t: FilterBarTranslator;\n size: () => FilterBarSize;\n operandTemplates: () => readonly SlFilterBarOperand[];\n}\n\n/**\n * One condition — the operator and its operands — with the operand control the\n * kind draws, the same choice `table`'s typed filters make, or the consumer's\n * own template.\n */\n@Component({\n selector: '[slFilterBarCondition]',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n SlDatePicker,\n SlDateTimePicker,\n SlMultiSelect,\n SlMultiSelectItem,\n SlNumberField,\n SlNumberFieldInput,\n SlSelect,\n SlSelectItem,\n SlTextField,\n SlTextFieldInput,\n SlTimePicker,\n ],\n template: `\n @if (withOperator()) {\n <div data-part=\"operator\" [attr.id]=\"ids()?.operator ?? null\">\n <sl-select\n [size]=\"size()\"\n [fullWidth]=\"true\"\n [invalid]=\"invalid() ? true : undefined\"\n [items]=\"operatorItems()\"\n [attr.aria-label]=\"t('operator')\"\n [value]=\"condition().operator\"\n (valueChange)=\"setOperator($any($event))\"\n >\n @for (operator of operators(); track operator) {\n <sl-select-item [value]=\"operator\">{{ operatorName(operator) }}</sl-select-item>\n }\n </sl-select>\n </div>\n }\n <div data-part=\"operand\" [attr.id]=\"ids()?.operand ?? null\">\n @for (slot of slots(); track slot) {\n @if (customTemplate(); as custom) {\n <ng-container\n [ngTemplateOutlet]=\"custom.template\"\n [ngTemplateOutletContext]=\"context(slot)\"\n />\n } @else {\n @switch (field().kind) {\n @case ('number') {\n <div slNumberField [size]=\"size()\">\n <input\n slNumberFieldInput\n [value]=\"$any(operand(slot)) ?? null\"\n [attr.aria-label]=\"operandLabel(slot)\"\n [attr.placeholder]=\"operandLabel(slot)\"\n [attr.min]=\"numberBound(field().min)\"\n [attr.max]=\"numberBound(field().max)\"\n [attr.step]=\"field().step ?? null\"\n (valueChange)=\"setOperand(slot, $event.value)\"\n (keydown.enter)=\"apply()\"\n />\n </div>\n }\n @case ('date') {\n <div\n slDatePicker\n [size]=\"size()\"\n [value]=\"day(operand(slot))\"\n [min]=\"day(field().min) ?? undefined\"\n [max]=\"day(field().max) ?? undefined\"\n [attr.aria-label]=\"operandLabel(slot)\"\n (valueChange)=\"setOperand(slot, isoDay($event.value))\"\n (keydown.enter)=\"apply()\"\n ></div>\n }\n @case ('time') {\n <div\n slTimePicker\n [size]=\"size()\"\n [value]=\"time(operand(slot))\"\n [attr.aria-label]=\"operandLabel(slot)\"\n (valueChange)=\"setOperand(slot, isoTime($event.value))\"\n (keydown.enter)=\"apply()\"\n ></div>\n }\n @case ('datetime') {\n <div\n slDateTimePicker\n [size]=\"size()\"\n [value]=\"dateTime(operand(slot))\"\n [attr.aria-label]=\"operandLabel(slot)\"\n (valueChange)=\"setOperand(slot, isoDateTime($event.value))\"\n (keydown.enter)=\"apply()\"\n ></div>\n }\n @case ('boolean') {\n <sl-select\n [size]=\"size()\"\n [fullWidth]=\"true\"\n [items]=\"truths\"\n [attr.aria-label]=\"operandLabel(slot)\"\n [value]=\"operand(slot) === true ? 'true' : operand(slot) === false ? 'false' : null\"\n (valueChange)=\"setOperand(slot, $event === 'true')\"\n >\n <sl-select-item value=\"true\">true</sl-select-item>\n <sl-select-item value=\"false\">false</sl-select-item>\n </sl-select>\n }\n @case ('set') {\n <sl-multi-select\n [size]=\"size()\"\n [items]=\"field().options ?? []\"\n [placeholder]=\"operandLabel(slot)\"\n [attr.aria-label]=\"operandLabel(slot)\"\n [value]=\"$any(operand(slot)) ?? []\"\n (valueChange)=\"setOperand(slot, [...$event])\"\n >\n @for (option of field().options ?? []; track option.value) {\n <sl-multi-select-item [value]=\"option.value\" [label]=\"option.label\" />\n }\n </sl-multi-select>\n }\n @default {\n <div slTextField [size]=\"size()\">\n <input\n slTextFieldInput\n [value]=\"$any(operand(slot)) ?? ''\"\n [attr.aria-label]=\"operandLabel(slot)\"\n [attr.placeholder]=\"operandLabel(slot)\"\n (valueChange)=\"setOperand(slot, $event.value)\"\n (keydown.enter)=\"apply()\"\n />\n </div>\n }\n }\n }\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: contents' },\n})\nexport class SlFilterBarCondition {\n readonly field = input.required<FilterBarField>();\n readonly condition = input.required<Condition>();\n /** The bar's words, which the condition speaks in. */\n readonly translator = input.required<FilterBarTranslator>();\n readonly size = input.required<FilterBarSize>();\n readonly operandTemplates = input<readonly SlFilterBarOperand[]>([]);\n /** Draws the operator control. A chip's value popover leaves it to the chip's operator segment. */\n readonly withOperator = input(true, { transform: booleanAttribute });\n /** The rule is invalid: the operator select says so itself, edge and ring. */\n readonly invalid = input(false, { transform: booleanAttribute });\n /** Ids for the two parts, which a rule card's sentence names in `aria-controls`. */\n readonly ids = input<{ operator: string; operand: string } | undefined>(undefined);\n readonly applyRequest = output<void>();\n readonly conditionChange = output<Condition>();\n\n protected readonly truths = [\n { label: 'true', value: 'true' },\n { label: 'false', value: 'false' },\n ];\n\n protected readonly operators = computed(\n () => this.field().operators ?? (operatorsFor(this.field().kind) as readonly string[]),\n );\n protected readonly operatorItems = computed(() =>\n this.operators().map((operator) => ({ label: this.operatorName(operator), value: operator })),\n );\n protected readonly slots = computed<readonly (0 | 1)[]>(() => {\n const operands = operandCount(this.condition().operator as FilterOperator);\n return operands === 0 ? [] : operands === 1 ? [0] : [0, 1];\n });\n protected readonly customTemplate = computed(() => {\n const key = this.field().key;\n const templates = this.operandTemplates();\n return (\n templates.find((entry) => entry.field() === key) ??\n templates.find((entry) => entry.field() === '*')\n );\n });\n\n protected readonly t = follow(this.translator);\n\n operatorName(operator: string) {\n return operatorName(this.t, operator);\n }\n\n protected operandLabel(slot: 0 | 1) {\n if (this.slots().length < 2) return this.t('value');\n return slot === 0 ? this.t('from') : this.t('to');\n }\n\n protected operand(slot: 0 | 1): unknown {\n const condition = this.condition();\n return (slot === 0 ? condition.value : condition.end) ?? null;\n }\n\n protected numberBound(value: number | string | undefined) {\n return typeof value === 'number' ? value : null;\n }\n\n protected day = (value: unknown) => (value ? parseISODate(String(value)) : null);\n protected time = (value: unknown) => (value ? parseISOTime(String(value)) : null);\n protected dateTime = (value: unknown) => (value ? parseISODateTime(String(value)) : null);\n protected isoDay = (value: unknown) => (isPlainDate(value) ? toISODate(value) : null);\n protected isoTime = (value: unknown) => (isPlainTime(value) ? toISOTime(value, 'minute') : null);\n protected isoDateTime = (value: unknown) =>\n isPlainDateTime(value) ? toISODateTime(value) : null;\n\n protected setOperator(operator: string) {\n const condition = this.condition();\n const before = operandCount(condition.operator as FilterOperator);\n const after = operandCount(operator as FilterOperator);\n /* An operand the new operator still takes survives the change. */\n this.conditionChange.emit({\n operator,\n ...(after >= 1 && before >= 1 ? { value: condition.value } : {}),\n ...(after === 2 && before === 2 ? { end: condition.end } : {}),\n });\n }\n\n protected setOperand(slot: 0 | 1, value: unknown) {\n const condition = this.condition();\n this.conditionChange.emit(slot === 0 ? { ...condition, value } : { ...condition, end: value });\n }\n\n protected apply() {\n this.applyRequest.emit();\n }\n\n protected context(slot: 0 | 1): FilterBarOperandContext {\n const field = this.field();\n return {\n $implicit: field,\n apply: () => this.apply(),\n field,\n index: slot,\n label: this.operandLabel(slot),\n operator: this.condition().operator as FilterOperator,\n set: (value) => this.setOperand(slot, value),\n size: this.size(),\n value: this.operand(slot),\n };\n }\n}\n\n/**\n * One rule row in the builder: its sentence, field, operator, operand, remove.\n * The sentence heads the card the stylesheet draws while the builder is\n * narrow, and pressing it expands the card.\n */\n@Component({\n selector: '[slFilterBarRule]',\n standalone: true,\n imports: [SlFilterBarCondition, SlGlyph, SlIcon, SlSelect, SlSelectItem],\n template: `\n <button\n data-part=\"rule-summary\"\n type=\"button\"\n [attr.aria-expanded]=\"isExpanded()\"\n [attr.aria-controls]=\"id + '-field ' + id + '-operator ' + id + '-operand'\"\n (click)=\"expandedChange.emit(isExpanded() ? null : key())\"\n >\n <span data-sentence\n ><span data-field>{{ label() }}</span\n >&ngsp;<span data-operator>{{ words().operator }}</span>\n @if (words().operands > 0) {\n &ngsp;<span data-value>{{ words().value || t('noValue') }}</span>\n }\n </span>\n <span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n <div data-part=\"field\" [id]=\"id + '-field'\">\n <sl-select\n [size]=\"size()\"\n [fullWidth]=\"true\"\n [invalid]=\"invalid() || !field() ? true : undefined\"\n [items]=\"fieldItems()\"\n [attr.aria-label]=\"t('field')\"\n [value]=\"rule().field\"\n (valueChange)=\"changeField($any($event))\"\n >\n @for (entry of fields(); track entry.key) {\n <sl-select-item [value]=\"entry.key\">{{ entry.label }}</sl-select-item>\n }\n </sl-select>\n </div>\n @if (field(); as known) {\n <div\n slFilterBarCondition\n [field]=\"known\"\n [condition]=\"condition()\"\n [translator]=\"translator()\"\n [size]=\"size()\"\n [operandTemplates]=\"operandTemplates()\"\n [ids]=\"{ operator: id + '-operator', operand: id + '-operand' }\"\n [invalid]=\"invalid()\"\n (conditionChange)=\"changeCondition($event)\"\n (applyRequest)=\"applyRequest.emit()\"\n ></div>\n } @else {\n <div data-part=\"operator\" [id]=\"id + '-operator'\"></div>\n <div data-part=\"operand\" [id]=\"id + '-operand'\"></div>\n }\n @if (removable()) {\n <button\n data-part=\"remove\"\n type=\"button\"\n [attr.aria-label]=\"t('removeRule')\"\n (click)=\"removeRequest.emit()\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n } @else {\n <span></span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'rule',\n '[attr.data-kind]': 'field()?.kind ?? null',\n '[attr.data-operands]': 'operands()',\n '[attr.data-invalid]': 'invalid() || !field() ? \"\" : null',\n '[attr.data-expanded]': 'isExpanded() ? \"\" : null',\n },\n})\nexport class SlFilterBarRule {\n readonly rule = input.required<FilterRule>();\n readonly fields = input.required<readonly FilterBarField[]>();\n /** The bar's words, which the rule speaks in. */\n readonly translator = input.required<FilterBarTranslator>();\n readonly size = input.required<FilterBarSize>();\n readonly operandTemplates = input<readonly SlFilterBarOperand[]>([]);\n readonly removable = input(true, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n /** The rule's path inside the root, which names its card. */\n readonly path = input<FilterPath>([]);\n /** The one card open in the builder, by its path joined with dots. */\n readonly expanded = input<string | null>(null);\n readonly ruleChange = output<FilterRule>();\n readonly removeRequest = output<void>();\n readonly applyRequest = output<void>();\n readonly expandedChange = output<string | null>();\n\n protected readonly id = `slotted-filter-bar-rule-${(counter += 1)}`;\n protected readonly t = follow(this.translator);\n protected readonly key = computed(() => this.path().join('.'));\n protected readonly isExpanded = computed(() => this.expanded() === this.key());\n protected readonly field = computed(() => fieldByKey(this.fields(), this.rule().field));\n protected readonly condition = computed<Condition>(() => {\n const field = this.field();\n return (\n this.rule().filter.conditions[0] ?? {\n operator: field ? (field.defaultOperator ?? kindDefaultOperator(field.kind)) : 'contains',\n }\n );\n });\n protected readonly operands = computed(() =>\n this.field() ? operandCount(this.condition().operator as FilterOperator) : 0,\n );\n protected readonly fieldItems = computed(() =>\n this.fields().map((entry) => ({ label: entry.label, value: entry.key })),\n );\n protected readonly words = computed(() => ruleWords(this.t, this.field(), this.rule().filter));\n protected readonly label = computed(\n () => this.field()?.label ?? this.t('unknownField', { field: this.rule().field }),\n );\n\n protected changeField(key: string) {\n const next = fieldByKey(this.fields(), key);\n if (!next) return;\n this.ruleChange.emit({ field: key, filter: blankRule(next) });\n }\n\n protected changeCondition(condition: Condition) {\n const rule = this.rule();\n this.ruleChange.emit({\n field: rule.field,\n filter: withCondition(rule.filter, 0, condition as never),\n });\n }\n}\n\n/**\n * A group: its join, its rules and groups in order, and the controls that grow\n * it. Recursive, so a group holds a group; the depth is on the element for the\n * rail the stylesheet draws.\n */\n@Component({\n selector: 'fieldset[slFilterBarGroup]',\n standalone: true,\n imports: [\n forwardRef(() => SlFilterBarGroup),\n SlButton,\n SlButtonStart,\n SlFilterBarPart,\n SlFilterBarRule,\n SlGlyph,\n SlIcon,\n SlIconButton,\n SlSegment,\n SlSegmentedControl,\n ],\n template: `\n <legend>{{ t('matches', { join: joinWord() }) }}</legend>\n <div data-part=\"join\">\n @if (aroundJoin()[0]) {\n <span>{{ aroundJoin()[0] }}</span>\n }\n <div\n slSegmentedControl\n size=\"sm\"\n [attr.aria-label]=\"t('match')\"\n [value]=\"group().join\"\n (valueChange)=\"setJoin($event.value ?? 'and')\"\n >\n <label slSegment value=\"and\">{{ t('matchAll') }}</label>\n <label slSegment value=\"or\">{{ t('matchAny') }}</label>\n </div>\n @if (aroundJoin()[1]) {\n <span>{{ aroundJoin()[1] }}</span>\n }\n @if (path().length > 0) {\n <button\n slIconButton\n slFilterBarPart=\"remove-group\"\n type=\"button\"\n tone=\"secondary\"\n variant=\"ghost\"\n [size]=\"buttonSize()\"\n [attr.aria-label]=\"t('removeGroup')\"\n [attr.title]=\"t('removeGroup')\"\n (click)=\"rootChange.emit(removeNodeAt(root(), path()))\"\n >\n <span slIcon><svg slGlyph name=\"trash\"></svg></span>\n </button>\n }\n </div>\n <div data-part=\"rules\">\n @for (node of group().rules; track $index) {\n <span data-part=\"conjunction\">{{\n $index === 0 ? t('where') : t(group().join === 'and' ? 'joins.and' : 'joins.or')\n }}</span>\n @if (isGroup(node)) {\n <fieldset\n slFilterBarGroup\n [group]=\"$any(node)\"\n [path]=\"childPath($index)\"\n [root]=\"root()\"\n [fields]=\"fields()\"\n [translator]=\"translator()\"\n [size]=\"size()\"\n [operandTemplates]=\"operandTemplates()\"\n [expanded]=\"expanded()\"\n (expandedChange)=\"expandedChange.emit($event)\"\n (rootChange)=\"rootChange.emit($event)\"\n (applyRequest)=\"applyRequest.emit()\"\n ></fieldset>\n } @else {\n <div\n slFilterBarRule\n [rule]=\"$any(node)\"\n [path]=\"childPath($index)\"\n [fields]=\"fields()\"\n [translator]=\"translator()\"\n [size]=\"size()\"\n [operandTemplates]=\"operandTemplates()\"\n [removable]=\"!isRequired($any(node))\"\n [expanded]=\"expanded()\"\n (expandedChange)=\"expandedChange.emit($event)\"\n (ruleChange)=\"replace($index, $event)\"\n (removeRequest)=\"remove($index)\"\n (applyRequest)=\"applyRequest.emit()\"\n ></div>\n }\n }\n </div>\n <div data-part=\"actions\">\n <button\n slButton\n slFilterBarPart=\"add-rule\"\n type=\"button\"\n tone=\"secondary\"\n [variant]=\"path().length === 0 ? 'outline' : 'ghost'\"\n [size]=\"buttonSize()\"\n [disabled]=\"!firstField()\"\n (click)=\"addRule()\"\n >\n <span slButtonStart\n ><span slIcon><svg slGlyph name=\"plus\"></svg></span\n ></span>\n {{ t('addRule') }}\n </button>\n <button\n slButton\n slFilterBarPart=\"add-group\"\n type=\"button\"\n tone=\"secondary\"\n [variant]=\"path().length === 0 ? 'outline' : 'ghost'\"\n [size]=\"buttonSize()\"\n [disabled]=\"!firstField()\"\n (click)=\"addGroup()\"\n >\n <span slButtonStart\n ><span slIcon><svg slGlyph name=\"plus\"></svg></span\n ></span>\n {{ t('addGroup') }}\n </button>\n @if (path().length === 0) {\n <ng-content></ng-content>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'group',\n '[attr.data-depth]': 'path().length',\n },\n})\nexport class SlFilterBarGroup {\n readonly group = input.required<FilterGroup>();\n readonly path = input<FilterPath>([]);\n readonly root = input.required<FilterGroup>();\n readonly fields = input.required<readonly FilterBarField[]>();\n /** The bar's words, which the group speaks in. */\n readonly translator = input.required<FilterBarTranslator>();\n readonly size = input.required<FilterBarSize>();\n readonly operandTemplates = input<readonly SlFilterBarOperand[]>([]);\n /** The one rule card open in the builder, by its path joined with dots. */\n readonly expanded = input<string | null>(null);\n readonly rootChange = output<FilterGroup>();\n readonly applyRequest = output<void>();\n readonly expandedChange = output<string | null>();\n\n protected readonly t = follow(this.translator);\n protected readonly joinWord = computed(() =>\n this.group().join === 'and' ? this.t('matchAll') : this.t('matchAny'),\n );\n /** The words of `matches` before and after the join chooser, which stands in its `{join}`. */\n protected readonly aroundJoin = computed(() => aroundSlot((join) => this.t('matches', { join })));\n protected readonly removeNodeAt = removeNodeAt;\n protected readonly firstField = computed(() => this.fields()[0]);\n protected readonly buttonSize = computed(() => (this.size() === 'lg' ? 'md' : 'sm'));\n\n protected isGroup(node: FilterNode) {\n return isFilterGroup(node);\n }\n protected isRequired(rule: FilterRule) {\n return fieldByKey(this.fields(), rule.field)?.required === true;\n }\n protected childPath(index: number): FilterPath {\n return [...this.path(), index];\n }\n protected setJoin(join: string) {\n this.rootChange.emit(withGroupJoin(this.root(), this.path(), join as FilterJoin));\n }\n protected replace(index: number, rule: FilterRule) {\n this.rootChange.emit(updateNodeAt(this.root(), this.childPath(index), rule));\n }\n protected remove(index: number) {\n this.rootChange.emit(removeNodeAt(this.root(), this.childPath(index)));\n }\n /* A rule just added opens as an expanded card, where its three controls are. */\n protected addRule() {\n const field = this.firstField();\n if (!field) return;\n const at = this.group().rules.length;\n this.rootChange.emit(\n insertNodeAt(this.root(), this.path(), { field: field.key, filter: blankRule(field) }),\n );\n this.expandedChange.emit([...this.path(), at].join('.'));\n }\n protected addGroup() {\n const field = this.firstField();\n if (!field) return;\n const at = this.group().rules.length;\n this.rootChange.emit(\n insertNodeAt(this.root(), this.path(), {\n join: this.group().join === 'and' ? 'or' : 'and',\n rules: [{ field: field.key, filter: blankRule(field) }],\n }),\n );\n this.expandedChange.emit([...this.path(), at, 0].join('.'));\n }\n}\n\n/**\n * One rule in a popover. Under `live` every change is requested at once — a\n * text or number operand after `queryDelay`, so a query does not fire per\n * keystroke — and Done closes; under `manual` the change goes to the draft the\n * same way. Clear removes the rule, which a required field refuses.\n */\n@Component({\n selector: '[slFilterBarRuleEditor]',\n standalone: true,\n imports: [SlButton, SlFilterBarCondition],\n template: `\n <div\n slFilterBarCondition\n [field]=\"field()\"\n [condition]=\"condition()\"\n [translator]=\"translator()\"\n [size]=\"size()\"\n [operandTemplates]=\"operandTemplates()\"\n [withOperator]=\"withOperator()\"\n [invalid]=\"invalid()\"\n (conditionChange)=\"change($event)\"\n (applyRequest)=\"done()\"\n ></div>\n <div data-part=\"actions\">\n <button\n slButton\n type=\"button\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n [disabled]=\"field().required === true\"\n (click)=\"clear()\"\n >\n {{ t('clearRule') }}\n </button>\n <button slButton type=\"button\" size=\"sm\" (click)=\"done()\">{{ t('done') }}</button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'filter-bar',\n 'data-part': 'rule',\n '[attr.data-kind]': 'field().kind',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n },\n})\nexport class SlFilterBarRuleEditor {\n readonly field = input.required<FilterBarField>();\n readonly current = input<FilterDescriptor | undefined>(undefined);\n /** The bar's words, which the editor speaks in. */\n readonly translator = input.required<FilterBarTranslator>();\n readonly size = input.required<FilterBarSize>();\n readonly operandTemplates = input<readonly SlFilterBarOperand[]>([]);\n readonly queryDelay = input(0);\n readonly invalid = input(false, { transform: booleanAttribute });\n /** Draws the operator control: a chip's value popover leaves it to the chip. */\n readonly withOperator = input(true, { transform: booleanAttribute });\n readonly ruleChange = output<FilterDescriptor | null>();\n readonly doneRequest = output<void>();\n\n protected readonly t = follow(this.translator);\n private readonly destroyRef = inject(DestroyRef);\n private readonly local = signal<FilterDescriptor | null>(null);\n private timer: ReturnType<typeof setTimeout> | undefined;\n\n protected readonly draft = computed(\n () => this.local() ?? this.current() ?? blankRule(this.field()),\n );\n protected readonly condition = computed<Condition>(\n () =>\n this.draft().conditions[0] ?? {\n operator: this.field().defaultOperator ?? kindDefaultOperator(this.field().kind),\n },\n );\n\n constructor() {\n /* A change made elsewhere — the chip's operator segment — reaches the\n editor unless a keystroke is still waiting. */\n effect(() => {\n this.current();\n untracked(() => {\n if (this.timer === undefined) this.local.set(null);\n });\n });\n this.destroyRef.onDestroy(() => clearTimeout(this.timer));\n }\n\n protected change(condition: Condition) {\n const next = { ...this.draft(), conditions: [condition] } as FilterDescriptor;\n this.local.set(next);\n clearTimeout(this.timer);\n this.timer = undefined;\n const kind = this.field().kind;\n const debounced = (kind === 'text' || kind === 'number') && this.queryDelay() > 0;\n if (!debounced) {\n this.ruleChange.emit(next);\n return;\n }\n this.timer = setTimeout(() => {\n this.timer = undefined;\n this.ruleChange.emit(next);\n }, this.queryDelay());\n }\n\n protected done() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = undefined;\n this.ruleChange.emit(this.draft());\n }\n this.doneRequest.emit();\n }\n\n protected clear() {\n clearTimeout(this.timer);\n this.timer = undefined;\n this.local.set(null);\n this.ruleChange.emit(null);\n this.doneRequest.emit();\n }\n}\n\n/** One field's condition in the bar, as its chip draws it. */\ninterface BarChip {\n readonly kind: 'chip';\n readonly id: string;\n readonly key: string;\n readonly field: FilterBarField | undefined;\n readonly filter: FilterDescriptor;\n readonly label: string;\n /** The group's name: the field and its sentence, and whether it is incomplete. */\n readonly name: string;\n /** The operator as the sentence reads it. */\n readonly operator: string;\n /** The condition's own operator, which the operator menu checks. */\n readonly condition: string;\n readonly operators: readonly string[];\n readonly operands: number;\n readonly value: string;\n readonly valueName: string;\n readonly valueTitle: string | null;\n readonly hasValue: boolean;\n readonly pinned: boolean;\n readonly incomplete: boolean;\n readonly folded: boolean;\n readonly unknown: boolean;\n readonly removable: boolean;\n}\n\n/** A pinned field without a condition. */\ninterface BarPill {\n readonly kind: 'pill';\n readonly id: string;\n readonly field: FilterBarField;\n}\n\n/** A group at the first level, written as one sentence that opens the builder. */\ninterface BarGroup {\n readonly kind: 'group';\n readonly id: string;\n readonly path: FilterPath;\n readonly words: string;\n readonly folded: boolean;\n}\n\ntype BarMember = BarChip | BarPill | BarGroup;\n\n/**\n * A condition the reader started — from `add` or from a pinned field's pill —\n * and whose operand is not there yet. It is the bar's own and not the value's:\n * the engine would drop it as inactive anyway, so it is drawn as an incomplete\n * chip and enters the value the moment it is complete.\n */\ninterface PendingRule {\n key: string;\n filter: FilterDescriptor;\n /** Where an applied rule stood before it lost its operand, so its chip keeps its place. */\n at?: number;\n}\n\n/**\n * A bar above a listing that edits one value: a tree of conditions over the\n * listing's fields, whose leaves are the descriptor `table` edits in a column\n * header. The bar draws the first level — a search field, a pill per pinned\n * field without a condition, a chip of segments per condition — and opens a\n * drawer on the whole tree.\n *\n * The family applies nothing. It reports the tree and the query, and\n * `createFilterGroupPredicate` and `createSearchPredicate` in\n * `@slotted/core/filter` are what a consumer applies to its own rows.\n */\n@Component({\n selector: '[slFilterBar]',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlButtonStart,\n SlDrawer,\n SlDrawerBody,\n SlDrawerClose,\n SlDrawerFooter,\n SlDrawerHeader,\n SlDrawerTitle,\n SlFilterBarGroup,\n SlFilterBarPart,\n SlFilterBarRuleEditor,\n SlGlyph,\n SlIcon,\n SlIconButton,\n SlKbd,\n SlMenu,\n SlMenuGroup,\n SlMenuItem,\n SlMenuItemIcon,\n SlMenuRadioGroup,\n SlMenuTrigger,\n SlPopover,\n SlPopoverContent,\n SlPopoverBody,\n SlPopoverLayer,\n SlPopoverTrigger,\n SlSelect,\n SlSelectItem,\n SlTextField,\n SlTextFieldEnd,\n SlTextFieldStart,\n SlTextFieldInput,\n ],\n template: `\n <ng-template #fieldIcon let-icon>\n @if (isTemplate(icon)) {\n <span slIcon><ng-container [ngTemplateOutlet]=\"icon\" /></span>\n } @else if (icon) {\n <span slIcon><svg slGlyph [name]=\"icon\"></svg></span>\n }\n </ng-template>\n\n <div data-part=\"frame\">\n <div data-part=\"search\">\n <div slTextField [size]=\"sizeValue()\" [clearable]=\"true\">\n <span slTextFieldStart\n ><span slIcon><svg slGlyph name=\"search\"></svg></span\n ></span>\n <input\n #search\n slTextFieldInput\n type=\"search\"\n [value]=\"shownQuery()\"\n [attr.aria-label]=\"t('search')\"\n [attr.placeholder]=\"t('search')\"\n [disabled]=\"disabled()\"\n (valueChange)=\"typeQuery($event)\"\n (keydown)=\"onSearchKeyDown($event)\"\n />\n @if (shortcutValue(); as key) {\n <span slTextFieldEnd\n ><kbd slKbd size=\"sm\">{{ key }}</kbd></span\n >\n }\n </div>\n </div>\n\n <div\n #barRow\n data-part=\"bar\"\n role=\"toolbar\"\n [attr.aria-label]=\"t('filters')\"\n [attr.aria-description]=\"readOnly() ? t('readOnly') : null\"\n [attr.data-revealed]=\"isRevealed() ? '' : null\"\n >\n <button\n slButton\n slFilterBarPart=\"summary\"\n type=\"button\"\n tone=\"secondary\"\n variant=\"outline\"\n aria-haspopup=\"dialog\"\n [size]=\"sizeValue()\"\n [disabled]=\"disabled()\"\n (click)=\"openBuilderAt('pointer', $event)\"\n >\n <span slButtonStart\n ><span slIcon><svg slGlyph name=\"funnel\"></svg></span\n ></span>\n <span>{{ t('summary', { count: activeCount() }) }}</span>\n </button>\n\n @for (member of members(); track member.id) {\n @if (pillOf(member); as pill) {\n <button\n data-part=\"pill\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.data-field]=\"pill.field.key\"\n [attr.data-invalid]=\"invalid() === pill.field.key ? '' : null\"\n [attr.aria-invalid]=\"invalid() === pill.field.key ? 'true' : null\"\n [disabled]=\"disabled()\"\n (click)=\"start(pill.field.key, $event)\"\n >\n <span slIcon><svg slGlyph name=\"plus\"></svg></span><span>{{ pill.field.label }}</span>\n </button>\n }\n @if (chipOf(member); as chip) {\n <div\n data-part=\"chip\"\n role=\"group\"\n [attr.aria-label]=\"chip.name\"\n [attr.data-field]=\"chip.key\"\n [attr.data-operands]=\"chip.operands\"\n [attr.data-pinned]=\"chip.pinned ? '' : null\"\n [attr.data-incomplete]=\"chip.incomplete ? '' : null\"\n [attr.data-folded]=\"chip.folded ? '' : null\"\n [attr.data-invalid]=\"chip.unknown || invalid() === chip.key ? '' : null\"\n (keydown)=\"onChipKeyDown($event, chip.key)\"\n >\n <span data-part=\"chip-field\"\n ><ng-container\n [ngTemplateOutlet]=\"fieldIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: chip.field?.icon }\"\n /><span>{{ chip.label }}</span></span\n >\n @if (readOnly() || chip.unknown) {\n <button\n data-part=\"chip-operator\"\n type=\"button\"\n aria-disabled=\"true\"\n [disabled]=\"disabled()\"\n >\n {{ chip.operator }}\n </button>\n } @else {\n <button\n data-part=\"chip-operator\"\n slFilterBarPart=\"chip-operator\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [slMenuTriggerFor]=\"operatorMenu\"\n >\n {{ chip.operator }}\n </button>\n <sl-menu #operatorMenu [aria-label]=\"t('operator')\">\n <sl-menu-radio-group\n [value]=\"chip.condition\"\n (valueChangeRequest)=\"setOperator(chip.key, chip.filter, $event.value)\"\n >\n @for (operator of chip.operators; track operator) {\n <button slMenuRadioItem [value]=\"operator\" [closeOnSelect]=\"true\">\n {{ operatorWords(operator) }}\n </button>\n }\n </sl-menu-radio-group>\n </sl-menu>\n }\n @if (chip.hasValue) {\n @if (readOnly() || chip.unknown || narrow()) {\n <button\n data-part=\"chip-value\"\n type=\"button\"\n [attr.aria-haspopup]=\"readOnly() || chip.unknown ? null : 'dialog'\"\n [attr.aria-disabled]=\"readOnly() || chip.unknown ? 'true' : null\"\n [attr.aria-label]=\"chip.valueName\"\n [attr.title]=\"chip.valueTitle\"\n [disabled]=\"disabled()\"\n (click)=\"onValueSegment(chip, $event)\"\n >\n <span data-operator>{{ chip.operator }}</span\n ><span data-value>{{ chip.value }}</span>\n </button>\n } @else if (chip.field; as field) {\n <ng-container\n slPopover\n [open]=\"valueOpen() === chip.key\"\n (openChange)=\"toggleValue(chip.key, $event)\"\n >\n <button\n slPopoverTrigger\n data-part=\"chip-value\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.aria-label]=\"chip.valueName\"\n [attr.title]=\"chip.valueTitle\"\n [disabled]=\"disabled()\"\n >\n <span data-operator>{{ chip.operator }}</span\n ><span data-value>{{ chip.value }}</span>\n </button>\n <ng-template slPopoverLayer>\n <div slPopoverContent [attr.aria-label]=\"chip.label\">\n <div slPopoverBody>\n <div\n slFilterBarRuleEditor\n [field]=\"field\"\n [current]=\"chip.filter\"\n [translator]=\"t\"\n [size]=\"sizeValue()\"\n [operandTemplates]=\"operandTemplates()\"\n [queryDelay]=\"applyValue() === 'live' ? queryDelayValue() : 0\"\n [invalid]=\"invalid() === chip.key\"\n [withOperator]=\"false\"\n (ruleChange)=\"changeRule(chip.key, $event, 'keyboard')\"\n (doneRequest)=\"finishValue(chip.key)\"\n ></div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n }\n }\n @if (chip.removable) {\n <button\n data-part=\"chip-remove\"\n type=\"button\"\n [attr.aria-label]=\"t('remove', { name: chip.label })\"\n [disabled]=\"disabled()\"\n (click)=\"removeField(chip.key, $event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n </div>\n }\n @if (groupOf(member); as group) {\n <div\n data-part=\"chip\"\n role=\"group\"\n data-operands=\"1\"\n [attr.aria-label]=\"group.words\"\n [attr.data-folded]=\"group.folded ? '' : null\"\n (keydown)=\"onGroupKeyDown($event, group.path)\"\n >\n <button\n data-part=\"chip-value\"\n type=\"button\"\n aria-haspopup=\"dialog\"\n [attr.aria-disabled]=\"readOnly() ? 'true' : null\"\n [attr.title]=\"group.words\"\n [disabled]=\"disabled()\"\n (click)=\"readOnly() ? null : openBuilderAt('pointer', $event, { path: group.path })\"\n >\n <span data-value>{{ group.words }}</span>\n </button>\n @if (!readOnly()) {\n <button\n data-part=\"chip-remove\"\n type=\"button\"\n [attr.aria-label]=\"t('remove', { name: group.words })\"\n [disabled]=\"disabled()\"\n (click)=\"removeNode(group.path, $event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n </div>\n }\n }\n\n @if (folded() > 0) {\n <button\n data-part=\"more\"\n type=\"button\"\n [attr.aria-expanded]=\"isRevealed()\"\n [disabled]=\"disabled()\"\n (click)=\"requestRevealed(!isRevealed(), 'pointer', $event)\"\n >\n {{ isRevealed() ? t('less') : t('more', { count: folded() }) }}\n </button>\n }\n\n @if (!readOnly()) {\n @if (chipCount() > 0) {\n <!-- With a chip in the bar, add is its glyph alone, in the chips' shape; the label stays its name. -->\n <button\n slIconButton\n slFilterBarPart=\"add\"\n data-compact\n type=\"button\"\n shape=\"circle\"\n tone=\"secondary\"\n variant=\"outline\"\n [size]=\"sizeValue()\"\n [attr.aria-label]=\"t('add')\"\n [attr.title]=\"t('add')\"\n [disabled]=\"disabled() || unfiltered().length === 0\"\n [slMenuTriggerFor]=\"addMenu\"\n >\n <span slIcon><svg slGlyph name=\"plus\"></svg></span>\n </button>\n } @else {\n <button\n slButton\n slFilterBarPart=\"add\"\n type=\"button\"\n tone=\"secondary\"\n variant=\"ghost\"\n [size]=\"sizeValue()\"\n [disabled]=\"disabled() || unfiltered().length === 0\"\n [slMenuTriggerFor]=\"addMenu\"\n >\n <!-- The glyph stands in the button's own box; bare in the label it has no size. -->\n <span slButtonStart\n ><span slIcon><svg slGlyph name=\"plus\"></svg></span\n ></span>\n {{ t('add') }}\n </button>\n }\n <sl-menu #addMenu [aria-label]=\"t('add')\">\n @for (section of sections(); track section.name ?? '') {\n @if (section.name === undefined) {\n @for (field of section.fields; track field.key) {\n <button slMenuItem (select)=\"start(field.key, $event.source)\">\n @if (field.icon) {\n <span slMenuItemIcon\n ><ng-container\n [ngTemplateOutlet]=\"fieldIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: field.icon }\"\n /></span>\n }\n {{ field.label }}\n </button>\n }\n } @else {\n <sl-menu-group [label]=\"section.name\">\n @for (field of section.fields; track field.key) {\n <button slMenuItem (select)=\"start(field.key, $event.source)\">\n @if (field.icon) {\n <span slMenuItemIcon\n ><ng-container\n [ngTemplateOutlet]=\"fieldIcon\"\n [ngTemplateOutletContext]=\"{ $implicit: field.icon }\"\n /></span>\n }\n {{ field.label }}\n </button>\n }\n </sl-menu-group>\n }\n }\n </sl-menu>\n }\n\n @if (!readOnly() && (activeCount() > 0 || shownQuery() !== '' || pending())) {\n <button\n slButton\n slFilterBarPart=\"clear\"\n type=\"button\"\n tone=\"secondary\"\n variant=\"ghost\"\n [size]=\"sizeValue()\"\n [disabled]=\"disabled()\"\n (click)=\"clearAll($event)\"\n >\n {{ t('clear') }}\n </button>\n }\n\n @if (applyValue() === 'manual' && !readOnly()) {\n <div data-part=\"actions\">\n <button\n slButton\n slFilterBarPart=\"reset\"\n type=\"button\"\n tone=\"secondary\"\n variant=\"ghost\"\n [size]=\"sizeValue()\"\n [disabled]=\"disabled() || !dirty()\"\n (click)=\"reset()\"\n >\n {{ t('reset') }}\n </button>\n <button\n slButton\n slFilterBarPart=\"apply\"\n type=\"button\"\n [size]=\"sizeValue()\"\n [disabled]=\"disabled() || loading() || !dirty()\"\n (click)=\"submit($event)\"\n >\n {{ t('apply') }}\n </button>\n </div>\n }\n </div>\n\n <div data-part=\"end\">\n @if (presets(); as views) {\n @if (views.length > 0) {\n <!-- Clearable: leaving a preset is the control's own clear, and\n without it the one way out of a saved view is deleting it. -->\n <div data-part=\"preset\">\n <sl-select\n clearable\n [size]=\"sizeValue()\"\n [disabled]=\"disabled() || readOnly()\"\n [items]=\"presetItems()\"\n [attr.aria-label]=\"t('preset')\"\n [placeholder]=\"t('presetNone')\"\n [value]=\"currentPreset()\"\n (valueChange)=\"choosePreset($any($event))\"\n >\n @for (view of views; track view.key) {\n <sl-select-item [value]=\"view.key\">{{ view.label }}</sl-select-item>\n }\n </sl-select>\n </div>\n }\n }\n <ng-content select=\"[slFilterBarEnd]\"></ng-content>\n </div>\n\n @if (countText() !== null || loading()) {\n <p data-part=\"count\" aria-live=\"polite\" [attr.aria-busy]=\"loading() ? 'true' : null\">\n @if (loading()) {\n <span\n data-ui=\"spinner\"\n data-part=\"root\"\n data-size=\"sm\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('filters')\"\n ></span>\n }\n {{ countText() }}\n </p>\n }\n </div>\n\n <sl-drawer\n [side]=\"sheet() ? 'bottom' : 'end'\"\n [size]=\"sheet() ? 'content' : 'xl'\"\n [container]=\"container()\"\n [open]=\"isOpen()\"\n (openChangeRequest)=\"onDrawerRequest($event)\"\n >\n <header slDrawerHeader>\n <h2 slDrawerTitle>{{ t('builder') }}</h2>\n <button slDrawerClose></button>\n </header>\n <div slDrawerBody>\n <div data-part=\"builder\" data-ui=\"filter-bar\" [id]=\"id + '-builder'\">\n <fieldset\n slFilterBarGroup\n [group]=\"drawerDraft() ?? empty\"\n [root]=\"drawerDraft() ?? empty\"\n [fields]=\"fields()\"\n [translator]=\"t\"\n [size]=\"sizeValue()\"\n [operandTemplates]=\"operandTemplates()\"\n [expanded]=\"expanded()\"\n (expandedChange)=\"expanded.set($event)\"\n (rootChange)=\"drawerDraft.set($event)\"\n (applyRequest)=\"commitDrawer()\"\n >\n @if (draftActive() > 0) {\n <button\n slButton\n slFilterBarPart=\"clear\"\n type=\"button\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"drawerDraft.set(baseline())\"\n >\n {{ t('clear') }}\n </button>\n }\n @if (savePresetEnabled()) {\n <button\n slButton\n slFilterBarPart=\"save-preset\"\n type=\"button\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"savePreset.emit(normalized(drawerDraft()))\"\n >\n {{ t('savePreset') }}\n </button>\n }\n </fieldset>\n </div>\n </div>\n <footer slDrawerFooter>\n <button\n slButton\n type=\"button\"\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"requestOpen(false, 'dismiss', $event)\"\n >\n {{ t('cancel') }}\n </button>\n <button slButton type=\"button\" size=\"sm\" (click)=\"commitDrawer()\">\n {{ t('apply') }}\n </button>\n </footer>\n </sl-drawer>\n `,\n styleUrl: '../../../styles/src/filter-bar/filter-bar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slFilterBar',\n host: {\n 'data-ui': 'filter-bar',\n 'data-part': 'root',\n role: 'search',\n '[attr.aria-label]': \"ariaLabel ?? t('bar')\",\n '[attr.data-apply]': 'applyValue()',\n '[attr.data-size]': 'sizeValue()',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-readonly]': 'readOnly() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n '[attr.data-dirty]': 'dirty() || presetDirty() ? \"\" : null',\n '[attr.data-open]': 'isOpen() ? \"\" : null',\n '[attr.data-sticky]': 'sticky() ? \"\" : null',\n },\n})\nexport class SlFilterBar {\n /** The fields the listing can be filtered by, in the order the add menu lists them. */\n readonly fields = input.required<readonly FilterBarField[]>();\n /** The tree. Present is controlled, for the life of the bar. */\n readonly value = model<FilterGroup | null | undefined>(undefined);\n /** Where an uncontrolled tree starts, read once. */\n readonly defaultValue = input<FilterGroup | null>(null);\n /** The global query. */\n readonly query = model<string | undefined>(undefined);\n readonly defaultQuery = input('');\n readonly presets = input<readonly FilterBarPreset[] | undefined>(undefined);\n readonly preset = model<string | null | undefined>(undefined);\n readonly defaultPreset = input<string | null>(null);\n /** Whether the builder is open. */\n readonly open = model<boolean | undefined>(undefined);\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n /** Whether the chips past `chipLimit` are shown. */\n readonly revealed = model<boolean | undefined>(undefined);\n readonly defaultRevealed = input(false, { transform: booleanAttribute });\n\n /** The five effective values: the model when it is set, the default otherwise. */\n readonly currentValue = computed(() => this.value() ?? this.defaultValue());\n readonly currentQuery = computed(() => this.query() ?? this.defaultQuery());\n readonly currentPreset = computed(() => this.preset() ?? this.defaultPreset());\n readonly isOpen = computed(() => this.open() ?? this.defaultOpen());\n readonly isRevealed = computed(() => this.revealed() ?? this.defaultRevealed());\n readonly apply = input<FilterBarApply | undefined>(undefined);\n readonly sticky = input(false, { transform: booleanAttribute });\n /** A parent for the builder's drawer alone, instead of the shared portal root. */\n readonly container = input<Element | null | undefined>(undefined);\n readonly size = input<FilterBarSize | undefined>(undefined);\n readonly queryDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly chipLimit = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly shortcut = input<string | null | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n /** The conditions can be read and reached, and nothing changes them. */\n readonly readOnly = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * The number of rows the filter kept, and the number there are. Written by\n * the `count` message, or `countOnly` without a total, in the digits of the\n * language in force.\n */\n readonly count = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n readonly total = input<number | undefined, number | string | undefined>(undefined, {\n transform: (value) => (value === undefined ? undefined : numberAttribute(value)),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * landmark's name (`bar`), the controls, the chips' names, the count and the\n * announcements.\n */\n readonly messages = input<PartialMessages<FilterBarMessages> | undefined>(undefined);\n\n /** The requests behind every committed change, each with the reason it carries. */\n readonly valueChangeRequest = output<ChangeRequest<FilterGroup | null>>();\n readonly queryChangeRequest = output<ChangeRequest<string>>();\n readonly presetChangeRequest = output<ChangeRequest<string | null>>();\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n readonly revealedChangeRequest = output<ChangeRequest<boolean>>();\n /** Draws the save-as-view control in the builder. */\n readonly savePresetEnabled = input(false, { transform: booleanAttribute });\n /** Asks the application to save the tree as a view. */\n readonly savePreset = output<FilterGroup | null>();\n\n private readonly defaults = injectFilterBarDefaults();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n protected readonly ariaLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly searchInput = viewChild.required<ElementRef<HTMLInputElement>>('search');\n private readonly barElement = viewChild.required<ElementRef<HTMLDivElement>>('barRow');\n protected readonly operandTemplates = contentChildren(SlFilterBarOperand);\n protected readonly endSlot = contentChild(SlFilterBarEnd);\n\n readonly id = `slotted-filter-bar-${(counter += 1)}`;\n protected readonly empty = emptyFilterGroup();\n\n /** The family's words in the language in force, with this bar's `messages` laid over them. */\n readonly t: FilterBarTranslator = injectMessages(filterBarMessages, this.messages);\n protected readonly applyValue = computed(\n () => this.apply() ?? this.defaults.apply ?? FILTER_BAR_DEFAULT_APPLY,\n );\n protected readonly sizeValue = computed(\n () => this.size() ?? this.defaults.size ?? FILTER_BAR_DEFAULT_SIZE,\n );\n protected readonly queryDelayValue = computed(\n () => this.queryDelay() ?? this.defaults.queryDelay ?? FILTER_BAR_DEFAULT_QUERY_DELAY,\n );\n protected readonly chipLimitValue = computed(\n () => this.chipLimit() ?? this.defaults.chipLimit ?? FILTER_BAR_DEFAULT_CHIP_LIMIT,\n );\n protected readonly shortcutValue = computed(() => {\n const own = this.shortcut();\n return own === undefined ? (this.defaults.shortcut ?? null) : own;\n });\n private readonly locked = computed(() => this.disabled() || this.readOnly());\n\n /* ── State the bar owns ────────────────────────────────────────────── */\n\n private readonly draft = signal<{ value: FilterGroup | null; query: string } | null>(null);\n protected readonly invalid = signal<string | null>(null);\n protected readonly pending = signal<PendingRule | null>(null);\n /** Which chip's value popover is open, by its field key. */\n protected readonly valueOpen = signal<string | null>(null);\n /** The one rule card open in the builder's card form, by its path. */\n protected readonly expanded = signal<string | null>(null);\n protected readonly drawerDraft = signal<FilterGroup | null>(null);\n /** Whether the bar is under its narrow breakpoint: an edit then goes to the builder. */\n protected readonly narrow = signal(false);\n /** Whether the viewport is under the sheet breakpoint: the builder then comes up from the bottom. */\n protected readonly sheet = signal(false);\n private readonly typed = signal<string | null>(null);\n /** A tree the builder opens on instead of the shown one: a rule the reader just started. */\n private seed: FilterGroup | null = null;\n private timer: ReturnType<typeof setTimeout> | undefined;\n\n protected readonly shown = computed(() => {\n const draft = this.draft();\n return this.applyValue() === 'manual' && draft ? draft.value : this.currentValue();\n });\n protected readonly shownQuery = computed(() => {\n const typed = this.typed();\n if (typed !== null) return typed;\n const draft = this.draft();\n return this.applyValue() === 'manual' && draft ? draft.query : this.currentQuery();\n });\n protected readonly dirty = computed(() => {\n const draft = this.draft();\n return (\n this.applyValue() === 'manual' &&\n draft !== null &&\n (!sameGroup(draft.value, this.currentValue()) || draft.query !== this.currentQuery())\n );\n });\n protected readonly presetDirty = computed(() => {\n const chosen = this.presets()?.find((entry) => entry.key === this.currentPreset());\n return (\n chosen !== undefined && !sameGroup(normalizeFilterGroup(chosen.value), this.currentValue())\n );\n });\n\n private readonly format = computed(() => {\n const fields = this.fields();\n return {\n field: (key: string) => fieldByKey(fields, key)?.label ?? key,\n join: (join: FilterJoin) => this.t(join === 'and' ? 'joins.and' : 'joins.or'),\n operator: (operator: string) => operatorName(this.t, operator),\n };\n });\n\n protected readonly required = computed(() => this.fields().filter((field) => field.required));\n protected readonly pinned = computed(() =>\n this.fields().filter((field) => field.pinned || field.required),\n );\n private readonly pinnedKeys = computed(() => new Set(this.pinned().map((field) => field.key)));\n protected readonly activeCount = computed(() => countActive(this.shown()));\n protected readonly draftActive = computed(() => countActive(this.drawerDraft()));\n protected readonly unfiltered = computed(() => {\n const pending = this.pending()?.key;\n return this.fields().filter(\n (field) =>\n !this.pinnedKeys().has(field.key) &&\n ruleFor(this.shown(), field.key) === undefined &&\n field.key !== pending,\n );\n });\n protected readonly sections = computed(() => {\n const map = new Map<string | undefined, FilterBarField[]>();\n for (const field of this.unfiltered()) {\n const list = map.get(field.section) ?? [];\n list.push(field);\n map.set(field.section, list);\n }\n return [...map.entries()].map(([name, fields]) => ({ fields, name }));\n });\n protected readonly presetItems = computed(\n () => this.presets()?.map((entry) => ({ label: entry.label, value: entry.key })) ?? [],\n );\n\n /**\n * The bar's members in order: pinned fields as declared — a chip, or a pill\n * while they hold no condition — then the other first-level conditions, then\n * the one pending, which keeps the place an applied rule had when it lost its\n * operand.\n */\n protected readonly members = computed<readonly BarMember[]>(() => {\n const shown = this.shown();\n const pending = this.pending();\n const pinnedKeys = this.pinnedKeys();\n const limit = this.chipLimitValue();\n const readOnly = this.readOnly();\n const format = this.format();\n const members: BarMember[] = [];\n let index = 0;\n const nextFolded = () => index++ >= limit;\n for (const field of this.pinned()) {\n const rule = ruleFor(shown, field.key);\n if (rule !== undefined) {\n members.push(this.describeChip(field.key, rule, { folded: nextFolded(), pinned: true }));\n } else if (pending?.key === field.key) {\n members.push(\n this.describeChip(field.key, pending.filter, {\n folded: nextFolded(),\n incomplete: true,\n pinned: true,\n }),\n );\n } else if (!readOnly) {\n members.push({ field, id: `pill:${field.key}`, kind: 'pill' });\n }\n }\n const floating =\n pending && !pinnedKeys.has(pending.key) && ruleFor(shown, pending.key) === undefined\n ? pending\n : null;\n const pendingChip = (rule: PendingRule) =>\n this.describeChip(rule.key, rule.filter, { folded: nextFolded(), incomplete: true });\n let placed = false;\n (shown?.rules ?? []).forEach((node, at) => {\n if (floating && floating.at === at) {\n members.push(pendingChip(floating));\n placed = true;\n }\n if (isFilterGroup(node)) {\n members.push({\n folded: nextFolded(),\n id: `group:${at}`,\n kind: 'group',\n path: [at],\n words: `(${describeFilterGroup(node, format)})`,\n });\n } else if (!pinnedKeys.has(node.field)) {\n members.push(this.describeChip(node.field, node.filter, { folded: nextFolded() }));\n }\n });\n if (floating && !placed) members.push(pendingChip(floating));\n return members;\n });\n protected readonly chipCount = computed(\n () => this.members().filter((member) => member.kind !== 'pill').length,\n );\n protected readonly folded = computed(() => Math.max(0, this.chipCount() - this.chipLimitValue()));\n protected readonly countText = computed(() => {\n const count = this.count();\n if (count === undefined) return null;\n const total = this.total();\n return total === undefined ? this.t('countOnly', { count }) : this.t('count', { count, total });\n });\n\n constructor() {\n /* A controlled value that changes from outside replaces the draft: the application's value wins. */\n let last = untracked(this.currentValue);\n effect(() => {\n const value = this.currentValue();\n if (!sameGroup(last, value)) {\n last = value;\n untracked(() => this.draft.set(null));\n }\n });\n\n /* The draft the drawer edits, taken each time it opens from the tree — or\n from the seed a chip left, when the reader started a rule on a phone and\n the builder is where it is finished. */\n let wasOpen = false;\n effect(() => {\n const open = this.isOpen();\n if (open && !wasOpen) {\n untracked(() => {\n this.drawerDraft.set(this.seed ?? this.shown());\n this.seed = null;\n });\n }\n wasOpen = open;\n });\n\n /* The ring: one tab stop for the bar, arrows over every control and every\n chip segment. After render, because the items are the template's. */\n afterRenderEffect((onCleanup) => {\n const bar = this.barElement().nativeElement;\n const ring = createRovingTabindex(bar, {\n includeAriaDisabled: true,\n itemSelector: BAR_ITEMS,\n });\n /* A chip removed by the pointer: focus goes to the stop that took its place. */\n const removal = createRemovalFocus(bar, {\n fallback: () => bar.querySelector<HTMLElement>(\"[data-part='add']\") ?? null,\n itemSelector: BAR_ITEMS,\n });\n /* Read the DOM again after a chip, a pill or a control came or went. */\n const observer = new MutationObserver(() => ring.refresh());\n observer.observe(bar, { childList: true, subtree: true });\n onCleanup(() => {\n observer.disconnect();\n ring.destroy();\n removal.destroy();\n });\n });\n\n /* The narrow breakpoint, read from the root's own width, and the sheet\n breakpoint, read from the viewport — the side a drawer opens from is the\n viewport's question. A root with no box is not measured. */\n afterNextRender(() => {\n const element = this.host.nativeElement;\n const view = element.ownerDocument.defaultView;\n /* Read only in the observer's reports, the first of which arrives\n after layout: a read here forced a layout of the page just rendered. */\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n const width = element.getBoundingClientRect().width;\n this.narrow.set(width > 0 && width < remToPx(element, NARROW_REM));\n });\n observer.observe(element);\n this.destroyRef.onDestroy(() => observer.disconnect());\n }\n if (view?.matchMedia) {\n const query = view.matchMedia(`(max-width: ${NARROW_REM}rem)`);\n const read = () => this.sheet.set(query.matches);\n read();\n query.addEventListener?.('change', read);\n this.destroyRef.onDestroy(() => query.removeEventListener?.('change', read));\n }\n });\n\n /* The document key that reaches the search, unless the reader is typing. */\n effect((onCleanup) => {\n const key = this.shortcutValue();\n if (!key || this.disabled()) return;\n const doc = this.host.nativeElement.ownerDocument;\n const listener = (event: KeyboardEvent) => {\n if (event.defaultPrevented || event.metaKey || event.ctrlKey || event.altKey) return;\n if (event.key !== key || isEditable(doc.activeElement)) return;\n event.preventDefault();\n this.focusSearch();\n };\n doc.addEventListener('keydown', listener);\n onCleanup(() => doc.removeEventListener('keydown', listener));\n });\n\n /* Sticky: the bar reads the page property and adds its own height for what follows. */\n effect((onCleanup) => {\n if (!this.sticky() || typeof ResizeObserver === 'undefined') return;\n const element = this.host.nativeElement;\n const parent = element.parentElement;\n const view = element.ownerDocument.defaultView;\n if (!parent || !view) return;\n /* What the parent declared inline before this bar added itself: put back\n before every read, so a second measure never sums the bar twice. */\n const declared = parent.style.getPropertyValue(STICKY_TOP);\n const restore = () =>\n declared\n ? parent.style.setProperty(STICKY_TOP, declared)\n : parent.style.removeProperty(STICKY_TOP);\n const publish = () => {\n restore();\n const above = view.getComputedStyle(parent).getPropertyValue(STICKY_TOP).trim() || '0px';\n const height = element.getBoundingClientRect().height;\n element.style.setProperty(STICKY_TOP, above);\n parent.style.setProperty(STICKY_TOP, `calc(${above} + ${height}px)`);\n };\n /* Its first report, after layout, is the first measurement. */\n const observer = new ResizeObserver(publish);\n observer.observe(element);\n onCleanup(() => {\n observer.disconnect();\n element.style.removeProperty(STICKY_TOP);\n restore();\n });\n });\n\n this.destroyRef.onDestroy(() => clearTimeout(this.timer));\n }\n\n /* ── Helpers the template reads ─────────────────────────────────────── */\n\n protected pillOf(member: BarMember) {\n return member.kind === 'pill' ? member : null;\n }\n\n protected chipOf(member: BarMember) {\n return member.kind === 'chip' ? member : null;\n }\n\n protected groupOf(member: BarMember) {\n return member.kind === 'group' ? member : null;\n }\n\n protected isTemplate(icon: unknown): icon is TemplateRef<unknown> {\n return icon instanceof TemplateRef;\n }\n\n protected operatorWords(operator: string) {\n return operatorName(this.t, operator);\n }\n\n protected normalized(group: FilterGroup | null) {\n return normalizeFilterGroup(group);\n }\n\n /** One field's condition as its chip draws it. */\n private describeChip(\n key: string,\n filter: FilterDescriptor,\n flags: { pinned?: boolean; incomplete?: boolean; folded: boolean },\n ): BarChip {\n const field = fieldByKey(this.fields(), key);\n const unknown = field === undefined;\n const label = field?.label ?? key;\n const words = ruleWords(this.t, field, filter);\n const incomplete = flags.incomplete === true || !isFilterActive(filter);\n const value = words.value || this.t('noValue');\n const rule = this.t('rule', {\n condition:\n words.operands > 0\n ? this.t('condition', { operator: words.operator, value })\n : words.operator,\n field: unknown ? this.t('unknownField', { field: key }) : label,\n });\n return {\n condition: filter.conditions[0]?.operator ?? '',\n field,\n filter,\n folded: flags.folded,\n hasValue: words.operands > 0 || incomplete,\n id: `chip:${key}`,\n incomplete,\n key,\n kind: 'chip',\n label,\n name: incomplete ? this.t('incomplete', { rule }) : rule,\n operands: words.operands,\n operator: words.operator,\n operators: field?.operators ?? (field ? (operatorsFor(field.kind) as readonly string[]) : []),\n pinned: flags.pinned === true,\n removable: field?.required !== true && !this.readOnly(),\n unknown,\n value,\n valueName: this.t('condition', { operator: words.operator, value: words.full || value }),\n valueTitle: words.full && words.full !== words.value ? words.full : null,\n };\n }\n\n private sentenceOf(\n field: FilterBarField | undefined,\n filter: FilterDescriptor | null | undefined,\n ) {\n return describeFilter(filter, {\n ...this.format(),\n value: (value) =>\n field?.options?.find((option) => option.value === value)?.label ?? String(value),\n });\n }\n\n private announce(message: string) {\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message);\n }\n\n /* ── The five requests ─────────────────────────────────────────────── */\n\n requestValue(next: FilterGroup | null, reason: FilterBarValueReason, source?: unknown) {\n const normalized = normalizeFilterGroup(next);\n const state = createControllable<FilterGroup | null>({\n equals: sameGroup,\n initial: this.currentValue(),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (state.request(normalized, reason, source)) this.value.set(normalized);\n }\n\n requestQuery(next: string, reason: FilterBarQueryReason, source?: unknown) {\n const state = createControllable<string>({\n initial: this.currentQuery(),\n onRequest: (request) => this.queryChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.query.set(next);\n }\n\n requestPreset(next: string | null, reason: FilterBarPresetReason, source?: unknown) {\n const state = createControllable<string | null>({\n initial: this.currentPreset(),\n onRequest: (request) => this.presetChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.preset.set(next);\n }\n\n requestOpen(next: boolean, reason: FilterBarOpenReason, source?: unknown) {\n const state = createControllable<boolean>({\n initial: this.isOpen(),\n onRequest: (request) => this.openChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.open.set(next);\n }\n\n requestRevealed(next: boolean, reason: FilterBarRevealedReason, source?: unknown) {\n const state = createControllable<boolean>({\n initial: this.isRevealed(),\n onRequest: (request) => this.revealedChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) this.revealed.set(next);\n }\n\n /* ── Edits ─────────────────────────────────────────────────────────── */\n\n /**\n * Every edit of the tree goes through here: under `live` it is requested at\n * once, under `manual` it goes to the draft and Apply requests it.\n */\n private edit(next: FilterGroup | null, reason: FilterBarValueReason, source?: unknown) {\n if (this.applyValue() === 'manual') {\n this.draft.set({ query: this.shownQuery(), value: next });\n return;\n }\n this.requestValue(next, reason, source);\n }\n\n /** The tree with every required field at its default, which is what Clear returns to. */\n protected baseline(): FilterGroup | null {\n let next: FilterGroup | null = null;\n for (const field of this.required()) {\n if (field.defaultValue) next = withRuleFor(next, field.key, field.defaultValue);\n }\n return normalizeFilterGroup(next);\n }\n\n private missing(tree: FilterGroup | null) {\n return this.required().filter((field) => !isFilterActive(ruleFor(tree, field.key) ?? null));\n }\n\n /** A required field refuses: data-invalid on its chip or pill, its message said, and focus on it when asked. */\n private refuse(field: FilterBarField, focus: boolean) {\n this.invalid.set(field.key);\n this.announce(this.t('required', { field: field.label }));\n if (!focus) return;\n const member = this.barElement().nativeElement.querySelector<HTMLElement>(\n `[data-field='${CSS.escape(field.key)}']`,\n );\n (member?.matches('button') ? member : member?.querySelector<HTMLElement>(SEGMENTS))?.focus();\n }\n\n /** A field chosen from `add` or pressed as a pill: its chip, incomplete, with the value popover open. */\n protected start(key: string, source?: unknown) {\n const field = fieldByKey(this.fields(), key);\n if (!field || this.locked()) return;\n if (this.narrow()) {\n this.openBuilderOn(key, source);\n return;\n }\n const filter = blankRule(field);\n if (isFilterActive(filter)) {\n this.edit(withRuleFor(this.shown(), key, filter), 'pointer', source);\n } else {\n this.pending.set({ filter, key });\n }\n this.valueOpen.set(key);\n }\n\n /** Every change to one field's rule from a chip: pending until active, then the value's. */\n protected changeRule(key: string, next: FilterDescriptor | null, reason: FilterBarValueReason) {\n const field = fieldByKey(this.fields(), key);\n const shown = this.shown();\n if (next === null) {\n if (field?.required) {\n this.refuse(field, false);\n return;\n }\n if (this.pending()?.key === key) this.pending.set(null);\n this.edit(withoutRuleFor(shown, key), 'clear');\n return;\n }\n this.invalid.set(null);\n if (!isFilterActive(next)) {\n /* A draft holds an unfinished rule as it stands; the value never does. */\n if (this.applyValue() === 'manual') {\n this.edit(withRuleFor(shown, key, next), reason);\n return;\n }\n const at = shown\n ? shown.rules.findIndex((node) => !isFilterGroup(node) && node.field === key)\n : -1;\n this.pending.set({ filter: next, key, ...(at === -1 ? {} : { at }) });\n if (at !== -1) this.edit(withoutRuleFor(shown, key), reason);\n return;\n }\n if (this.pending()?.key === key) this.pending.set(null);\n this.edit(withRuleFor(shown, key, next), reason);\n }\n\n protected setOperator(key: string, filter: FilterDescriptor, operator: string) {\n const condition = (filter.conditions[0] ?? { operator }) as Condition;\n const before = operandCount(condition.operator as FilterOperator);\n const after = operandCount(operator as FilterOperator);\n const next = withCondition(filter, 0, {\n operator,\n ...(after >= 1 && before >= 1 ? { value: condition.value } : {}),\n ...(after === 2 && before === 2 ? { end: condition.end } : {}),\n } as never);\n this.changeRule(key, next, 'pointer');\n /* An operator that wants an operand the rule lacks moves on to the value. */\n if (after > 0 && !isFilterActive(next)) this.valueOpen.set(key);\n }\n\n protected toggleValue(key: string, open: boolean) {\n const current = this.valueOpen();\n this.valueOpen.set(open ? key : current === key ? null : current);\n }\n\n /** Done in a chip's value popover: the condition is said, and the popover closes. */\n protected finishValue(key: string) {\n const field = fieldByKey(this.fields(), key);\n const rule = ruleFor(this.shown(), key);\n if (rule && isFilterActive(rule)) {\n this.announce(\n this.t('rule', { condition: this.sentenceOf(field, rule), field: field?.label ?? key }),\n );\n }\n if (this.valueOpen() === key) this.valueOpen.set(null);\n }\n\n /** The value segment drawn without its popover: under the narrow breakpoint it opens the builder. */\n protected onValueSegment(chip: BarChip, event: Event) {\n if (this.readOnly() || chip.unknown || !this.narrow()) return;\n this.openBuilderOn(chip.key, event);\n }\n\n protected removeField(key: string, source?: unknown) {\n const field = fieldByKey(this.fields(), key);\n if (field?.required) {\n this.refuse(field, false);\n return;\n }\n const pending = this.pending();\n if (pending?.key === key) {\n this.pending.set(null);\n if (ruleFor(this.shown(), key) === undefined) return;\n }\n this.edit(withoutRuleFor(this.shown(), key), 'remove', source);\n this.announce(this.t('removed', { field: field?.label ?? key }));\n }\n\n protected removeNode(path: FilterPath, source?: unknown) {\n const shown = this.shown();\n if (!shown) return;\n this.edit(removeNodeAt(shown, path), 'remove', source);\n }\n\n /**\n * `Delete` and `Backspace` on a segment remove the condition. The keyboard\n * goes to the segment of the same role on the chip that followed, else on\n * the one before, else to `add` — chosen before the removal, while both\n * neighbours are still in the DOM, and focused after the render.\n */\n protected onChipKeyDown(event: KeyboardEvent, key: string) {\n if (event.key !== 'Delete' && event.key !== 'Backspace') return;\n const segment = (event.target as HTMLElement).closest<HTMLElement>(SEGMENTS);\n if (!segment || this.locked() || event.defaultPrevented) return;\n event.preventDefault();\n if (fieldByKey(this.fields(), key)?.required) {\n this.removeField(key, event);\n return;\n }\n const bar = this.barElement().nativeElement;\n const chips = [...bar.querySelectorAll<HTMLElement>(\"[data-part='chip']\")].filter(\n (chip) => chip.checkVisibility?.() ?? true,\n );\n const here = segment.closest<HTMLElement>(\"[data-part='chip']\");\n const index = here ? chips.indexOf(here) : -1;\n const role = segment.getAttribute('data-part');\n const neighbour = chips[index + 1] ?? chips[index - 1];\n const target =\n neighbour?.querySelector<HTMLElement>(`[data-part='${role}']`) ??\n neighbour?.querySelector<HTMLElement>('button') ??\n null;\n this.focusAfterRender(target);\n this.removeField(key, event);\n }\n\n protected onGroupKeyDown(event: KeyboardEvent, path: FilterPath) {\n if ((event.key !== 'Delete' && event.key !== 'Backspace') || this.locked()) return;\n event.preventDefault();\n this.removeNode(path, event);\n }\n\n private focusAfterRender(target: HTMLElement | null) {\n afterNextRender(\n {\n write: () => {\n const bar = this.barElement().nativeElement;\n (target?.isConnected\n ? target\n : bar.querySelector<HTMLElement>(\"[data-part='add']\")\n )?.focus();\n },\n },\n { injector: this.injector },\n );\n }\n\n protected clearAll(source?: unknown) {\n const next = this.baseline();\n this.invalid.set(null);\n this.pending.set(null);\n if (this.applyValue() === 'manual') {\n this.draft.set({ query: '', value: next });\n } else {\n this.requestValue(next, 'clear', source);\n if (this.currentQuery() !== '') this.requestQuery('', 'clear', source);\n }\n this.announce(\n next\n ? this.t('clearedTo', { filters: describeFilterGroup(next, this.format()) })\n : this.t('cleared'),\n );\n }\n\n protected submit(source?: unknown) {\n const draft = this.draft();\n if (!draft) return;\n const lacking = this.missing(draft.value);\n if (lacking[0]) {\n this.refuse(lacking[0], true);\n return;\n }\n this.invalid.set(null);\n this.requestValue(draft.value, 'submit', source);\n if (draft.query !== this.currentQuery()) this.requestQuery(draft.query, 'submit', source);\n this.draft.set(null);\n const applied = normalizeFilterGroup(draft.value);\n this.announce(\n applied\n ? this.t('appliedCount', {\n count: firstLevelRules(applied).length,\n filters: describeFilterGroup(applied, this.format()),\n })\n : this.t('cleared'),\n );\n }\n\n protected reset() {\n this.draft.set(null);\n this.invalid.set(null);\n }\n\n protected choosePreset(key: string | null, source?: unknown) {\n this.requestPreset(key, key === null ? 'clear' : 'select', source);\n const chosen = this.presets()?.find((entry) => entry.key === key);\n if (chosen) {\n this.draft.set(null);\n this.requestValue(chosen.value, 'select', source);\n this.announce(chosen.label);\n }\n }\n\n /* ── The builder ───────────────────────────────────────────────────── */\n\n /** Opens the builder, with the card at `at.path` expanded, on `at.tree` when given. */\n protected openBuilderAt(\n reason: FilterBarOpenReason,\n source?: unknown,\n at?: { tree?: FilterGroup | null; path: FilterPath },\n ) {\n if (at?.tree !== undefined) this.seed = at.tree;\n this.expanded.set(at ? at.path.join('.') : null);\n this.requestOpen(true, reason, source);\n }\n\n /** The builder open on one field's rule: the applied one, the pending one, or a fresh one. */\n private openBuilderOn(key: string, source?: unknown) {\n const field = fieldByKey(this.fields(), key);\n const shown = this.shown();\n const pending = this.pending();\n const applied = shown\n ? shown.rules.findIndex((node) => !isFilterGroup(node) && node.field === key)\n : -1;\n if (applied !== -1 && pending?.key !== key) {\n this.openBuilderAt('pointer', source, { path: [applied] });\n return;\n }\n const filter = pending?.key === key ? pending.filter : field ? blankRule(field) : null;\n if (!filter) return;\n const tree = withRuleFor(shown, key, filter);\n this.pending.set(null);\n this.openBuilderAt('pointer', source, {\n path: [tree.rules.findIndex((node) => !isFilterGroup(node) && node.field === key)],\n tree,\n });\n }\n\n protected commitDrawer() {\n const next = this.drawerDraft();\n const lacking = this.missing(next);\n if (lacking[0]) {\n this.refuse(lacking[0], false);\n return;\n }\n this.invalid.set(null);\n this.edit(next, 'submit');\n const applied = normalizeFilterGroup(next);\n this.announce(\n applied\n ? this.t('appliedCount', {\n count: countActive(applied),\n filters: describeFilterGroup(applied, this.format()),\n })\n : this.t('cleared'),\n );\n this.requestOpen(false, 'submit');\n }\n\n protected onDrawerRequest(request: ChangeRequest<boolean>) {\n this.requestOpen(request.value, request.reason as FilterBarOpenReason, request.source);\n }\n\n /* ── The query ─────────────────────────────────────────────────────── */\n\n protected typeQuery(request: ChangeRequest<string>) {\n const next = request.value;\n const reason: FilterBarQueryReason = request.reason === 'clear' ? 'clear' : 'keyboard';\n if (this.applyValue() === 'manual') {\n this.draft.set({ query: next, value: this.shown() });\n return;\n }\n this.typed.set(next);\n clearTimeout(this.timer);\n if (reason === 'clear' || this.queryDelayValue() === 0) {\n this.typed.set(null);\n this.requestQuery(next, reason, request.source);\n return;\n }\n this.timer = setTimeout(() => {\n this.timer = undefined;\n this.typed.set(null);\n this.requestQuery(next, reason, request.source);\n }, this.queryDelayValue());\n }\n\n protected onSearchKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n if (event.key === 'Escape' && this.shownQuery() !== '') {\n event.preventDefault();\n this.typeQuery({\n cancel: () => {},\n cancelled: false,\n previous: this.shownQuery(),\n reason: 'clear',\n source: event,\n value: '',\n });\n }\n if (event.key === 'Enter' && this.applyValue() === 'manual') this.submit(event);\n }\n\n /* ── Imperative ────────────────────────────────────────────────────── */\n\n /** Puts focus in the search field. */\n focusSearch() {\n this.searchInput().nativeElement.focus();\n }\n\n /**\n * Opens the builder. With a path, the rule at that path opens as the\n * expanded card. `open` is the model's name here, so the handle's `open(path)`\n * is `openBuilder(path)`.\n */\n openBuilder(path?: FilterPath) {\n this.openBuilderAt('programmatic', undefined, path ? { path } : undefined);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["kindDefaultOperator"],"mappings":"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"}
|