@mk-kit/ui 0.40.0 → 0.41.0
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/fesm2022/mk-kit-ui-data.mjs +79 -13
- package/fesm2022/mk-kit-ui-data.mjs.map +1 -1
- package/fesm2022/mk-kit-ui-datetime.mjs +16 -8
- package/fesm2022/mk-kit-ui-datetime.mjs.map +1 -1
- package/fesm2022/mk-kit-ui-dynamic-form.mjs +1 -1
- package/fesm2022/mk-kit-ui-dynamic-form.mjs.map +1 -1
- package/fesm2022/mk-kit-ui-feedback.mjs +7 -7
- package/fesm2022/mk-kit-ui-feedback.mjs.map +1 -1
- package/fesm2022/mk-kit-ui-forms.mjs +32 -22
- package/fesm2022/mk-kit-ui-forms.mjs.map +1 -1
- package/fesm2022/mk-kit-ui-query-builder.mjs +1 -1
- package/fesm2022/mk-kit-ui-query-builder.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/mk-kit.css +4 -4
- package/types/mk-kit-ui-data.d.ts +41 -3
- package/types/mk-kit-ui-datetime.d.ts +8 -2
- package/types/mk-kit-ui-forms.d.ts +15 -5
|
@@ -156,7 +156,7 @@ class MkQueryGroupComponent {
|
|
|
156
156
|
this.setValue(index, rule, event.target.value);
|
|
157
157
|
}
|
|
158
158
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MkQueryGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
159
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MkQueryGroupComponent, isStandalone: true, selector: "mk-query-group", inputs: { group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, fields: { classPropertyName: "fields", publicName: "fields", isSignal: true, isRequired: true, transformFunction: null }, depth: { classPropertyName: "depth", publicName: "depth", isSignal: true, isRequired: false, transformFunction: null }, maxDepth: { classPropertyName: "maxDepth", publicName: "maxDepth", isSignal: true, isRequired: false, transformFunction: null }, allowNot: { classPropertyName: "allowNot", publicName: "allowNot", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, root: { classPropertyName: "root", publicName: "root", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { groupChange: "groupChange", remove: "remove" }, host: { attributes: { "role": "group" }, properties: { "class.mk-query-group--root": "root()", "class.mk-query-group--not": "!!group().not", "attr.aria-label": "root() ? null : i18n.queryAddGroup" }, classAttribute: "mk-query-group" }, ngImport: i0, template: "@let g = group();\n<div class=\"mk-query-group__bar\">\n <div class=\"mk-query-group__combinator\" role=\"group\" [attr.aria-label]=\"i18n.queryOperator\">\n <button\n type=\"button\"\n class=\"mk-query-group__toggle\"\n [class.mk-query-group__toggle--active]=\"g.combinator === 'and'\"\n [attr.aria-pressed]=\"g.combinator === 'and'\"\n [disabled]=\"disabled()\"\n (click)=\"setCombinator('and')\"\n >{{ i18n.queryAnd }}</button>\n <button\n type=\"button\"\n class=\"mk-query-group__toggle\"\n [class.mk-query-group__toggle--active]=\"g.combinator === 'or'\"\n [attr.aria-pressed]=\"g.combinator === 'or'\"\n [disabled]=\"disabled()\"\n (click)=\"setCombinator('or')\"\n >{{ i18n.queryOr }}</button>\n </div>\n @if (allowNot()) {\n <button\n type=\"button\"\n class=\"mk-query-group__toggle mk-query-group__toggle--not\"\n [class.mk-query-group__toggle--active]=\"!!g.not\"\n [attr.aria-pressed]=\"!!g.not\"\n [disabled]=\"disabled()\"\n (click)=\"toggleNot()\"\n >{{ i18n.queryNot }}</button>\n }\n <span class=\"mk-query-group__spacer\"></span>\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" [disabled]=\"disabled() || !fields().length\" (click)=\"addRule()\">\n <mk-icon name=\"plus\" size=\"sm\" /> {{ i18n.queryAddRule }}\n </button>\n @if (canNest()) {\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" [disabled]=\"disabled()\" (click)=\"addGroup()\">\n <mk-icon name=\"layers\" size=\"sm\" /> {{ i18n.queryAddGroup }}\n </button>\n }\n @if (!root()) {\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" class=\"mk-query-group__remove\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryRemoveGroup\" (click)=\"remove.emit()\">\n <mk-icon name=\"trash\" size=\"sm\" />\n </button>\n }\n</div>\n\n<div class=\"mk-query-group__rules\">\n @if (!g.rules.length) {\n <p class=\"mk-query-group__empty\">{{ i18n.queryEmptyGroup }}</p>\n }\n @for (node of g.rules; track node.id; let i = $index) {\n @if (isGroup(node)) {\n <mk-query-group\n [group]=\"node\"\n [fields]=\"fields()\"\n [depth]=\"depth() + 1\"\n [maxDepth]=\"maxDepth()\"\n [allowNot]=\"allowNot()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n (groupChange)=\"replaceAt(i, $event)\"\n (remove)=\"removeAt(i)\"\n />\n } @else {\n <div class=\"mk-query-group__rule\" role=\"group\">\n <mk-select\n class=\"mk-query-group__field\"\n [options]=\"fieldOptions()\"\n [value]=\"node.field\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"i18n.queryField\"\n (valueChange)=\"setField(i, node, $event)\"\n />\n <mk-select\n class=\"mk-query-group__operator\"\n [options]=\"operatorOptions(node)\"\n [value]=\"node.operator\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"i18n.queryOperator\"\n (valueChange)=\"setOperator(i, node, $event)\"\n />\n @if (needsValue(node)) {\n @switch (typeOf(node)) {\n @case ('boolean') {\n <mk-select class=\"mk-query-group__value\" [options]=\"booleanOptions()\" [value]=\"node.value ?? null\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n @case ('select') {\n @if (isList(node)) {\n <mk-multi-select class=\"mk-query-group__value\" [options]=\"selectOptions(node)\" [value]=\"asArray(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n } @else {\n <mk-select class=\"mk-query-group__value\" [options]=\"selectOptions(node)\" [value]=\"node.value ?? null\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n }\n @case ('number') {\n @if (isRange(node)) {\n <mk-number-input class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"numberValue(rangePart(node, 0))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueFrom\" [attr.aria-label]=\"i18n.queryValueFrom\" (valueChange)=\"setRangePart(i, node, 0, $event)\" />\n <mk-number-input class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"numberValue(rangePart(node, 1))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueTo\" [attr.aria-label]=\"i18n.queryValueTo\" (valueChange)=\"setRangePart(i, node, 1, $event)\" />\n } @else {\n <mk-number-input class=\"mk-query-group__value\" [value]=\"numberValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"fieldOf(node)?.placeholder ?? ''\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n }\n @case ('date') {\n @if (isRange(node)) {\n <mk-date-picker class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"dateValue(rangePart(node, 0))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueFrom\" (valueChange)=\"setDateRange(i, node, 0, $event)\" />\n <mk-date-picker class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"dateValue(rangePart(node, 1))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueTo\" (valueChange)=\"setDateRange(i, node, 1, $event)\" />\n } @else {\n <mk-date-picker class=\"mk-query-group__value\" [value]=\"dateValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" (valueChange)=\"setDate(i, node, $event)\" />\n }\n }\n @default {\n <input mkInput class=\"mk-query-group__value\" type=\"text\" [value]=\"textValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"fieldOf(node)?.placeholder ?? ''\" [attr.aria-label]=\"i18n.queryValue\" (input)=\"onTextInput(i, node, $event)\" />\n }\n }\n }\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" class=\"mk-query-group__remove\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryRemoveRule\" (click)=\"removeAt(i)\">\n <mk-icon name=\"close\" size=\"sm\" />\n </button>\n </div>\n }\n }\n</div>\n", styles: [":host{display:block;border:var(--mk-border-width) solid var(--mk-border);border-radius:var(--mk-radius-lg);background:var(--mk-surface);color:var(--mk-text)}:host(:not(.mk-query-group--root)){background:var(--mk-surface-2);border-inline-start:3px solid var(--mk-primary)}:host(.mk-query-group--not){border-inline-start-color:var(--mk-danger)}.mk-query-group__bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--mk-space-2);padding:var(--mk-space-2) var(--mk-space-3);border-bottom:var(--mk-border-width) solid var(--mk-border)}.mk-query-group__spacer{flex:1 1 auto}.mk-query-group__combinator{display:inline-flex;border:var(--mk-border-width) solid var(--mk-border);border-radius:var(--mk-radius-md);overflow:hidden}.mk-query-group__toggle{padding:var(--mk-space-1) var(--mk-space-3);border:0;background:transparent;color:var(--mk-text-muted);font:inherit;font-size:var(--mk-font-size-sm);font-weight:var(--mk-font-weight-semibold);cursor:pointer}.mk-query-group__toggle--active{background:var(--mk-primary);color:var(--mk-primary-contrast, #fff)}.mk-query-group__toggle--not{border:var(--mk-border-width) solid var(--mk-border);border-radius:var(--mk-radius-md)}.mk-query-group__toggle--not.mk-query-group__toggle--active{background:var(--mk-danger);border-color:var(--mk-danger)}.mk-query-group__toggle:disabled{cursor:default;opacity:.6}.mk-query-group__toggle:focus-visible{outline:var(--mk-focus-ring-width) solid var(--mk-focus-ring);outline-offset:calc(-1 * var(--mk-focus-ring-width))}.mk-query-group__rules{display:flex;flex-direction:column;gap:var(--mk-space-2);padding:var(--mk-space-3)}.mk-query-group__empty{margin:0;color:var(--mk-text-muted);font-size:var(--mk-font-size-sm)}.mk-query-group__rule{display:grid;grid-template-columns:minmax(8rem,1fr) minmax(8rem,1fr) minmax(10rem,2fr) auto;align-items:center;gap:var(--mk-space-2)}.mk-query-group__value{grid-column:3;min-width:0}.mk-query-group__value--half{grid-column:auto}.mk-query-group__rule:has(.mk-query-group__value--half){grid-template-columns:minmax(8rem,1fr) minmax(8rem,1fr) minmax(5rem,1fr) minmax(5rem,1fr) auto}.mk-query-group__rule>.mk-query-group__remove{grid-column:-2}@media(max-width:640px){.mk-query-group__rule,.mk-query-group__rule:has(.mk-query-group__value--half){grid-template-columns:1fr auto}.mk-query-group__value,.mk-query-group__value--half{grid-column:1}.mk-query-group__rule>.mk-query-group__remove{grid-column:2;grid-row:1}}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => MkQueryGroupComponent), selector: "mk-query-group", inputs: ["group", "fields", "depth", "maxDepth", "allowNot", "disabled", "root", "size"], outputs: ["groupChange", "remove"] }, { kind: "component", type: i0.forwardRef(() => MkButton), selector: "button[mkButton], a[mkButton]", inputs: ["variant", "tone", "size", "loading", "fullWidth", "iconOnly", "disabled"] }, { kind: "component", type: i0.forwardRef(() => MkDatePicker), selector: "mk-date-picker", inputs: ["value", "min", "max", "disabledDate", "placeholder", "displayFormat", "disabled", "clearable", "invalid", "firstDayOfWeek", "size"], outputs: ["valueChange"] }, { kind: "component", type: i0.forwardRef(() => MkIcon), selector: "mk-icon", inputs: ["name", "size", "label"] }, { kind: "component", type: i0.forwardRef(() => MkInput), selector: "input[mkInput], textarea[mkInput]", inputs: ["size", "invalid"] }, { kind: "component", type: i0.forwardRef(() => MkMultiSelect), selector: "mk-multi-select", inputs: ["options", "placeholder", "size", "invalid", "disabled", "filterMode", "minChars", "loading", "max", "closeOnSelect", "emptyMessage", "value"], outputs: ["valueChange", "search", "optionAdded", "optionRemoved"] }, { kind: "component", type: i0.forwardRef(() => MkNumberInput), selector: "mk-number-input", inputs: ["min", "max", "step", "value", "placeholder", "disabled", "invalid", "size"], outputs: ["valueChange"] }, { kind: "component", type: i0.forwardRef(() => MkSelect), selector: "mk-select", inputs: ["options", "placeholder", "size", "invalid", "disabled", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
159
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MkQueryGroupComponent, isStandalone: true, selector: "mk-query-group", inputs: { group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, fields: { classPropertyName: "fields", publicName: "fields", isSignal: true, isRequired: true, transformFunction: null }, depth: { classPropertyName: "depth", publicName: "depth", isSignal: true, isRequired: false, transformFunction: null }, maxDepth: { classPropertyName: "maxDepth", publicName: "maxDepth", isSignal: true, isRequired: false, transformFunction: null }, allowNot: { classPropertyName: "allowNot", publicName: "allowNot", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, root: { classPropertyName: "root", publicName: "root", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { groupChange: "groupChange", remove: "remove" }, host: { attributes: { "role": "group" }, properties: { "class.mk-query-group--root": "root()", "class.mk-query-group--not": "!!group().not", "attr.aria-label": "root() ? null : i18n.queryAddGroup" }, classAttribute: "mk-query-group" }, ngImport: i0, template: "@let g = group();\n<div class=\"mk-query-group__bar\">\n <div class=\"mk-query-group__combinator\" role=\"group\" [attr.aria-label]=\"i18n.queryOperator\">\n <button\n type=\"button\"\n class=\"mk-query-group__toggle\"\n [class.mk-query-group__toggle--active]=\"g.combinator === 'and'\"\n [attr.aria-pressed]=\"g.combinator === 'and'\"\n [disabled]=\"disabled()\"\n (click)=\"setCombinator('and')\"\n >{{ i18n.queryAnd }}</button>\n <button\n type=\"button\"\n class=\"mk-query-group__toggle\"\n [class.mk-query-group__toggle--active]=\"g.combinator === 'or'\"\n [attr.aria-pressed]=\"g.combinator === 'or'\"\n [disabled]=\"disabled()\"\n (click)=\"setCombinator('or')\"\n >{{ i18n.queryOr }}</button>\n </div>\n @if (allowNot()) {\n <button\n type=\"button\"\n class=\"mk-query-group__toggle mk-query-group__toggle--not\"\n [class.mk-query-group__toggle--active]=\"!!g.not\"\n [attr.aria-pressed]=\"!!g.not\"\n [disabled]=\"disabled()\"\n (click)=\"toggleNot()\"\n >{{ i18n.queryNot }}</button>\n }\n <span class=\"mk-query-group__spacer\"></span>\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" [disabled]=\"disabled() || !fields().length\" (click)=\"addRule()\">\n <mk-icon name=\"plus\" size=\"sm\" /> {{ i18n.queryAddRule }}\n </button>\n @if (canNest()) {\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" [disabled]=\"disabled()\" (click)=\"addGroup()\">\n <mk-icon name=\"layers\" size=\"sm\" /> {{ i18n.queryAddGroup }}\n </button>\n }\n @if (!root()) {\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" class=\"mk-query-group__remove\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryRemoveGroup\" (click)=\"remove.emit()\">\n <mk-icon name=\"trash\" size=\"sm\" />\n </button>\n }\n</div>\n\n<div class=\"mk-query-group__rules\">\n @if (!g.rules.length) {\n <p class=\"mk-query-group__empty\">{{ i18n.queryEmptyGroup }}</p>\n }\n @for (node of g.rules; track node.id; let i = $index) {\n @if (isGroup(node)) {\n <mk-query-group\n [group]=\"node\"\n [fields]=\"fields()\"\n [depth]=\"depth() + 1\"\n [maxDepth]=\"maxDepth()\"\n [allowNot]=\"allowNot()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n (groupChange)=\"replaceAt(i, $event)\"\n (remove)=\"removeAt(i)\"\n />\n } @else {\n <div class=\"mk-query-group__rule\" role=\"group\">\n <mk-select\n class=\"mk-query-group__field\"\n [options]=\"fieldOptions()\"\n [value]=\"node.field\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"i18n.queryField\"\n (valueChange)=\"setField(i, node, $event)\"\n />\n <mk-select\n class=\"mk-query-group__operator\"\n [options]=\"operatorOptions(node)\"\n [value]=\"node.operator\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"i18n.queryOperator\"\n (valueChange)=\"setOperator(i, node, $event)\"\n />\n @if (needsValue(node)) {\n @switch (typeOf(node)) {\n @case ('boolean') {\n <mk-select class=\"mk-query-group__value\" [options]=\"booleanOptions()\" [value]=\"node.value ?? null\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n @case ('select') {\n @if (isList(node)) {\n <mk-multi-select class=\"mk-query-group__value\" [options]=\"selectOptions(node)\" [value]=\"asArray(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n } @else {\n <mk-select class=\"mk-query-group__value\" [options]=\"selectOptions(node)\" [value]=\"node.value ?? null\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n }\n @case ('number') {\n @if (isRange(node)) {\n <mk-number-input class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"numberValue(rangePart(node, 0))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueFrom\" [attr.aria-label]=\"i18n.queryValueFrom\" (valueChange)=\"setRangePart(i, node, 0, $event)\" />\n <mk-number-input class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"numberValue(rangePart(node, 1))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueTo\" [attr.aria-label]=\"i18n.queryValueTo\" (valueChange)=\"setRangePart(i, node, 1, $event)\" />\n } @else {\n <mk-number-input class=\"mk-query-group__value\" [value]=\"numberValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"fieldOf(node)?.placeholder ?? ''\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n }\n @case ('date') {\n @if (isRange(node)) {\n <mk-date-picker class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"dateValue(rangePart(node, 0))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueFrom\" (valueChange)=\"setDateRange(i, node, 0, $event)\" />\n <mk-date-picker class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"dateValue(rangePart(node, 1))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueTo\" (valueChange)=\"setDateRange(i, node, 1, $event)\" />\n } @else {\n <mk-date-picker class=\"mk-query-group__value\" [value]=\"dateValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" (valueChange)=\"setDate(i, node, $event)\" />\n }\n }\n @default {\n <input mkInput class=\"mk-query-group__value\" type=\"text\" [value]=\"textValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"fieldOf(node)?.placeholder ?? ''\" [attr.aria-label]=\"i18n.queryValue\" (input)=\"onTextInput(i, node, $event)\" />\n }\n }\n }\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" class=\"mk-query-group__remove\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryRemoveRule\" (click)=\"removeAt(i)\">\n <mk-icon name=\"close\" size=\"sm\" />\n </button>\n </div>\n }\n }\n</div>\n", styles: [":host{display:block;border:var(--mk-border-width) solid var(--mk-border);border-radius:var(--mk-radius-lg);background:var(--mk-surface);color:var(--mk-text)}:host(:not(.mk-query-group--root)){background:var(--mk-surface-2);border-inline-start:3px solid var(--mk-primary)}:host(.mk-query-group--not){border-inline-start-color:var(--mk-danger)}.mk-query-group__bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--mk-space-2);padding:var(--mk-space-2) var(--mk-space-3);border-bottom:var(--mk-border-width) solid var(--mk-border)}.mk-query-group__spacer{flex:1 1 auto}.mk-query-group__combinator{display:inline-flex;border:var(--mk-border-width) solid var(--mk-border);border-radius:var(--mk-radius-md);overflow:hidden}.mk-query-group__toggle{padding:var(--mk-space-1) var(--mk-space-3);border:0;background:transparent;color:var(--mk-text-muted);font:inherit;font-size:var(--mk-font-size-sm);font-weight:var(--mk-font-weight-semibold);cursor:pointer}.mk-query-group__toggle--active{background:var(--mk-primary);color:var(--mk-primary-contrast, #fff)}.mk-query-group__toggle--not{border:var(--mk-border-width) solid var(--mk-border);border-radius:var(--mk-radius-md)}.mk-query-group__toggle--not.mk-query-group__toggle--active{background:var(--mk-danger);border-color:var(--mk-danger)}.mk-query-group__toggle:disabled{cursor:default;opacity:.6}.mk-query-group__toggle:focus-visible{outline:var(--mk-focus-ring-width) solid var(--mk-focus-ring);outline-offset:calc(-1 * var(--mk-focus-ring-width))}.mk-query-group__rules{display:flex;flex-direction:column;gap:var(--mk-space-2);padding:var(--mk-space-3)}.mk-query-group__empty{margin:0;color:var(--mk-text-muted);font-size:var(--mk-font-size-sm)}.mk-query-group__rule{display:grid;grid-template-columns:minmax(8rem,1fr) minmax(8rem,1fr) minmax(10rem,2fr) auto;align-items:center;gap:var(--mk-space-2)}.mk-query-group__value{grid-column:3;min-width:0}.mk-query-group__value--half{grid-column:auto}.mk-query-group__rule:has(.mk-query-group__value--half){grid-template-columns:minmax(8rem,1fr) minmax(8rem,1fr) minmax(5rem,1fr) minmax(5rem,1fr) auto}.mk-query-group__rule>.mk-query-group__remove{grid-column:-2}@media(max-width:640px){.mk-query-group__rule,.mk-query-group__rule:has(.mk-query-group__value--half){grid-template-columns:1fr auto}.mk-query-group__value,.mk-query-group__value--half{grid-column:1}.mk-query-group__rule>.mk-query-group__remove{grid-column:2;grid-row:1}}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => MkQueryGroupComponent), selector: "mk-query-group", inputs: ["group", "fields", "depth", "maxDepth", "allowNot", "disabled", "root", "size"], outputs: ["groupChange", "remove"] }, { kind: "component", type: i0.forwardRef(() => MkButton), selector: "button[mkButton], a[mkButton]", inputs: ["variant", "tone", "size", "loading", "fullWidth", "iconOnly", "disabled"] }, { kind: "component", type: i0.forwardRef(() => MkDatePicker), selector: "mk-date-picker", inputs: ["value", "aria-label", "min", "max", "disabledDate", "placeholder", "displayFormat", "disabled", "clearable", "invalid", "firstDayOfWeek", "size"], outputs: ["valueChange"] }, { kind: "component", type: i0.forwardRef(() => MkIcon), selector: "mk-icon", inputs: ["name", "size", "label"] }, { kind: "component", type: i0.forwardRef(() => MkInput), selector: "input[mkInput], textarea[mkInput]", inputs: ["size", "invalid"] }, { kind: "component", type: i0.forwardRef(() => MkMultiSelect), selector: "mk-multi-select", inputs: ["aria-label", "options", "placeholder", "size", "invalid", "disabled", "filterMode", "minChars", "loading", "max", "closeOnSelect", "emptyMessage", "value"], outputs: ["valueChange", "search", "optionAdded", "optionRemoved"] }, { kind: "component", type: i0.forwardRef(() => MkNumberInput), selector: "mk-number-input", inputs: ["aria-label", "min", "max", "step", "value", "placeholder", "disabled", "invalid", "size"], outputs: ["valueChange"] }, { kind: "component", type: i0.forwardRef(() => MkSelect), selector: "mk-select", inputs: ["aria-label", "options", "placeholder", "size", "invalid", "disabled", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
160
160
|
}
|
|
161
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MkQueryGroupComponent, decorators: [{
|
|
162
162
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mk-kit-ui-query-builder.mjs","sources":["../../../projects/mk-kit/query-builder/query-group.ts","../../../projects/mk-kit/query-builder/query-group.html","../../../projects/mk-kit/query-builder/query-builder.ts","../../../projects/mk-kit/query-builder/index.ts","../../../projects/mk-kit/query-builder/mk-kit-ui-query-builder.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n} from '@angular/core';\nimport {\n MK_I18N,\n MK_QUERY_UNARY,\n mkCreateQueryGroup,\n mkCreateQueryRule,\n mkIsQueryGroup,\n mkQueryOperatorLabel,\n mkQueryOperatorsFor,\n type MkQueryCombinator,\n type MkQueryField,\n type MkQueryGroup,\n type MkQueryNode,\n type MkQueryOperator,\n type MkQueryRule,\n} from '@mk-kit/ui/core';\nimport type { MkSize } from '@mk-kit/ui/core';\nimport { MkButton } from '@mk-kit/ui/button';\nimport { MkIcon } from '@mk-kit/ui/icon';\nimport { MkInput, MkMultiSelect, MkNumberInput, MkSelect, type MkSelectOption } from '@mk-kit/ui/forms';\nimport { MkDatePicker } from '@mk-kit/ui/datetime';\n\n/** Format a Date as an ISO calendar date (`YYYY-MM-DD`, local). */\nfunction toIsoDate(d: Date | null): string | null {\n if (!d) return null;\n const pad = (n: number) => String(n).padStart(2, '0');\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n}\n\n/** Parse an ISO calendar date back into a local Date (`null` when invalid). */\nfunction fromIsoDate(v: unknown): Date | null {\n if (v instanceof Date) return v;\n if (typeof v !== 'string' || !v) return null;\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(v);\n if (!m) {\n const d = new Date(v);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n return new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]));\n}\n\n/**\n * One group of the builder — its combinator toggle, rules, nested groups and\n * the add / remove actions. Used by `mk-query-builder`; every edit emits a\n * new immutable group upward.\n */\n@Component({\n selector: 'mk-query-group',\n templateUrl: './query-group.html',\n styleUrl: './query-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n forwardRef(() => MkQueryGroupComponent),\n MkButton,\n MkDatePicker,\n MkIcon,\n MkInput,\n MkMultiSelect,\n MkNumberInput,\n MkSelect,\n ],\n host: {\n class: 'mk-query-group',\n role: 'group',\n '[class.mk-query-group--root]': 'root()',\n '[class.mk-query-group--not]': '!!group().not',\n '[attr.aria-label]': 'root() ? null : i18n.queryAddGroup',\n },\n})\nexport class MkQueryGroupComponent {\n protected readonly i18n = inject(MK_I18N);\n\n readonly group = input.required<MkQueryGroup>();\n readonly fields = input.required<readonly MkQueryField[]>();\n readonly depth = input(0, { transform: numberAttribute });\n readonly maxDepth = input(3, { transform: numberAttribute });\n readonly allowNot = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly root = input(false, { transform: booleanAttribute });\n readonly size = input<MkSize>('sm');\n\n /** A new version of this group after an edit. */\n readonly groupChange = output<MkQueryGroup>();\n /** The user removed this (non-root) group. */\n readonly remove = output<void>();\n\n protected readonly fieldOptions = computed<MkSelectOption[]>(() =>\n this.fields().map((f) => ({ label: f.label, value: f.key })),\n );\n protected readonly canNest = computed(() => this.depth() < this.maxDepth());\n protected readonly booleanOptions = computed<MkSelectOption[]>(() => [\n { label: this.i18n.queryTrue, value: true },\n { label: this.i18n.queryFalse, value: false },\n ]);\n\n protected isGroup = mkIsQueryGroup;\n\n protected fieldOf(rule: MkQueryRule): MkQueryField | undefined {\n return this.fields().find((f) => f.key === rule.field);\n }\n\n protected typeOf(rule: MkQueryRule): string {\n return this.fieldOf(rule)?.type ?? 'string';\n }\n\n protected operatorOptions(rule: MkQueryRule): MkSelectOption[] {\n return mkQueryOperatorsFor(this.fieldOf(rule)).map((op) => ({\n label: mkQueryOperatorLabel(op, this.i18n),\n value: op,\n }));\n }\n\n protected needsValue(rule: MkQueryRule): boolean {\n return !MK_QUERY_UNARY.has(rule.operator);\n }\n\n protected selectOptions(rule: MkQueryRule): MkSelectOption[] {\n return (this.fieldOf(rule)?.options ?? []).map((o) => ({ label: o.label, value: o.value }));\n }\n\n protected isList(rule: MkQueryRule): boolean {\n return rule.operator === 'in' || rule.operator === 'notIn';\n }\n\n protected isRange(rule: MkQueryRule): boolean {\n return rule.operator === 'between';\n }\n\n protected asArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n }\n\n protected rangePart(rule: MkQueryRule, index: 0 | 1): unknown {\n return Array.isArray(rule.value) ? rule.value[index] : undefined;\n }\n\n protected dateValue(v: unknown): Date | null {\n return fromIsoDate(v);\n }\n\n protected numberValue(v: unknown): number | null {\n return typeof v === 'number' ? v : v == null || v === '' ? null : Number(v);\n }\n\n protected textValue(v: unknown): string {\n return v == null ? '' : String(v);\n }\n\n // --- Edits (all immutable) --------------------------------------------------\n\n protected setCombinator(combinator: MkQueryCombinator): void {\n if (this.group().combinator === combinator) return;\n this.groupChange.emit({ ...this.group(), combinator });\n }\n\n protected toggleNot(): void {\n this.groupChange.emit({ ...this.group(), not: !this.group().not });\n }\n\n protected addRule(): void {\n const field = this.fields()[0];\n if (!field) return;\n this.groupChange.emit({ ...this.group(), rules: [...this.group().rules, mkCreateQueryRule(field)] });\n }\n\n protected addGroup(): void {\n this.groupChange.emit({ ...this.group(), rules: [...this.group().rules, mkCreateQueryGroup()] });\n }\n\n protected removeAt(index: number): void {\n this.groupChange.emit({ ...this.group(), rules: this.group().rules.filter((_, i) => i !== index) });\n }\n\n protected replaceAt(index: number, node: MkQueryNode): void {\n this.groupChange.emit({ ...this.group(), rules: this.group().rules.map((n, i) => (i === index ? node : n)) });\n }\n\n protected setField(index: number, rule: MkQueryRule, key: unknown): void {\n const field = this.fields().find((f) => f.key === key);\n if (!field || field.key === rule.field) return;\n const ops = mkQueryOperatorsFor(field);\n const operator = ops.includes(rule.operator) ? rule.operator : ops[0];\n this.replaceAt(index, { ...rule, field: field.key, operator, value: undefined });\n }\n\n protected setOperator(index: number, rule: MkQueryRule, op: unknown): void {\n const operator = op as MkQueryOperator;\n if (operator === rule.operator) return;\n const shapeChanged =\n MK_QUERY_UNARY.has(operator) !== MK_QUERY_UNARY.has(rule.operator) ||\n (operator === 'between') !== (rule.operator === 'between') ||\n this.isList({ ...rule, operator }) !== this.isList(rule);\n this.replaceAt(index, { ...rule, operator, value: shapeChanged ? undefined : rule.value });\n }\n\n protected setValue(index: number, rule: MkQueryRule, value: unknown): void {\n this.replaceAt(index, { ...rule, value });\n }\n\n protected setRangePart(index: number, rule: MkQueryRule, part: 0 | 1, value: unknown): void {\n const current = Array.isArray(rule.value) ? [...rule.value] : [undefined, undefined];\n current[part] = value;\n this.setValue(index, rule, current);\n }\n\n protected setDate(index: number, rule: MkQueryRule, d: Date | null): void {\n this.setValue(index, rule, toIsoDate(d));\n }\n\n protected setDateRange(index: number, rule: MkQueryRule, part: 0 | 1, d: Date | null): void {\n this.setRangePart(index, rule, part, toIsoDate(d));\n }\n\n protected onTextInput(index: number, rule: MkQueryRule, event: Event): void {\n this.setValue(index, rule, (event.target as HTMLInputElement).value);\n }\n}\n","@let g = group();\n<div class=\"mk-query-group__bar\">\n <div class=\"mk-query-group__combinator\" role=\"group\" [attr.aria-label]=\"i18n.queryOperator\">\n <button\n type=\"button\"\n class=\"mk-query-group__toggle\"\n [class.mk-query-group__toggle--active]=\"g.combinator === 'and'\"\n [attr.aria-pressed]=\"g.combinator === 'and'\"\n [disabled]=\"disabled()\"\n (click)=\"setCombinator('and')\"\n >{{ i18n.queryAnd }}</button>\n <button\n type=\"button\"\n class=\"mk-query-group__toggle\"\n [class.mk-query-group__toggle--active]=\"g.combinator === 'or'\"\n [attr.aria-pressed]=\"g.combinator === 'or'\"\n [disabled]=\"disabled()\"\n (click)=\"setCombinator('or')\"\n >{{ i18n.queryOr }}</button>\n </div>\n @if (allowNot()) {\n <button\n type=\"button\"\n class=\"mk-query-group__toggle mk-query-group__toggle--not\"\n [class.mk-query-group__toggle--active]=\"!!g.not\"\n [attr.aria-pressed]=\"!!g.not\"\n [disabled]=\"disabled()\"\n (click)=\"toggleNot()\"\n >{{ i18n.queryNot }}</button>\n }\n <span class=\"mk-query-group__spacer\"></span>\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" [disabled]=\"disabled() || !fields().length\" (click)=\"addRule()\">\n <mk-icon name=\"plus\" size=\"sm\" /> {{ i18n.queryAddRule }}\n </button>\n @if (canNest()) {\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" [disabled]=\"disabled()\" (click)=\"addGroup()\">\n <mk-icon name=\"layers\" size=\"sm\" /> {{ i18n.queryAddGroup }}\n </button>\n }\n @if (!root()) {\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" class=\"mk-query-group__remove\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryRemoveGroup\" (click)=\"remove.emit()\">\n <mk-icon name=\"trash\" size=\"sm\" />\n </button>\n }\n</div>\n\n<div class=\"mk-query-group__rules\">\n @if (!g.rules.length) {\n <p class=\"mk-query-group__empty\">{{ i18n.queryEmptyGroup }}</p>\n }\n @for (node of g.rules; track node.id; let i = $index) {\n @if (isGroup(node)) {\n <mk-query-group\n [group]=\"node\"\n [fields]=\"fields()\"\n [depth]=\"depth() + 1\"\n [maxDepth]=\"maxDepth()\"\n [allowNot]=\"allowNot()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n (groupChange)=\"replaceAt(i, $event)\"\n (remove)=\"removeAt(i)\"\n />\n } @else {\n <div class=\"mk-query-group__rule\" role=\"group\">\n <mk-select\n class=\"mk-query-group__field\"\n [options]=\"fieldOptions()\"\n [value]=\"node.field\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"i18n.queryField\"\n (valueChange)=\"setField(i, node, $event)\"\n />\n <mk-select\n class=\"mk-query-group__operator\"\n [options]=\"operatorOptions(node)\"\n [value]=\"node.operator\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"i18n.queryOperator\"\n (valueChange)=\"setOperator(i, node, $event)\"\n />\n @if (needsValue(node)) {\n @switch (typeOf(node)) {\n @case ('boolean') {\n <mk-select class=\"mk-query-group__value\" [options]=\"booleanOptions()\" [value]=\"node.value ?? null\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n @case ('select') {\n @if (isList(node)) {\n <mk-multi-select class=\"mk-query-group__value\" [options]=\"selectOptions(node)\" [value]=\"asArray(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n } @else {\n <mk-select class=\"mk-query-group__value\" [options]=\"selectOptions(node)\" [value]=\"node.value ?? null\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n }\n @case ('number') {\n @if (isRange(node)) {\n <mk-number-input class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"numberValue(rangePart(node, 0))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueFrom\" [attr.aria-label]=\"i18n.queryValueFrom\" (valueChange)=\"setRangePart(i, node, 0, $event)\" />\n <mk-number-input class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"numberValue(rangePart(node, 1))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueTo\" [attr.aria-label]=\"i18n.queryValueTo\" (valueChange)=\"setRangePart(i, node, 1, $event)\" />\n } @else {\n <mk-number-input class=\"mk-query-group__value\" [value]=\"numberValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"fieldOf(node)?.placeholder ?? ''\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n }\n @case ('date') {\n @if (isRange(node)) {\n <mk-date-picker class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"dateValue(rangePart(node, 0))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueFrom\" (valueChange)=\"setDateRange(i, node, 0, $event)\" />\n <mk-date-picker class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"dateValue(rangePart(node, 1))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueTo\" (valueChange)=\"setDateRange(i, node, 1, $event)\" />\n } @else {\n <mk-date-picker class=\"mk-query-group__value\" [value]=\"dateValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" (valueChange)=\"setDate(i, node, $event)\" />\n }\n }\n @default {\n <input mkInput class=\"mk-query-group__value\" type=\"text\" [value]=\"textValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"fieldOf(node)?.placeholder ?? ''\" [attr.aria-label]=\"i18n.queryValue\" (input)=\"onTextInput(i, node, $event)\" />\n }\n }\n }\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" class=\"mk-query-group__remove\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryRemoveRule\" (click)=\"removeAt(i)\">\n <mk-icon name=\"close\" size=\"sm\" />\n </button>\n </div>\n }\n }\n</div>\n","import { ChangeDetectionStrategy, Component, booleanAttribute, inject, input, model, numberAttribute } from '@angular/core';\nimport { MK_I18N, mkCreateQueryGroup, type MkQueryField, type MkQueryGroup, type MkSize } from '@mk-kit/ui/core';\nimport { MkQueryGroupComponent } from './query-group';\n\n/**\n * QueryBuilder — a rule / group tree the user assembles from your `fields`,\n * held as plain JSON (`MkQueryGroup`) in the two-way `query` model. Pair it\n * with `mkQueryToPredicate()` to filter rows in the browser, with\n * `MkTableDataSource.setQuery()` to send it to the server, or with\n * `mkQueryToText()` for a readable summary.\n *\n * ```html\n * <mk-query-builder [fields]=\"fields\" [(query)]=\"query\" allowNot />\n *\n * fields: MkQueryField[] = [\n * { key: 'name', label: 'Name' },\n * { key: 'orders', label: 'Orders', type: 'number' },\n * { key: 'status', label: 'Status', type: 'select', options: [{ label: 'Active', value: 'active' }, …] },\n * { key: 'since', label: 'Customer since', type: 'date' },\n * { key: 'vip', label: 'VIP', type: 'boolean' },\n * ];\n * rows = computed(() => this.all.filter(mkQueryToPredicate(this.query(), this.fields)));\n * ```\n */\n@Component({\n selector: 'mk-query-builder',\n template: `\n <mk-query-group\n root\n [group]=\"query()\"\n [fields]=\"fields()\"\n [depth]=\"0\"\n [maxDepth]=\"maxDepth()\"\n [allowNot]=\"allowNot()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n (groupChange)=\"query.set($event)\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MkQueryGroupComponent],\n host: {\n class: 'mk-query-builder',\n role: 'group',\n '[attr.aria-label]': 'ariaLabel() ?? i18n.queryBuilderLabel',\n style: 'display: block',\n },\n})\nexport class MkQueryBuilder {\n protected readonly i18n = inject(MK_I18N);\n\n /** The filterable fields, in picker order. */\n readonly fields = input.required<readonly MkQueryField[]>();\n /** The query tree (two-way). Starts as an empty `and` group. */\n readonly query = model<MkQueryGroup>(mkCreateQueryGroup());\n /** How deep groups may nest (0 = rules only). */\n readonly maxDepth = input(3, { transform: numberAttribute });\n /** Offer a *Not* toggle on every group. */\n readonly allowNot = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Control size (default `sm`). */\n readonly size = input<MkSize>('sm');\n readonly ariaLabel = input<string | undefined>(undefined);\n\n /** Reset to an empty group. */\n clear(): void {\n this.query.set(mkCreateQueryGroup());\n }\n}\n","/**\n * @mk-kit/ui/query-builder — `mk-query-builder`, a rule / group tree editor\n * producing an `MkQueryGroup` (types and `mkQueryToPredicate` live in core).\n */\nexport * from './query-builder';\nexport * from './query-group';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAgCA;AACA,SAAS,SAAS,CAAC,CAAc,EAAA;AAC/B,IAAA,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,IAAI;AACnB,IAAA,MAAM,GAAG,GAAG,CAAC,CAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACrD,OAAO,CAAA,EAAG,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;AAC1E;AAEA;AACA,SAAS,WAAW,CAAC,CAAU,EAAA;IAC7B,IAAI,CAAC,YAAY,IAAI;AAAE,QAAA,OAAO,CAAC;AAC/B,IAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,IAAI;IAC5C,MAAM,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,EAAE;AACN,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;AACrB,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;IAC7C;AACA,IAAA,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D;AAEA;;;;AAIG;MAwBU,qBAAqB,CAAA;AACb,IAAA,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;IAEhC,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAgB;IACtC,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAA2B;IAClD,KAAK,GAAG,KAAK,CAAC,CAAC,6EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAChD,QAAQ,GAAG,KAAK,CAAC,CAAC,gFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IACnD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,IAAI,GAAG,KAAK,CAAC,KAAK,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACpD,IAAI,GAAG,KAAK,CAAS,IAAI;6EAAC;;IAG1B,WAAW,GAAG,MAAM,EAAgB;;IAEpC,MAAM,GAAG,MAAM,EAAQ;AAEb,IAAA,YAAY,GAAG,QAAQ,CAAmB,MAC3D,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;qFAC7D;AACkB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;gFAAC;AACxD,IAAA,cAAc,GAAG,QAAQ,CAAmB,MAAM;QACnE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;QAC3C,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9C,KAAA;uFAAC;IAEQ,OAAO,GAAG,cAAc;AAExB,IAAA,OAAO,CAAC,IAAiB,EAAA;QACjC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC;IACxD;AAEU,IAAA,MAAM,CAAC,IAAiB,EAAA;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,QAAQ;IAC7C;AAEU,IAAA,eAAe,CAAC,IAAiB,EAAA;AACzC,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM;YAC1D,KAAK,EAAE,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;AAC1C,YAAA,KAAK,EAAE,EAAE;AACV,SAAA,CAAC,CAAC;IACL;AAEU,IAAA,UAAU,CAAC,IAAiB,EAAA;QACpC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC3C;AAEU,IAAA,aAAa,CAAC,IAAiB,EAAA;AACvC,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7F;AAEU,IAAA,MAAM,CAAC,IAAiB,EAAA;QAChC,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO;IAC5D;AAEU,IAAA,OAAO,CAAC,IAAiB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS;IACpC;AAEU,IAAA,OAAO,CAAC,KAAc,EAAA;AAC9B,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;IAC1C;IAEU,SAAS,CAAC,IAAiB,EAAE,KAAY,EAAA;QACjD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS;IAClE;AAEU,IAAA,SAAS,CAAC,CAAU,EAAA;AAC5B,QAAA,OAAO,WAAW,CAAC,CAAC,CAAC;IACvB;AAEU,IAAA,WAAW,CAAC,CAAU,EAAA;AAC9B,QAAA,OAAO,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;IAC7E;AAEU,IAAA,SAAS,CAAC,CAAU,EAAA;AAC5B,QAAA,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IACnC;;AAIU,IAAA,aAAa,CAAC,UAA6B,EAAA;AACnD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,KAAK,UAAU;YAAE;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC;IACxD;IAEU,SAAS,GAAA;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;IACpE;IAEU,OAAO,GAAA;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IACtG;IAEU,QAAQ,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;IAClG;AAEU,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;IACrG;IAEU,SAAS,CAAC,KAAa,EAAE,IAAiB,EAAA;QAClD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/G;AAEU,IAAA,QAAQ,CAAC,KAAa,EAAE,IAAiB,EAAE,GAAY,EAAA;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK;YAAE;AACxC,QAAA,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAClF;AAEU,IAAA,WAAW,CAAC,KAAa,EAAE,IAAiB,EAAE,EAAW,EAAA;QACjE,MAAM,QAAQ,GAAG,EAAqB;AACtC,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ;YAAE;AAChC,QAAA,MAAM,YAAY,GAChB,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClE,CAAC,QAAQ,KAAK,SAAS,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;AAC1D,YAAA,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5F;AAEU,IAAA,QAAQ,CAAC,KAAa,EAAE,IAAiB,EAAE,KAAc,EAAA;AACjE,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3C;AAEU,IAAA,YAAY,CAAC,KAAa,EAAE,IAAiB,EAAE,IAAW,EAAE,KAAc,EAAA;QAClF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;AACpF,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK;QACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;IACrC;AAEU,IAAA,OAAO,CAAC,KAAa,EAAE,IAAiB,EAAE,CAAc,EAAA;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1C;AAEU,IAAA,YAAY,CAAC,KAAa,EAAE,IAAiB,EAAE,IAAW,EAAE,CAAc,EAAA;AAClF,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD;AAEU,IAAA,WAAW,CAAC,KAAa,EAAE,IAAiB,EAAE,KAAY,EAAA;AAClE,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAG,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;IACtE;uGAlJW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,m1CC/ElC,wrNA2HA,EAAA,MAAA,EAAA,CAAA,q4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MD5Ca,qBAAqB,CAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAhB9B,QAAQ,CAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACR,YAAY,CAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,KAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACZ,MAAM,4GACN,OAAO,CAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACP,aAAa,CAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACb,aAAa,kMACb,QAAQ,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAUC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;AACP,wBAAA,UAAU,CAAC,MAAK,qBAAsB,CAAC;wBACvC,QAAQ;wBACR,YAAY;wBACZ,MAAM;wBACN,OAAO;wBACP,aAAa;wBACb,aAAa;wBACb,QAAQ;qBACT,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,8BAA8B,EAAE,QAAQ;AACxC,wBAAA,6BAA6B,EAAE,eAAe;AAC9C,wBAAA,mBAAmB,EAAE,oCAAoC;AAC1D,qBAAA,EAAA,QAAA,EAAA,wrNAAA,EAAA,MAAA,EAAA,CAAA,q4EAAA,CAAA,EAAA;;;AEzEH;;;;;;;;;;;;;;;;;;;AAmBG;MAyBU,cAAc,CAAA;AACN,IAAA,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;;IAGhC,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAA2B;;AAElD,IAAA,KAAK,GAAG,KAAK,CAAe,kBAAkB,EAAE;8EAAC;;IAEjD,QAAQ,GAAG,KAAK,CAAC,CAAC,gFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;;IAEnD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAExD,IAAI,GAAG,KAAK,CAAS,IAAI;6EAAC;IAC1B,SAAS,GAAG,KAAK,CAAqB,SAAS;kFAAC;;IAGzD,KAAK,GAAA;QACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;IACtC;uGAnBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,uCAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBf;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAES,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAQpB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAxB1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,qBAAqB,CAAC;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,mBAAmB,EAAE,uCAAuC;AAC5D,wBAAA,KAAK,EAAE,gBAAgB;AACxB,qBAAA;AACF,iBAAA;;;AC/CD;;;AAGG;;ACHH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"mk-kit-ui-query-builder.mjs","sources":["../../../projects/mk-kit/query-builder/query-group.ts","../../../projects/mk-kit/query-builder/query-group.html","../../../projects/mk-kit/query-builder/query-builder.ts","../../../projects/mk-kit/query-builder/index.ts","../../../projects/mk-kit/query-builder/mk-kit-ui-query-builder.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n} from '@angular/core';\nimport {\n MK_I18N,\n MK_QUERY_UNARY,\n mkCreateQueryGroup,\n mkCreateQueryRule,\n mkIsQueryGroup,\n mkQueryOperatorLabel,\n mkQueryOperatorsFor,\n type MkQueryCombinator,\n type MkQueryField,\n type MkQueryGroup,\n type MkQueryNode,\n type MkQueryOperator,\n type MkQueryRule,\n} from '@mk-kit/ui/core';\nimport type { MkSize } from '@mk-kit/ui/core';\nimport { MkButton } from '@mk-kit/ui/button';\nimport { MkIcon } from '@mk-kit/ui/icon';\nimport { MkInput, MkMultiSelect, MkNumberInput, MkSelect, type MkSelectOption } from '@mk-kit/ui/forms';\nimport { MkDatePicker } from '@mk-kit/ui/datetime';\n\n/** Format a Date as an ISO calendar date (`YYYY-MM-DD`, local). */\nfunction toIsoDate(d: Date | null): string | null {\n if (!d) return null;\n const pad = (n: number) => String(n).padStart(2, '0');\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n}\n\n/** Parse an ISO calendar date back into a local Date (`null` when invalid). */\nfunction fromIsoDate(v: unknown): Date | null {\n if (v instanceof Date) return v;\n if (typeof v !== 'string' || !v) return null;\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(v);\n if (!m) {\n const d = new Date(v);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n return new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]));\n}\n\n/**\n * One group of the builder — its combinator toggle, rules, nested groups and\n * the add / remove actions. Used by `mk-query-builder`; every edit emits a\n * new immutable group upward.\n */\n@Component({\n selector: 'mk-query-group',\n templateUrl: './query-group.html',\n styleUrl: './query-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n forwardRef(() => MkQueryGroupComponent),\n MkButton,\n MkDatePicker,\n MkIcon,\n MkInput,\n MkMultiSelect,\n MkNumberInput,\n MkSelect,\n ],\n host: {\n class: 'mk-query-group',\n role: 'group',\n '[class.mk-query-group--root]': 'root()',\n '[class.mk-query-group--not]': '!!group().not',\n '[attr.aria-label]': 'root() ? null : i18n.queryAddGroup',\n },\n})\nexport class MkQueryGroupComponent {\n protected readonly i18n = inject(MK_I18N);\n\n readonly group = input.required<MkQueryGroup>();\n readonly fields = input.required<readonly MkQueryField[]>();\n readonly depth = input(0, { transform: numberAttribute });\n readonly maxDepth = input(3, { transform: numberAttribute });\n readonly allowNot = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly root = input(false, { transform: booleanAttribute });\n readonly size = input<MkSize>('sm');\n\n /** A new version of this group after an edit. */\n readonly groupChange = output<MkQueryGroup>();\n /** The user removed this (non-root) group. */\n readonly remove = output<void>();\n\n protected readonly fieldOptions = computed<MkSelectOption[]>(() =>\n this.fields().map((f) => ({ label: f.label, value: f.key })),\n );\n protected readonly canNest = computed(() => this.depth() < this.maxDepth());\n protected readonly booleanOptions = computed<MkSelectOption[]>(() => [\n { label: this.i18n.queryTrue, value: true },\n { label: this.i18n.queryFalse, value: false },\n ]);\n\n protected isGroup = mkIsQueryGroup;\n\n protected fieldOf(rule: MkQueryRule): MkQueryField | undefined {\n return this.fields().find((f) => f.key === rule.field);\n }\n\n protected typeOf(rule: MkQueryRule): string {\n return this.fieldOf(rule)?.type ?? 'string';\n }\n\n protected operatorOptions(rule: MkQueryRule): MkSelectOption[] {\n return mkQueryOperatorsFor(this.fieldOf(rule)).map((op) => ({\n label: mkQueryOperatorLabel(op, this.i18n),\n value: op,\n }));\n }\n\n protected needsValue(rule: MkQueryRule): boolean {\n return !MK_QUERY_UNARY.has(rule.operator);\n }\n\n protected selectOptions(rule: MkQueryRule): MkSelectOption[] {\n return (this.fieldOf(rule)?.options ?? []).map((o) => ({ label: o.label, value: o.value }));\n }\n\n protected isList(rule: MkQueryRule): boolean {\n return rule.operator === 'in' || rule.operator === 'notIn';\n }\n\n protected isRange(rule: MkQueryRule): boolean {\n return rule.operator === 'between';\n }\n\n protected asArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n }\n\n protected rangePart(rule: MkQueryRule, index: 0 | 1): unknown {\n return Array.isArray(rule.value) ? rule.value[index] : undefined;\n }\n\n protected dateValue(v: unknown): Date | null {\n return fromIsoDate(v);\n }\n\n protected numberValue(v: unknown): number | null {\n return typeof v === 'number' ? v : v == null || v === '' ? null : Number(v);\n }\n\n protected textValue(v: unknown): string {\n return v == null ? '' : String(v);\n }\n\n // --- Edits (all immutable) --------------------------------------------------\n\n protected setCombinator(combinator: MkQueryCombinator): void {\n if (this.group().combinator === combinator) return;\n this.groupChange.emit({ ...this.group(), combinator });\n }\n\n protected toggleNot(): void {\n this.groupChange.emit({ ...this.group(), not: !this.group().not });\n }\n\n protected addRule(): void {\n const field = this.fields()[0];\n if (!field) return;\n this.groupChange.emit({ ...this.group(), rules: [...this.group().rules, mkCreateQueryRule(field)] });\n }\n\n protected addGroup(): void {\n this.groupChange.emit({ ...this.group(), rules: [...this.group().rules, mkCreateQueryGroup()] });\n }\n\n protected removeAt(index: number): void {\n this.groupChange.emit({ ...this.group(), rules: this.group().rules.filter((_, i) => i !== index) });\n }\n\n protected replaceAt(index: number, node: MkQueryNode): void {\n this.groupChange.emit({ ...this.group(), rules: this.group().rules.map((n, i) => (i === index ? node : n)) });\n }\n\n protected setField(index: number, rule: MkQueryRule, key: unknown): void {\n const field = this.fields().find((f) => f.key === key);\n if (!field || field.key === rule.field) return;\n const ops = mkQueryOperatorsFor(field);\n const operator = ops.includes(rule.operator) ? rule.operator : ops[0];\n this.replaceAt(index, { ...rule, field: field.key, operator, value: undefined });\n }\n\n protected setOperator(index: number, rule: MkQueryRule, op: unknown): void {\n const operator = op as MkQueryOperator;\n if (operator === rule.operator) return;\n const shapeChanged =\n MK_QUERY_UNARY.has(operator) !== MK_QUERY_UNARY.has(rule.operator) ||\n (operator === 'between') !== (rule.operator === 'between') ||\n this.isList({ ...rule, operator }) !== this.isList(rule);\n this.replaceAt(index, { ...rule, operator, value: shapeChanged ? undefined : rule.value });\n }\n\n protected setValue(index: number, rule: MkQueryRule, value: unknown): void {\n this.replaceAt(index, { ...rule, value });\n }\n\n protected setRangePart(index: number, rule: MkQueryRule, part: 0 | 1, value: unknown): void {\n const current = Array.isArray(rule.value) ? [...rule.value] : [undefined, undefined];\n current[part] = value;\n this.setValue(index, rule, current);\n }\n\n protected setDate(index: number, rule: MkQueryRule, d: Date | null): void {\n this.setValue(index, rule, toIsoDate(d));\n }\n\n protected setDateRange(index: number, rule: MkQueryRule, part: 0 | 1, d: Date | null): void {\n this.setRangePart(index, rule, part, toIsoDate(d));\n }\n\n protected onTextInput(index: number, rule: MkQueryRule, event: Event): void {\n this.setValue(index, rule, (event.target as HTMLInputElement).value);\n }\n}\n","@let g = group();\n<div class=\"mk-query-group__bar\">\n <div class=\"mk-query-group__combinator\" role=\"group\" [attr.aria-label]=\"i18n.queryOperator\">\n <button\n type=\"button\"\n class=\"mk-query-group__toggle\"\n [class.mk-query-group__toggle--active]=\"g.combinator === 'and'\"\n [attr.aria-pressed]=\"g.combinator === 'and'\"\n [disabled]=\"disabled()\"\n (click)=\"setCombinator('and')\"\n >{{ i18n.queryAnd }}</button>\n <button\n type=\"button\"\n class=\"mk-query-group__toggle\"\n [class.mk-query-group__toggle--active]=\"g.combinator === 'or'\"\n [attr.aria-pressed]=\"g.combinator === 'or'\"\n [disabled]=\"disabled()\"\n (click)=\"setCombinator('or')\"\n >{{ i18n.queryOr }}</button>\n </div>\n @if (allowNot()) {\n <button\n type=\"button\"\n class=\"mk-query-group__toggle mk-query-group__toggle--not\"\n [class.mk-query-group__toggle--active]=\"!!g.not\"\n [attr.aria-pressed]=\"!!g.not\"\n [disabled]=\"disabled()\"\n (click)=\"toggleNot()\"\n >{{ i18n.queryNot }}</button>\n }\n <span class=\"mk-query-group__spacer\"></span>\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" [disabled]=\"disabled() || !fields().length\" (click)=\"addRule()\">\n <mk-icon name=\"plus\" size=\"sm\" /> {{ i18n.queryAddRule }}\n </button>\n @if (canNest()) {\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" [disabled]=\"disabled()\" (click)=\"addGroup()\">\n <mk-icon name=\"layers\" size=\"sm\" /> {{ i18n.queryAddGroup }}\n </button>\n }\n @if (!root()) {\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" class=\"mk-query-group__remove\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryRemoveGroup\" (click)=\"remove.emit()\">\n <mk-icon name=\"trash\" size=\"sm\" />\n </button>\n }\n</div>\n\n<div class=\"mk-query-group__rules\">\n @if (!g.rules.length) {\n <p class=\"mk-query-group__empty\">{{ i18n.queryEmptyGroup }}</p>\n }\n @for (node of g.rules; track node.id; let i = $index) {\n @if (isGroup(node)) {\n <mk-query-group\n [group]=\"node\"\n [fields]=\"fields()\"\n [depth]=\"depth() + 1\"\n [maxDepth]=\"maxDepth()\"\n [allowNot]=\"allowNot()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n (groupChange)=\"replaceAt(i, $event)\"\n (remove)=\"removeAt(i)\"\n />\n } @else {\n <div class=\"mk-query-group__rule\" role=\"group\">\n <mk-select\n class=\"mk-query-group__field\"\n [options]=\"fieldOptions()\"\n [value]=\"node.field\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"i18n.queryField\"\n (valueChange)=\"setField(i, node, $event)\"\n />\n <mk-select\n class=\"mk-query-group__operator\"\n [options]=\"operatorOptions(node)\"\n [value]=\"node.operator\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"i18n.queryOperator\"\n (valueChange)=\"setOperator(i, node, $event)\"\n />\n @if (needsValue(node)) {\n @switch (typeOf(node)) {\n @case ('boolean') {\n <mk-select class=\"mk-query-group__value\" [options]=\"booleanOptions()\" [value]=\"node.value ?? null\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n @case ('select') {\n @if (isList(node)) {\n <mk-multi-select class=\"mk-query-group__value\" [options]=\"selectOptions(node)\" [value]=\"asArray(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n } @else {\n <mk-select class=\"mk-query-group__value\" [options]=\"selectOptions(node)\" [value]=\"node.value ?? null\" [size]=\"size()\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n }\n @case ('number') {\n @if (isRange(node)) {\n <mk-number-input class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"numberValue(rangePart(node, 0))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueFrom\" [attr.aria-label]=\"i18n.queryValueFrom\" (valueChange)=\"setRangePart(i, node, 0, $event)\" />\n <mk-number-input class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"numberValue(rangePart(node, 1))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueTo\" [attr.aria-label]=\"i18n.queryValueTo\" (valueChange)=\"setRangePart(i, node, 1, $event)\" />\n } @else {\n <mk-number-input class=\"mk-query-group__value\" [value]=\"numberValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"fieldOf(node)?.placeholder ?? ''\" [attr.aria-label]=\"i18n.queryValue\" (valueChange)=\"setValue(i, node, $event)\" />\n }\n }\n @case ('date') {\n @if (isRange(node)) {\n <mk-date-picker class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"dateValue(rangePart(node, 0))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueFrom\" (valueChange)=\"setDateRange(i, node, 0, $event)\" />\n <mk-date-picker class=\"mk-query-group__value mk-query-group__value--half\" [value]=\"dateValue(rangePart(node, 1))\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"i18n.queryValueTo\" (valueChange)=\"setDateRange(i, node, 1, $event)\" />\n } @else {\n <mk-date-picker class=\"mk-query-group__value\" [value]=\"dateValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" (valueChange)=\"setDate(i, node, $event)\" />\n }\n }\n @default {\n <input mkInput class=\"mk-query-group__value\" type=\"text\" [value]=\"textValue(node.value)\" [size]=\"size()\" [disabled]=\"disabled()\" [placeholder]=\"fieldOf(node)?.placeholder ?? ''\" [attr.aria-label]=\"i18n.queryValue\" (input)=\"onTextInput(i, node, $event)\" />\n }\n }\n }\n <button mkButton type=\"button\" variant=\"ghost\" tone=\"neutral\" [size]=\"size()\" class=\"mk-query-group__remove\" [disabled]=\"disabled()\" [attr.aria-label]=\"i18n.queryRemoveRule\" (click)=\"removeAt(i)\">\n <mk-icon name=\"close\" size=\"sm\" />\n </button>\n </div>\n }\n }\n</div>\n","import { ChangeDetectionStrategy, Component, booleanAttribute, inject, input, model, numberAttribute } from '@angular/core';\nimport { MK_I18N, mkCreateQueryGroup, type MkQueryField, type MkQueryGroup, type MkSize } from '@mk-kit/ui/core';\nimport { MkQueryGroupComponent } from './query-group';\n\n/**\n * QueryBuilder — a rule / group tree the user assembles from your `fields`,\n * held as plain JSON (`MkQueryGroup`) in the two-way `query` model. Pair it\n * with `mkQueryToPredicate()` to filter rows in the browser, with\n * `MkTableDataSource.setQuery()` to send it to the server, or with\n * `mkQueryToText()` for a readable summary.\n *\n * ```html\n * <mk-query-builder [fields]=\"fields\" [(query)]=\"query\" allowNot />\n *\n * fields: MkQueryField[] = [\n * { key: 'name', label: 'Name' },\n * { key: 'orders', label: 'Orders', type: 'number' },\n * { key: 'status', label: 'Status', type: 'select', options: [{ label: 'Active', value: 'active' }, …] },\n * { key: 'since', label: 'Customer since', type: 'date' },\n * { key: 'vip', label: 'VIP', type: 'boolean' },\n * ];\n * rows = computed(() => this.all.filter(mkQueryToPredicate(this.query(), this.fields)));\n * ```\n */\n@Component({\n selector: 'mk-query-builder',\n template: `\n <mk-query-group\n root\n [group]=\"query()\"\n [fields]=\"fields()\"\n [depth]=\"0\"\n [maxDepth]=\"maxDepth()\"\n [allowNot]=\"allowNot()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n (groupChange)=\"query.set($event)\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MkQueryGroupComponent],\n host: {\n class: 'mk-query-builder',\n role: 'group',\n '[attr.aria-label]': 'ariaLabel() ?? i18n.queryBuilderLabel',\n style: 'display: block',\n },\n})\nexport class MkQueryBuilder {\n protected readonly i18n = inject(MK_I18N);\n\n /** The filterable fields, in picker order. */\n readonly fields = input.required<readonly MkQueryField[]>();\n /** The query tree (two-way). Starts as an empty `and` group. */\n readonly query = model<MkQueryGroup>(mkCreateQueryGroup());\n /** How deep groups may nest (0 = rules only). */\n readonly maxDepth = input(3, { transform: numberAttribute });\n /** Offer a *Not* toggle on every group. */\n readonly allowNot = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Control size (default `sm`). */\n readonly size = input<MkSize>('sm');\n readonly ariaLabel = input<string | undefined>(undefined);\n\n /** Reset to an empty group. */\n clear(): void {\n this.query.set(mkCreateQueryGroup());\n }\n}\n","/**\n * @mk-kit/ui/query-builder — `mk-query-builder`, a rule / group tree editor\n * producing an `MkQueryGroup` (types and `mkQueryToPredicate` live in core).\n */\nexport * from './query-builder';\nexport * from './query-group';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/styles/mk-kit.css
CHANGED
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
/* Text */
|
|
108
108
|
--mk-text: #1a1d23;
|
|
109
109
|
--mk-text-muted: #56606e;
|
|
110
|
-
--mk-text-subtle: #
|
|
110
|
+
--mk-text-subtle: #626d7a;
|
|
111
111
|
--mk-text-inverse: #ffffff;
|
|
112
112
|
--mk-text-disabled: #adb5c0;
|
|
113
113
|
/* Borders / dividers */
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
--mk-danger-contrast: #ffffff;
|
|
146
146
|
/* Danger as TEXT on surfaces. Same as --mk-danger in light; lighter in dark,
|
|
147
147
|
where the button-label-safe base falls below 4.5:1 as body text. */
|
|
148
|
-
--mk-danger-text: #
|
|
148
|
+
--mk-danger-text: #c81e1e;
|
|
149
149
|
--mk-danger-subtle: #fdeaea;
|
|
150
150
|
--mk-danger-subtle-text: #b3201a;
|
|
151
151
|
/* Semantic — info */
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
--mk-overlay-scrim: rgba(1, 4, 9, 0.6);
|
|
204
204
|
--mk-text: #e6edf3;
|
|
205
205
|
--mk-text-muted: #9aa5b1;
|
|
206
|
-
--mk-text-subtle: #
|
|
206
|
+
--mk-text-subtle: #8a97a6;
|
|
207
207
|
--mk-text-inverse: #0d1117;
|
|
208
208
|
--mk-text-disabled: #4b545f;
|
|
209
209
|
--mk-border: #2a323c;
|
|
@@ -276,7 +276,7 @@
|
|
|
276
276
|
--mk-overlay-scrim: rgba(1, 4, 9, 0.6);
|
|
277
277
|
--mk-text: #e6edf3;
|
|
278
278
|
--mk-text-muted: #9aa5b1;
|
|
279
|
-
--mk-text-subtle: #
|
|
279
|
+
--mk-text-subtle: #8a97a6;
|
|
280
280
|
--mk-text-inverse: #0d1117;
|
|
281
281
|
--mk-text-disabled: #4b545f;
|
|
282
282
|
--mk-border: #2a323c;
|
|
@@ -733,6 +733,16 @@ declare class MkBarChart {
|
|
|
733
733
|
readonly labelAngle: _angular_core.InputSignal<number | "auto">;
|
|
734
734
|
/** Accessible summary; generated from the data when omitted. */
|
|
735
735
|
readonly label: _angular_core.InputSignal<string>;
|
|
736
|
+
/** Make bars clickable + keyboard-focusable (`role="button"`, accessible name) and emit `barClick`. */
|
|
737
|
+
readonly interactive: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
738
|
+
/** A bar was clicked or activated with Enter / Space (needs `interactive`). */
|
|
739
|
+
readonly barClick: _angular_core.OutputEmitterRef<{
|
|
740
|
+
series: MkChartSeries;
|
|
741
|
+
seriesIndex: number;
|
|
742
|
+
category: string;
|
|
743
|
+
categoryIndex: number;
|
|
744
|
+
value: number;
|
|
745
|
+
}>;
|
|
736
746
|
protected readonly hovered: _angular_core.WritableSignal<BarRect | null>;
|
|
737
747
|
/** Tap-to-pin: a touch tap on a bar pins the tooltip until a tap lands
|
|
738
748
|
* outside the chart (mouse hover in/out is unaffected). */
|
|
@@ -789,10 +799,12 @@ declare class MkBarChart {
|
|
|
789
799
|
multi: boolean;
|
|
790
800
|
} | null>;
|
|
791
801
|
protected readonly resolvedLabel: _angular_core.Signal<string>;
|
|
802
|
+
protected emitBar(b: BarRect, event?: Event): void;
|
|
803
|
+
protected barLabel(b: BarRect): string;
|
|
792
804
|
protected setHover(bar: BarRect | null): void;
|
|
793
805
|
protected pinHover(bar: BarRect, event: PointerEvent): void;
|
|
794
806
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MkBarChart, never>;
|
|
795
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkBarChart, "mk-bar-chart", never, { "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "labelAngle": { "alias": "labelAngle"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
807
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkBarChart, "mk-bar-chart", never, { "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "labelAngle": { "alias": "labelAngle"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, { "barClick": "barClick"; }, never, never, true, never>;
|
|
796
808
|
}
|
|
797
809
|
|
|
798
810
|
/**
|
|
@@ -840,6 +852,17 @@ declare class MkLineChart {
|
|
|
840
852
|
readonly showLegend: _angular_core.InputSignal<boolean | undefined>;
|
|
841
853
|
/** Accessible summary; generated from the data when omitted. */
|
|
842
854
|
readonly label: _angular_core.InputSignal<string>;
|
|
855
|
+
/** Make x positions keyboard-focusable (`role="button"`, accessible name) and emit `pointClick`. */
|
|
856
|
+
readonly interactive: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
857
|
+
/** A category (x position) was clicked or activated with Enter / Space (needs `interactive`). */
|
|
858
|
+
readonly pointClick: _angular_core.OutputEmitterRef<{
|
|
859
|
+
index: number;
|
|
860
|
+
category: string;
|
|
861
|
+
values: Array<{
|
|
862
|
+
series: MkChartSeries;
|
|
863
|
+
value: number;
|
|
864
|
+
}>;
|
|
865
|
+
}>;
|
|
843
866
|
protected readonly hoverIndex: _angular_core.WritableSignal<number | null>;
|
|
844
867
|
/** Tap-to-pin: a touch tap on a hit band pins the tooltip until a tap lands
|
|
845
868
|
* outside the chart (mouse hover in/out is unaffected). */
|
|
@@ -905,10 +928,12 @@ declare class MkLineChart {
|
|
|
905
928
|
multi: boolean;
|
|
906
929
|
} | null>;
|
|
907
930
|
protected readonly resolvedLabel: _angular_core.Signal<string>;
|
|
931
|
+
protected emitPoint(index: number, event?: Event): void;
|
|
932
|
+
protected pointLabel(index: number): string;
|
|
908
933
|
protected setHover(index: number | null): void;
|
|
909
934
|
protected pinHover(index: number, event: PointerEvent): void;
|
|
910
935
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MkLineChart, never>;
|
|
911
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkLineChart, "mk-line-chart", never, { "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
936
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkLineChart, "mk-line-chart", never, { "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; }, never, never, true, never>;
|
|
912
937
|
}
|
|
913
938
|
|
|
914
939
|
interface SliceGeom {
|
|
@@ -947,6 +972,17 @@ declare class MkDonutChart {
|
|
|
947
972
|
readonly centerSublabel: _angular_core.InputSignal<string>;
|
|
948
973
|
/** Accessible summary; generated from the data when omitted. */
|
|
949
974
|
readonly label: _angular_core.InputSignal<string>;
|
|
975
|
+
/**
|
|
976
|
+
* Make slices (and legend rows) clickable and keyboard-focusable: they get
|
|
977
|
+
* `role="button"` + an accessible name and emit `sliceClick`. Off by default —
|
|
978
|
+
* the chart stays a static picture with its screen-reader table.
|
|
979
|
+
*/
|
|
980
|
+
readonly interactive: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
981
|
+
/** A slice was clicked or activated with Enter / Space (needs `interactive`). */
|
|
982
|
+
readonly sliceClick: _angular_core.OutputEmitterRef<{
|
|
983
|
+
slice: MkChartSlice;
|
|
984
|
+
index: number;
|
|
985
|
+
}>;
|
|
950
986
|
protected readonly hovered: _angular_core.WritableSignal<number | null>;
|
|
951
987
|
/** Tap-to-pin: a touch tap on a slice pins the tooltip until a tap lands
|
|
952
988
|
* outside the chart (mouse hover in/out is unaffected). */
|
|
@@ -971,10 +1007,12 @@ declare class MkDonutChart {
|
|
|
971
1007
|
percent: number;
|
|
972
1008
|
} | null>;
|
|
973
1009
|
protected readonly resolvedLabel: _angular_core.Signal<string>;
|
|
1010
|
+
protected emitSlice(index: number, event?: Event): void;
|
|
1011
|
+
protected sliceLabel(index: number): string;
|
|
974
1012
|
protected setHover(index: number | null): void;
|
|
975
1013
|
protected pinHover(index: number, event: PointerEvent): void;
|
|
976
1014
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MkDonutChart, never>;
|
|
977
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkDonutChart, "mk-donut-chart", never, { "slices": { "alias": "slices"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "centerLabel": { "alias": "centerLabel"; "required": false; "isSignal": true; }; "centerSublabel": { "alias": "centerSublabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1015
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkDonutChart, "mk-donut-chart", never, { "slices": { "alias": "slices"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "centerLabel": { "alias": "centerLabel"; "required": false; "isSignal": true; }; "centerSublabel": { "alias": "centerSublabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, { "sliceClick": "sliceClick"; }, never, never, true, never>;
|
|
978
1016
|
}
|
|
979
1017
|
|
|
980
1018
|
/**
|
|
@@ -243,6 +243,9 @@ declare class MkDatePicker implements ControlValueAccessor, Validator {
|
|
|
243
243
|
/** Two-way selected date. */
|
|
244
244
|
readonly value: _angular_core.ModelSignal<Date | null>;
|
|
245
245
|
/** Earliest selectable date (inclusive). */
|
|
246
|
+
/** Accessible name when the picker is used without an `mk-form-field` label. */
|
|
247
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
248
|
+
protected readonly ariaLabelAttr: _angular_core.Signal<string | null>;
|
|
246
249
|
readonly min: _angular_core.InputSignal<Date | null>;
|
|
247
250
|
/** Latest selectable date (inclusive). */
|
|
248
251
|
readonly max: _angular_core.InputSignal<Date | null>;
|
|
@@ -311,7 +314,7 @@ declare class MkDatePicker implements ControlValueAccessor, Validator {
|
|
|
311
314
|
validate(control: AbstractControl): ValidationErrors | null;
|
|
312
315
|
registerOnValidatorChange(fn: () => void): void;
|
|
313
316
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MkDatePicker, never>;
|
|
314
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkDatePicker, "mk-date-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabledDate": { "alias": "disabledDate"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
317
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkDatePicker, "mk-date-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabledDate": { "alias": "disabledDate"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
315
318
|
}
|
|
316
319
|
|
|
317
320
|
/** A selectable time option. */
|
|
@@ -363,6 +366,9 @@ declare class MkTimePicker implements ControlValueAccessor, Validator {
|
|
|
363
366
|
*/
|
|
364
367
|
readonly value: _angular_core.ModelSignal<string | Date | null>;
|
|
365
368
|
/** Shape of the form value: a `HH:mm` string or a `Date`. */
|
|
369
|
+
/** Accessible name when the picker is used without an `mk-form-field` label. */
|
|
370
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
371
|
+
protected readonly ariaLabelAttr: _angular_core.Signal<string | null>;
|
|
366
372
|
readonly valueFormat: _angular_core.InputSignal<"string" | "date">;
|
|
367
373
|
/** Earliest selectable time `HH:mm` (inclusive). */
|
|
368
374
|
readonly min: _angular_core.InputSignal<string | null>;
|
|
@@ -453,7 +459,7 @@ declare class MkTimePicker implements ControlValueAccessor, Validator {
|
|
|
453
459
|
validate(control: AbstractControl): ValidationErrors | null;
|
|
454
460
|
registerOnValidatorChange(fn: () => void): void;
|
|
455
461
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MkTimePicker, never>;
|
|
456
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkTimePicker, "mk-time-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
462
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkTimePicker, "mk-time-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
457
463
|
}
|
|
458
464
|
|
|
459
465
|
/** A selectable time-of-day option in the panel's list. */
|
|
@@ -569,6 +569,8 @@ declare class MkSelect implements ControlValueAccessor, OnDestroy {
|
|
|
569
569
|
protected readonly i18n: _mk_kit_ui_core.MkI18nStrings;
|
|
570
570
|
private readonly triggerRef;
|
|
571
571
|
/** The list of options to choose from. */
|
|
572
|
+
/** Accessible name when the control is used without an `mk-form-field` label. */
|
|
573
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
572
574
|
readonly options: _angular_core.InputSignal<readonly MkSelectOption[]>;
|
|
573
575
|
/** Placeholder shown when nothing is selected. */
|
|
574
576
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
@@ -615,7 +617,7 @@ declare class MkSelect implements ControlValueAccessor, OnDestroy {
|
|
|
615
617
|
registerOnTouched(fn: () => void): void;
|
|
616
618
|
setDisabledState(isDisabled: boolean): void;
|
|
617
619
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MkSelect, never>;
|
|
618
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkSelect, "mk-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
620
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkSelect, "mk-select", never, { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
619
621
|
}
|
|
620
622
|
|
|
621
623
|
/** One row of an `mk-listbox`. */
|
|
@@ -912,6 +914,8 @@ declare class MkAutocomplete implements ControlValueAccessor {
|
|
|
912
914
|
private lastAnnouncedCount;
|
|
913
915
|
constructor();
|
|
914
916
|
/** The list of suggestions. Update it from `search` for async sources. */
|
|
917
|
+
/** Accessible name when the control is used without an `mk-form-field` label. */
|
|
918
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
915
919
|
readonly options: _angular_core.InputSignal<readonly MkAutocompleteOption[]>;
|
|
916
920
|
/** Placeholder shown when the input is empty. */
|
|
917
921
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
@@ -980,7 +984,7 @@ declare class MkAutocomplete implements ControlValueAccessor {
|
|
|
980
984
|
registerOnTouched(fn: () => void): void;
|
|
981
985
|
setDisabledState(isDisabled: boolean): void;
|
|
982
986
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MkAutocomplete, never>;
|
|
983
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkAutocomplete, "mk-autocomplete", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "minChars": { "alias": "minChars"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "requireSelection": { "alias": "requireSelection"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "search"; "optionSelected": "optionSelected"; }, never, never, true, never>;
|
|
987
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkAutocomplete, "mk-autocomplete", never, { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "minChars": { "alias": "minChars"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "requireSelection": { "alias": "requireSelection"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "search"; "optionSelected": "optionSelected"; }, never, never, true, never>;
|
|
984
988
|
}
|
|
985
989
|
|
|
986
990
|
/** How mention suggestions are narrowed against the typed query. */
|
|
@@ -1201,6 +1205,8 @@ declare class MkMultiSelect implements ControlValueAccessor, Validator {
|
|
|
1201
1205
|
private readonly announcer;
|
|
1202
1206
|
private readonly inputRef;
|
|
1203
1207
|
/** The list of options to choose from. Update from `search` for async. */
|
|
1208
|
+
/** Accessible name when the control is used without an `mk-form-field` label. */
|
|
1209
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
1204
1210
|
readonly options: _angular_core.InputSignal<readonly MkMultiSelectOption[]>;
|
|
1205
1211
|
/** Placeholder shown when no value is selected. */
|
|
1206
1212
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
@@ -1299,7 +1305,7 @@ declare class MkMultiSelect implements ControlValueAccessor, Validator {
|
|
|
1299
1305
|
validate(control: AbstractControl): ValidationErrors | null;
|
|
1300
1306
|
registerOnValidatorChange(fn: () => void): void;
|
|
1301
1307
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MkMultiSelect, never>;
|
|
1302
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkMultiSelect, "mk-multi-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "minChars": { "alias": "minChars"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "search"; "optionAdded": "optionAdded"; "optionRemoved": "optionRemoved"; }, never, never, true, never>;
|
|
1308
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkMultiSelect, "mk-multi-select", never, { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "minChars": { "alias": "minChars"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "search"; "optionAdded": "optionAdded"; "optionRemoved": "optionRemoved"; }, never, never, true, never>;
|
|
1303
1309
|
}
|
|
1304
1310
|
|
|
1305
1311
|
/**
|
|
@@ -2217,6 +2223,8 @@ declare class MkNumberInput implements ControlValueAccessor, Validator {
|
|
|
2217
2223
|
protected readonly i18n: _mk_kit_ui_core.MkI18nStrings;
|
|
2218
2224
|
private readonly inputRef;
|
|
2219
2225
|
/** Minimum value. */
|
|
2226
|
+
/** Accessible name when the control is used without an `mk-form-field` label. */
|
|
2227
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
2220
2228
|
readonly min: _angular_core.InputSignal<number | null>;
|
|
2221
2229
|
/** Maximum value. */
|
|
2222
2230
|
readonly max: _angular_core.InputSignal<number | null>;
|
|
@@ -2264,7 +2272,7 @@ declare class MkNumberInput implements ControlValueAccessor, Validator {
|
|
|
2264
2272
|
validate(control: AbstractControl): ValidationErrors | null;
|
|
2265
2273
|
registerOnValidatorChange(fn: () => void): void;
|
|
2266
2274
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MkNumberInput, never>;
|
|
2267
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkNumberInput, "mk-number-input", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
2275
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkNumberInput, "mk-number-input", never, { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
2268
2276
|
}
|
|
2269
2277
|
|
|
2270
2278
|
type MkNumericKeypadMode = 'pin' | 'quantity' | 'amount';
|
|
@@ -2860,6 +2868,8 @@ declare class MkCurrencyInput implements ControlValueAccessor, Validator {
|
|
|
2860
2868
|
/** Localised strings (override globally via `provideMkI18n`). */
|
|
2861
2869
|
protected readonly i18n: _mk_kit_ui_core.MkI18nStrings;
|
|
2862
2870
|
/** ISO 4217 currency code (`PLN`, `USD`, …). Empty = plain decimal. */
|
|
2871
|
+
/** Accessible name when the control is used without an `mk-form-field` label. */
|
|
2872
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
2863
2873
|
readonly currency: _angular_core.InputSignal<string>;
|
|
2864
2874
|
/** BCP 47 locale for separators/symbol; defaults to the runtime locale. */
|
|
2865
2875
|
readonly locale: _angular_core.InputSignal<string | undefined>;
|
|
@@ -2926,7 +2936,7 @@ declare class MkCurrencyInput implements ControlValueAccessor, Validator {
|
|
|
2926
2936
|
validate(control: AbstractControl): ValidationErrors | null;
|
|
2927
2937
|
registerOnValidatorChange(fn: () => void): void;
|
|
2928
2938
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MkCurrencyInput, never>;
|
|
2929
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkCurrencyInput, "mk-currency-input", ["mkCurrencyInput"], { "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "decimals": { "alias": "decimals"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "allowNegative": { "alias": "allowNegative"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
2939
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MkCurrencyInput, "mk-currency-input", ["mkCurrencyInput"], { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "decimals": { "alias": "decimals"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "allowNegative": { "alias": "allowNegative"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
2930
2940
|
}
|
|
2931
2941
|
|
|
2932
2942
|
/** Card networks {@link MkCardNumberInput} recognises. */
|