@slotted/angular 0.1.0-beta.2 → 0.1.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/app-shell.json +1 -1
- package/docs/button-group.json +1 -0
- package/docs/button-group.md +1 -1
- package/docs/button.json +45 -11
- package/docs/button.md +10 -6
- package/docs/calendar.json +7 -0
- package/docs/calendar.md +1 -0
- package/docs/chart.json +7 -0
- package/docs/chart.md +1 -0
- package/docs/currency-field.json +32 -1
- package/docs/currency-field.md +4 -1
- package/docs/date-field.json +8 -1
- package/docs/date-field.md +2 -1
- package/docs/date-picker.examples.md +36 -0
- package/docs/date-picker.json +20 -5
- package/docs/date-picker.md +5 -4
- package/docs/dialog.examples.md +20 -0
- package/docs/dialog.json +14 -2
- package/docs/dialog.md +1 -1
- package/docs/guidelines/composition.md +10 -0
- package/docs/guidelines/index.md +2 -0
- package/docs/guidelines/list-pages.md +12 -1
- package/docs/list.json +19 -1
- package/docs/list.md +3 -1
- package/docs/page.json +1 -0
- package/docs/page.md +1 -0
- package/docs/popover.json +1 -1
- package/docs/segmented-control.json +29 -1
- package/docs/segmented-control.md +17 -1
- package/docs/skills/compose-screen/SKILL.md +7 -0
- package/docs/skills/theme-app/SKILL.md +5 -0
- package/docs/split-button.json +1 -0
- package/docs/split-button.md +1 -1
- package/docs/stat-card.json +1 -0
- package/docs/stat-card.md +1 -1
- package/docs/table.examples.md +1 -1
- package/docs/table.json +83 -1
- package/docs/table.md +12 -1
- package/docs/text-field.json +1 -1
- package/docs/text-field.md +1 -1
- package/docs/toggle-group.json +14 -3
- package/docs/toggle-group.md +3 -3
- package/docs/toggle.json +12 -3
- package/docs/toggle.md +3 -3
- package/docs/tokens.md +25 -1
- package/docs/tour.json +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +48 -16
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-button-group.mjs +4 -4
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-button.mjs +51 -19
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-calendar.mjs +158 -33
- package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-cascader.mjs +1 -1
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +41 -20
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
- package/fesm2022/slotted-angular-combobox.mjs +25 -4
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-currency-field.mjs +59 -8
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +4 -4
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-list.mjs +2 -2
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-field.mjs +35 -12
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-picker.mjs +91 -27
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs +1 -1
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-picker.mjs +1 -1
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +1 -1
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
- package/fesm2022/slotted-angular-dialog.mjs +4 -4
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs +9 -9
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-list.mjs +28 -17
- package/fesm2022/slotted-angular-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-markdown.mjs +1 -1
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
- package/fesm2022/slotted-angular-multi-select.mjs +24 -3
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-page.mjs +20 -1
- package/fesm2022/slotted-angular-page.mjs.map +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +25 -5
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +4 -4
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +2 -2
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +107 -9
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle-group.mjs +17 -4
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle.mjs +2 -2
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
- package/fesm2022/slotted-angular-tour.mjs +1 -1
- package/fesm2022/slotted-angular-tour.mjs.map +1 -1
- package/fesm2022/slotted-angular-transfer.mjs +1 -1
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
- package/fesm2022/slotted-angular-wizard.mjs +1 -1
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-app-shell.d.ts +6 -0
- package/types/slotted-angular-app-shell.d.ts.map +1 -1
- package/types/slotted-angular-button-group.d.ts +1 -1
- package/types/slotted-angular-button.d.ts +33 -13
- package/types/slotted-angular-button.d.ts.map +1 -1
- package/types/slotted-angular-calendar.d.ts +28 -2
- package/types/slotted-angular-calendar.d.ts.map +1 -1
- package/types/slotted-angular-chart.d.ts +9 -0
- package/types/slotted-angular-chart.d.ts.map +1 -1
- package/types/slotted-angular-combobox.d.ts +4 -0
- package/types/slotted-angular-combobox.d.ts.map +1 -1
- package/types/slotted-angular-currency-field.d.ts +25 -3
- package/types/slotted-angular-currency-field.d.ts.map +1 -1
- package/types/slotted-angular-date-field.d.ts +11 -1
- package/types/slotted-angular-date-field.d.ts.map +1 -1
- package/types/slotted-angular-date-picker.d.ts +38 -11
- package/types/slotted-angular-date-picker.d.ts.map +1 -1
- package/types/slotted-angular-list.d.ts +42 -27
- package/types/slotted-angular-list.d.ts.map +1 -1
- package/types/slotted-angular-multi-select.d.ts +4 -0
- package/types/slotted-angular-multi-select.d.ts.map +1 -1
- package/types/slotted-angular-page.d.ts.map +1 -1
- package/types/slotted-angular-segmented-control.d.ts +15 -2
- package/types/slotted-angular-segmented-control.d.ts.map +1 -1
- package/types/slotted-angular-split-button.d.ts +2 -2
- package/types/slotted-angular-table.d.ts +59 -5
- package/types/slotted-angular-table.d.ts.map +1 -1
- package/types/slotted-angular-toggle-group.d.ts +8 -2
- package/types/slotted-angular-toggle-group.d.ts.map +1 -1
- package/types/slotted-angular-toggle.d.ts +1 -1
- package/types/slotted-angular-toggle.d.ts.map +1 -1
|
@@ -585,7 +585,7 @@ class SlSavedViews {
|
|
|
585
585
|
</div>
|
|
586
586
|
</form>
|
|
587
587
|
</ng-template>
|
|
588
|
-
`, isInline: true, styles: ["@layer slotted.components{[data-ui=saved-views]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_hover: var(--slotted-tone-secondary-subtle-hover, ButtonFace);--_active: var(--slotted-tone-secondary-subtle-active, ButtonFace);--_height: var(--slotted-control-height-md, 34px);--_height-sm: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_gap: var(--slotted-control-gap-md, 8px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_icon-size-sm: var(--slotted-control-icon-size-sm, 14px);--_radius: var(--slotted-control-radius, 4px);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);box-sizing:border-box;color:var(--_text);font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--_font-size);line-height:var(--slotted-line-height-md, 1.5)}[data-ui=saved-views][data-part=root]{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--slotted-space-3, .375rem);min-inline-size:0;max-inline-size:100%}[data-ui=saved-views]>[data-part=trigger]{display:inline-flex;align-items:center;gap:var(--_gap);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--_padding-inline);border:var(--slotted-control-border-width, 1px) solid var(--slotted-control-border-color, ButtonBorder);border-radius:var(--_radius);background:var(--slotted-control-surface, Canvas);box-shadow:var(--slotted-control-shadow, none);color:var(--_text);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views]>[data-part=trigger]>[data-label]{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=saved-views]>[data-part=trigger]>[data-ui=icon]{margin-inline-end:calc(var(--slotted-space-2, .25rem) * -1);color:var(--_muted);transition:rotate var(--_duration) var(--_easing)}[data-ui=saved-views][data-open]>[data-part=trigger]>[data-ui=icon]{rotate:180deg}[data-ui=saved-views]>[data-part=trigger]:hover:not(:disabled){background:var(--_hover)}[data-ui=saved-views]>[data-part=trigger]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]{display:inline-flex;flex:none;align-items:center;gap:var(--slotted-space-2, .25rem);color:var(--_muted);font-size:inherit;font-weight:var(--slotted-font-weight-regular, 400)}[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]:before{content:\"\";flex:none;inline-size:var(--slotted-space-4, .5rem);block-size:var(--slotted-space-4, .5rem);border-radius:var(--slotted-radius-full, 9999px);background-color:var(--slotted-tone-accent-solid)}[data-ui=saved-views]>[data-part=revert]{display:inline-flex;align-items:center;gap:var(--slotted-space-3, .375rem);box-sizing:border-box;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--slotted-space-4, .5rem);border:var(--slotted-control-border-width, 1px) solid transparent;border-radius:var(--_radius);background:transparent;color:var(--slotted-tone-accent-text, LinkText);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views]>[data-part=revert]:hover:not(:disabled){background:var(--slotted-tone-accent-subtle-hover, ButtonFace)}[data-ui=saved-views]>[data-part=revert]:active:not(:disabled){background:var(--slotted-tone-accent-subtle-active, ButtonFace);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views]>[data-part=trigger]:focus-visible,[data-ui=saved-views]>[data-part=revert]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=saved-views][data-part=panel]{display:grid;grid-template-columns:minmax(0,var(--slotted-saved-views-panel-inline-size, 18rem));gap:var(--slotted-space-4, .5rem);max-inline-size:100%;padding:var(--slotted-space-2, .25rem)}[data-ui=saved-views][data-part=panel]>[data-part=list]{display:grid;gap:var(--slotted-space-1, .125rem);margin:0;padding:0;list-style:none}[data-ui=saved-views][data-part=panel]>[data-part=list]>[data-part=item]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--slotted-space-1, .125rem);margin:0}[data-ui=saved-views][data-part=panel]>[data-part=list]>[data-part=item][data-editing]{grid-template-columns:minmax(0,1fr)}[data-ui=saved-views][data-part=panel] [data-part=apply]{display:grid;grid-template-columns:var(--_icon-size-sm) minmax(0,max-content) auto;justify-content:start;align-content:center;align-items:baseline;column-gap:var(--slotted-space-4, .5rem);box-sizing:border-box;inline-size:100%;min-block-size:var(--_height-sm);margin:0;padding-block:var(--slotted-space-2, .25rem);padding-inline:var(--slotted-space-4, .5rem);border:0;border-radius:var(--_radius);background:transparent;color:var(--_text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-ui=icon]{color:var(--slotted-tone-accent-text);translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4)}[data-ui=saved-views][data-part=panel] [data-part=item][data-current]>[data-part=apply]{font-weight:var(--slotted-font-weight-medium, 500)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-label]{grid-column:2;min-inline-size:0;overflow-wrap:anywhere}[data-ui=saved-views][data-part=panel] [data-part=apply]:hover:not(:disabled),[data-ui=saved-views][data-part=panel] [data-part=actions]:hover:not(:disabled){background:var(--_hover)}[data-ui=saved-views][data-part=panel] [data-part=apply]:active:not(:disabled),[data-ui=saved-views][data-part=panel] [data-part=actions]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-part=default-mark]{display:flex;position:relative;inline-size:var(--_icon-size-sm);block-size:var(--_icon-size-sm);margin-inline-start:calc(var(--slotted-space-2, .25rem) - var(--slotted-space-4, .5rem));translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4);color:var(--_muted)}[data-ui=saved-views][data-part=panel] [data-part=default-mark]>span:not([data-ui=icon]){position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}[data-ui=saved-views][data-part=panel] [data-part=actions]{display:inline-grid;place-items:center;box-sizing:border-box;inline-size:var(--_height-sm);block-size:var(--_height-sm);margin:0;padding:0;border:0;border-radius:var(--_radius);background:transparent;color:var(--_muted);cursor:pointer;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui=saved-views][data-part=panel] [data-part=actions][data-open],[data-ui=saved-views][data-part=panel] [data-part=actions]:hover:not(:disabled){color:var(--_text)}[data-ui=saved-views][data-part=panel] [data-part=apply]:focus-visible,[data-ui=saved-views][data-part=panel] [data-part=actions]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=saved-views][data-part=panel] [data-part=form],[data-ui=saved-views][data-part=panel] [data-part=confirm]{display:grid;gap:var(--slotted-space-4, .5rem);margin:0;padding:var(--slotted-space-4, .5rem);border-radius:var(--_radius);background:var(--slotted-surface-sunken, Canvas)}[data-ui=saved-views][data-part=panel] [data-part=confirm]>p{margin:0;overflow-wrap:anywhere}[data-ui=saved-views][data-part=panel] :is([data-part=form],[data-part=confirm])>[data-buttons]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem)}[data-ui=saved-views][data-part=panel]>[data-part=footer]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem);padding-block-start:var(--slotted-space-4, .5rem);border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-subtle, transparent)}@media(forced-colors:active){[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]:before{forced-color-adjust:none}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlButton, selector: "button[slButton]", inputs: ["disabled", "focusableWhenDisabled", "fullWidth", "loading", "loadingDelay", "messages", "size", "tone", "type", "variant"], exportAs: ["slButton"] }, { kind: "component", type: SlField, selector: "[slField]", inputs: ["size", "labelPlacement", "necessity", "messages", "disabled", "invalid", "required", "readOnly"], exportAs: ["slField"] }, { kind: "directive", type: SlFieldError, selector: "[slFieldError]", exportAs: ["slFieldError"] }, { kind: "component", type: SlFieldLabel, selector: "label[slFieldLabel]", exportAs: ["slFieldLabel"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "component", type: SlMenuItem, selector: "button[slMenuItem], a[slMenuItem], button[slMenuCheckboxItem], button[slMenuRadioItem]", inputs: ["disabled", "textValue", "tone", "shortcut", "closeOnSelect", "value", "checked"], outputs: ["checkedChange", "checkedChangeRequest", "select"], exportAs: ["slMenuItem"] }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }, { kind: "directive", type: SlPopover, selector: "[slPopover]", inputs: ["open", "defaultOpen", "disabled", "size", "width", "side", "align", "mount", "strategy", "messages", "initialFocus", "finalFocus", "arrow", "autoFocus", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "sideOffset", "alignOffset", "collisionPadding", "arrowPadding"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slPopover"] }, { kind: "component", type: SlPopoverContent, selector: "[slPopoverContent]", exportAs: ["slPopoverContent"] }, { kind: "directive", type: SlPopoverLayer, selector: "ng-template[slPopoverLayer]", exportAs: ["slPopoverLayer"] }, { kind: "directive", type: SlPopoverTrigger, selector: "[slPopoverTrigger]", exportAs: ["slPopoverTrigger"] }, { kind: "directive", type: SlSavedViewsPart, selector: "[slSavedViewsPart]", inputs: ["slSavedViewsPart"] }, { kind: "component", type: SlTextField, selector: "[slTextField]", inputs: ["size", "variant", "mono", "clearable", "revealable", "copyable", "messages", "loading"], outputs: ["valueCopy"], exportAs: ["slTextField"] }, { kind: "directive", type: SlTextFieldInput, selector: "input[slTextFieldInput]", inputs: ["value", "defaultValue", "disabled", "readOnly", "invalid", "showCount", "countMax", "revealed", "defaultRevealed", "type"], outputs: ["valueChange", "revealedChange"], exportAs: ["slTextFieldInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
588
|
+
`, isInline: true, styles: ["@layer slotted.components{[data-ui=saved-views]{--_text: var(--slotted-text, CanvasText);--_muted: var(--slotted-text-muted, GrayText);--_hover: var(--slotted-tone-secondary-subtle-hover, ButtonFace);--_active: var(--slotted-tone-secondary-subtle-active, ButtonFace);--_height: var(--slotted-control-height-md, 34px);--_height-sm: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_gap: var(--slotted-control-gap-md, 8px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_icon-size-sm: var(--slotted-control-icon-size-sm, 14px);--_radius: var(--slotted-control-radius, 4px);--_duration: var(--slotted-control-transition-duration);--_easing: var(--slotted-control-transition-easing);box-sizing:border-box;color:var(--_text);font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);font-size:var(--_font-size);line-height:var(--slotted-line-height-md, 1.5)}[data-ui=saved-views][data-part=root]{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--slotted-space-3, .375rem);min-inline-size:0;max-inline-size:100%}[data-ui=saved-views]>[data-part=trigger]{display:inline-flex;align-items:center;gap:var(--_gap);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--_padding-inline);border:var(--slotted-control-border-width, 1px) solid var(--slotted-control-border-color, ButtonBorder);border-radius:var(--_radius);background:var(--slotted-control-surface, Canvas);box-shadow:var(--slotted-control-shadow, none);color:var(--_text);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views]>[data-part=trigger]>[data-label]{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=saved-views]>[data-part=trigger]>[data-ui=icon]{margin-inline-end:calc(var(--slotted-space-2, .25rem) * -1);color:var(--_muted);transition:rotate var(--_duration) var(--_easing)}[data-ui=saved-views][data-open]>[data-part=trigger]>[data-ui=icon]{rotate:180deg}[data-ui=saved-views]>[data-part=trigger]:hover:not(:disabled){background:var(--_hover)}[data-ui=saved-views]>[data-part=trigger]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]{display:inline-flex;flex:none;align-items:center;gap:var(--slotted-space-2, .25rem);color:var(--_muted);font-size:inherit;font-weight:var(--slotted-font-weight-regular, 400)}[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]:before{content:\"\";flex:none;inline-size:var(--slotted-space-4, .5rem);block-size:var(--slotted-space-4, .5rem);border-radius:var(--slotted-radius-full, 9999px);background-color:var(--slotted-tone-accent-solid)}[data-ui=saved-views]>[data-part=revert]{display:inline-flex;align-items:center;gap:var(--slotted-space-3, .375rem);box-sizing:border-box;min-block-size:var(--_height);margin:0;padding-block:0;padding-inline:var(--slotted-space-4, .5rem);border:var(--slotted-control-border-width, 1px) solid transparent;border-radius:var(--_radius);background:transparent;color:var(--slotted-tone-accent-text, LinkText);font:inherit;font-weight:var(--slotted-font-weight-medium, 500);cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views]>[data-part=revert]:hover:not(:disabled){background:var(--slotted-tone-accent-subtle-hover, ButtonFace)}[data-ui=saved-views]>[data-part=revert]:active:not(:disabled){background:var(--slotted-tone-accent-subtle-active, ButtonFace);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views]>[data-part=trigger]:focus-visible,[data-ui=saved-views]>[data-part=revert]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=saved-views][data-part=panel]{display:grid;grid-template-columns:minmax(0,var(--slotted-saved-views-panel-inline-size, 18rem));gap:var(--slotted-space-4, .5rem);max-inline-size:100%;padding:var(--slotted-space-2, .25rem)}[data-ui=saved-views][data-part=panel]>[data-part=list]{display:grid;gap:var(--slotted-space-1, .125rem);margin:0;padding:0;list-style:none}[data-ui=saved-views][data-part=panel]>[data-part=list]>[data-part=item]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--slotted-space-1, .125rem);margin:0}[data-ui=saved-views][data-part=panel]>[data-part=list]>[data-part=item][data-editing]{grid-template-columns:minmax(0,1fr)}[data-ui=saved-views][data-part=panel] [data-part=apply]{display:grid;grid-template-columns:var(--_icon-size-sm) minmax(0,max-content) auto;justify-content:start;align-content:center;align-items:baseline;column-gap:var(--slotted-space-4, .5rem);box-sizing:border-box;inline-size:100%;min-block-size:var(--_height-sm);margin:0;padding-block:var(--slotted-space-2, .25rem);padding-inline:var(--slotted-space-4, .5rem);border:0;border-radius:var(--_radius);background:transparent;color:var(--_text);font:inherit;text-align:start;cursor:pointer;transition:background-color var(--_duration) var(--_easing)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-ui=icon]{color:var(--slotted-tone-accent-text);translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4)}[data-ui=saved-views][data-part=panel] [data-part=item][data-current]>[data-part=apply]{font-weight:var(--slotted-font-weight-medium, 500)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-label]{grid-column:2;min-inline-size:0;overflow-wrap:anywhere}[data-ui=saved-views][data-part=panel] [data-part=apply]:hover:not(:disabled),[data-ui=saved-views][data-part=panel] [data-part=actions]:hover:not(:disabled){background:var(--_hover)}[data-ui=saved-views][data-part=panel] [data-part=apply]:active:not(:disabled),[data-ui=saved-views][data-part=panel] [data-part=actions]:active:not(:disabled){background:var(--_active);transition-duration:var(--slotted-duration-instant)}[data-ui=saved-views][data-part=panel] [data-part=apply]>[data-part=default-mark]{display:flex;position:relative;inline-size:var(--_icon-size-sm);block-size:var(--_icon-size-sm);margin-inline-start:calc(var(--slotted-space-2, .25rem) - var(--slotted-space-4, .5rem));translate:0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4);color:var(--_muted)}[data-ui=saved-views][data-part=panel] [data-part=default-mark]>span:not([data-ui=icon]){position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}[data-ui=saved-views][data-part=panel] [data-part=actions]{display:inline-grid;place-items:center;box-sizing:border-box;inline-size:var(--_height-sm);block-size:var(--_height-sm);margin:0;padding:0;border:0;border-radius:var(--_radius);background:transparent;color:var(--_muted);cursor:pointer;transition:background-color var(--_duration) var(--_easing),color var(--_duration) var(--_easing)}[data-ui=saved-views][data-part=panel] [data-part=actions][data-open],[data-ui=saved-views][data-part=panel] [data-part=actions]:hover:not(:disabled){color:var(--_text)}[data-ui=saved-views][data-part=panel] [data-part=apply]:focus-visible,[data-ui=saved-views][data-part=panel] [data-part=actions]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=saved-views][data-part=panel] [data-part=form],[data-ui=saved-views][data-part=panel] [data-part=confirm]{display:grid;gap:var(--slotted-space-4, .5rem);margin:0;padding:var(--slotted-space-4, .5rem);border-radius:var(--_radius);background:var(--slotted-surface-sunken, Canvas)}[data-ui=saved-views][data-part=panel] [data-part=confirm]>p{margin:0;overflow-wrap:anywhere}[data-ui=saved-views][data-part=panel] :is([data-part=form],[data-part=confirm])>[data-buttons]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem)}[data-ui=saved-views][data-part=panel]>[data-part=footer]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--slotted-space-3, .375rem);padding-block-start:var(--slotted-space-4, .5rem);border-block-start:var(--slotted-border-width-thin, 1px) solid var(--slotted-border-subtle, transparent)}@media(forced-colors:active){[data-ui=saved-views]>[data-part=trigger]>[data-part=modified]:before{forced-color-adjust:none}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlButton, selector: "button[slButton]", inputs: ["disabled", "focusableWhenDisabled", "fullWidth", "justify", "loading", "loadingDelay", "messages", "size", "tone", "type", "variant"], exportAs: ["slButton"] }, { kind: "component", type: SlField, selector: "[slField]", inputs: ["size", "labelPlacement", "necessity", "messages", "disabled", "invalid", "required", "readOnly"], exportAs: ["slField"] }, { kind: "directive", type: SlFieldError, selector: "[slFieldError]", exportAs: ["slFieldError"] }, { kind: "component", type: SlFieldLabel, selector: "label[slFieldLabel]", exportAs: ["slFieldLabel"] }, { kind: "component", type: SlGlyph, selector: "svg[slGlyph]", inputs: ["name", "solid"] }, { kind: "component", type: SlIcon, selector: "[slIcon]", inputs: ["directional", "label", "size", "tone"], exportAs: ["slIcon"] }, { kind: "component", type: SlMenu, selector: "sl-menu", inputs: ["value", "aria-label", "aria-describedby", "open", "align", "side", "size", "mount", "strategy", "sideOffset", "alignOffset", "collisionPadding", "submenuOpenDelay", "submenuCloseDelay", "typeaheadTimeout", "disabled", "loop", "typeahead", "openOnHover", "closeOnSelect", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "loading"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slMenu"] }, { kind: "component", type: SlMenuItem, selector: "button[slMenuItem], a[slMenuItem], button[slMenuCheckboxItem], button[slMenuRadioItem]", inputs: ["disabled", "textValue", "tone", "shortcut", "closeOnSelect", "value", "checked"], outputs: ["checkedChange", "checkedChangeRequest", "select"], exportAs: ["slMenuItem"] }, { kind: "directive", type: SlMenuTrigger, selector: "[slMenuTriggerFor]", inputs: ["slMenuTriggerFor"], exportAs: ["slMenuTrigger"] }, { kind: "directive", type: SlPopover, selector: "[slPopover]", inputs: ["open", "defaultOpen", "disabled", "size", "width", "side", "align", "mount", "strategy", "messages", "initialFocus", "finalFocus", "arrow", "autoFocus", "closeOnEscape", "closeOnOutsidePress", "flip", "shift", "hideWhenDetached", "portal", "sideOffset", "alignOffset", "collisionPadding", "arrowPadding"], outputs: ["openChange", "openChangeRequest"], exportAs: ["slPopover"] }, { kind: "component", type: SlPopoverContent, selector: "[slPopoverContent]", exportAs: ["slPopoverContent"] }, { kind: "directive", type: SlPopoverLayer, selector: "ng-template[slPopoverLayer]", exportAs: ["slPopoverLayer"] }, { kind: "directive", type: SlPopoverTrigger, selector: "[slPopoverTrigger]", exportAs: ["slPopoverTrigger"] }, { kind: "directive", type: SlSavedViewsPart, selector: "[slSavedViewsPart]", inputs: ["slSavedViewsPart"] }, { kind: "component", type: SlTextField, selector: "[slTextField]", inputs: ["size", "variant", "mono", "clearable", "revealable", "copyable", "messages", "loading"], outputs: ["valueCopy"], exportAs: ["slTextField"] }, { kind: "directive", type: SlTextFieldInput, selector: "input[slTextFieldInput]", inputs: ["value", "defaultValue", "disabled", "readOnly", "invalid", "showCount", "countMax", "revealed", "defaultRevealed", "type"], outputs: ["valueChange", "revealedChange"], exportAs: ["slTextFieldInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
589
589
|
}
|
|
590
590
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSavedViews, decorators: [{
|
|
591
591
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slotted-angular-saved-views.mjs","sources":["../../saved-views/src/saved-views-defaults.ts","../../saved-views/src/saved-views.ts","../../saved-views/src/persisted-saved-views.ts","../../saved-views/src/slotted-angular-saved-views.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { GridView, SavedViewsState } from '@slotted/core/grid';\nimport type { ChangeRequest } from '@slotted/core/state';\n\n/** What the reader did. One state object answers seven different presses. */\nexport type SavedViewsAction =\n 'apply' | 'save' | 'create' | 'rename' | 'delete' | 'default' | 'revert';\n\n/** Why the views moved. `submit` is a form; `remove` a confirmed delete. */\nexport type SavedViewsReason = 'pointer' | 'keyboard' | 'submit' | 'remove' | 'programmatic';\n\n/** Why the layer opened or closed: the popover's own reasons. */\nexport type SavedViewsOpenReason = Extract<\n ChangeRequest<boolean>['reason'],\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'dismiss' | 'programmatic'\n>;\n\n/**\n * The request every change carries: the state asked for, the one it\n * replaces, the reason, what the reader did, the originating event, and a\n * refusal that stops the change before anything commits.\n */\nexport interface SavedViewsRequest {\n readonly value: SavedViewsState;\n readonly previous: SavedViewsState;\n readonly reason: SavedViewsReason;\n readonly action: SavedViewsAction;\n readonly source?: Event | undefined;\n readonly cancelled: boolean;\n /** Refuses the request. Nothing commits and no view is applied. */\n cancel(): void;\n}\n\n/** What `viewApply` emits: the view to write into the grid, and the request that caused it. */\nexport interface SavedViewApply {\n readonly view: GridView;\n readonly request: SavedViewsRequest;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SlSavedViewsIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-saved-views-${this.count}`;\n }\n}\n\nlet counter = 0;\n\n/** `crypto.randomUUID()` where the platform has it, and a counter otherwise. */\nexport function newSavedViewId(): string {\n const crypto = (globalThis as { crypto?: { randomUUID?: () => string } }).crypto;\n if (typeof crypto?.randomUUID === 'function') return crypto.randomUUID();\n counter += 1;\n return `view-${Date.now().toString(36)}-${counter}`;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlField, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlMenu, SlMenuItem, SlMenuTrigger } from '@slotted/angular/menu';\nimport type { MenuSelectEvent } from '@slotted/angular/menu';\nimport {\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n} from '@slotted/angular/popover';\nimport { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';\nimport {\n BUILT_IN_VIEW_ID,\n emptySavedViews,\n isViewNameTaken,\n parseGridView,\n sameSavedView,\n savedViewText,\n serializeSavedViews,\n withActiveView,\n withDefaultView,\n withViewCreated,\n withViewDeleted,\n withViewRenamed,\n withViewSaved,\n type GridColumn,\n type GridView,\n type SavedView,\n type SavedViewsState,\n} from '@slotted/core/grid';\nimport {\n type PartialMessages,\n savedViewsMessages,\n type SavedViewsMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport {\n newSavedViewId,\n SlSavedViewsIdFactory,\n type SavedViewApply,\n type SavedViewsAction,\n type SavedViewsOpenReason,\n type SavedViewsReason,\n type SavedViewsRequest,\n} from './saved-views-defaults';\n\n/** What replaces a row, or opens above the footer. */\ntype Editing =\n { kind: 'create' } | { kind: 'rename'; id: string } | { kind: 'delete'; id: string } | null;\n\n/** Where focus goes after the render a change causes. */\ntype FocusTarget =\n | { id: string; part: 'apply' | 'actions' | 'input' | 'cancel' }\n | { id: null; part: 'input' | 'save-as' | 'trigger' };\n\n/** One row of the list: the built-in view has no id and no saved view. */\ninterface Row {\n readonly id: string | null;\n readonly key: string;\n readonly name: string;\n readonly view: SavedView | null;\n readonly current: boolean;\n readonly isDefault: boolean;\n}\n\n/**\n * `slMenuTriggerFor` binds `[attr.data-part]` and resolves it to `null` on a\n * trigger that is neither a bar's item nor a submenu's; a host binding of\n * `null` removes the part the template wrote. The part is written back after\n * the first change detection, where the constant binding is not applied again.\n */\n@Directive({ selector: '[slSavedViewsPart]', standalone: true })\nexport class SlSavedViewsPart {\n readonly slSavedViewsPart = input.required<string>();\n\n constructor() {\n const element: HTMLElement = inject(ElementRef).nativeElement;\n afterNextRender(() => element.setAttribute('data-part', this.slSavedViewsPart()));\n }\n}\n\n/**\n * The named views of a grid, and the one in use: a trigger naming it, a mark\n * and a revert while the grid differs from it, and a popover listing every\n * view with its actions. The family applies nothing to a grid — it asks with\n * `stateChangeRequest` and hands the consumer the view to write through\n * `viewApply`.\n */\n@Component({\n selector: 'sl-saved-views',\n standalone: true,\n exportAs: 'slSavedViews',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrl: '../../../styles/src/saved-views/saved-views.css',\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlField,\n SlFieldError,\n SlFieldLabel,\n SlGlyph,\n SlIcon,\n SlMenu,\n SlMenuItem,\n SlMenuTrigger,\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n SlSavedViewsPart,\n SlTextField,\n SlTextFieldInput,\n ],\n host: {\n 'data-ui': 'saved-views',\n 'data-part': 'root',\n '[attr.role]': 'role',\n '[attr.aria-label]': 'resolvedLabel()',\n '[attr.data-modified]': 'modified() ? \"\" : null',\n '[attr.data-open]': 'isOpen() ? \"\" : null',\n },\n template: `\n <ng-container\n slPopover\n initialFocus=\"[aria-current='true']\"\n [open]=\"isOpen()\"\n (openChangeRequest)=\"onLayerRequest($event)\"\n >\n <button\n #trigger\n slPopoverTrigger\n type=\"button\"\n data-part=\"trigger\"\n [attr.title]=\"activeName()\"\n >\n <span data-label>{{ activeName() }}</span>\n @if (modified()) {\n <span data-part=\"modified\">{{ t('modified') }}</span>\n }\n <span slIcon size=\"md\"><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n\n <ng-template slPopoverLayer>\n <div slPopoverContent [attr.aria-label]=\"resolvedLabel()\">\n <!-- The family's identifier is on its own element rather than on\n the popover's: slPopoverContent names its own part. -->\n <div data-ui=\"saved-views\" data-part=\"panel\" [id]=\"panelId\">\n <ul data-part=\"list\" role=\"list\">\n @for (row of rows(); track row.key) {\n <li\n data-part=\"item\"\n [attr.data-view]=\"row.key\"\n [attr.data-current]=\"row.current ? '' : null\"\n [attr.data-default]=\"row.isDefault ? '' : null\"\n [attr.data-built-in]=\"row.view === null ? '' : null\"\n [attr.data-editing]=\"editingKind(row) !== null ? '' : null\"\n >\n @switch (editingKind(row)) {\n @case ('rename') {\n <ng-container\n [ngTemplateOutlet]=\"nameForm\"\n [ngTemplateOutletContext]=\"{ kind: 'rename', name: row.name }\"\n />\n }\n @case ('delete') {\n <div\n data-part=\"confirm\"\n role=\"group\"\n [attr.aria-labelledby]=\"panelId + '-confirm-' + row.key\"\n >\n <p [id]=\"panelId + '-confirm-' + row.key\">\n {{ t('confirmDelete', { name: row.name }) }}\n </p>\n <div data-buttons>\n <button\n slButton\n data-cancel\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"cancelEditing()\"\n >\n {{ t('cancel') }}\n </button>\n <button\n slButton\n size=\"sm\"\n tone=\"danger\"\n (click)=\"confirmDelete(row.key, $event)\"\n >\n {{ t('delete') }}\n </button>\n </div>\n </div>\n }\n @default {\n <button\n data-part=\"apply\"\n type=\"button\"\n [attr.aria-current]=\"row.current ? 'true' : null\"\n (click)=\"apply(row.id, pressReason($event), $event)\"\n >\n @if (row.current) {\n <span slIcon size=\"sm\"><svg slGlyph name=\"check\"></svg></span>\n }\n <span data-label>{{ row.name }}</span>\n @if (row.isDefault) {\n <span data-part=\"default-mark\"\n ><span slIcon size=\"sm\"><svg slGlyph name=\"pin\"></svg></span\n ><span>{{ t('isDefault') }}</span></span\n >\n }\n </button>\n <button\n type=\"button\"\n data-part=\"actions\"\n slSavedViewsPart=\"actions\"\n [slMenuTriggerFor]=\"menu\"\n [attr.aria-label]=\"t('actions', { name: row.name })\"\n >\n <span slIcon size=\"md\"><svg slGlyph name=\"ellipsis\"></svg></span>\n </button>\n <sl-menu #menu>\n @if (row.view; as view) {\n <button slMenuItem (select)=\"startRename(view)\">\n {{ t('rename') }}\n </button>\n }\n <button\n slMenuItem\n [disabled]=\"row.isDefault\"\n (select)=\"setDefault(row.id, $event)\"\n >\n {{ t('setDefault') }}\n </button>\n @if (row.view; as view) {\n <button slMenuItem tone=\"danger\" (select)=\"startDelete(view)\">\n {{ t('delete') }}\n </button>\n }\n </sl-menu>\n }\n }\n </li>\n }\n </ul>\n @if (editing()?.kind === 'create') {\n <ng-container\n [ngTemplateOutlet]=\"nameForm\"\n [ngTemplateOutletContext]=\"{ kind: 'create', name: '' }\"\n />\n }\n <div data-part=\"footer\">\n <button\n slButton\n data-save-as\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"startCreate()\"\n >\n {{ t('saveAs') }}\n </button>\n <button slButton size=\"sm\" [disabled]=\"!canSave()\" (click)=\"save($event)\">\n {{ t('save') }}\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n\n @if (modified()) {\n <button data-part=\"revert\" type=\"button\" (click)=\"revert($event)\">\n <!-- An arrow that turns back turns the other way in a right-to-left document. -->\n <span slIcon size=\"sm\" directional><svg slGlyph name=\"rotate-ccw\"></svg></span>\n {{ t('revert') }}\n </button>\n }\n\n <ng-template #nameForm let-kind=\"kind\" let-name=\"name\">\n <form\n data-part=\"form\"\n novalidate\n [attr.aria-label]=\"kind === 'create' ? t('saveAs') : t('renameView', { name: name })\"\n (submit)=\"submit($event)\"\n >\n <div slField size=\"sm\" [invalid]=\"error() !== null\">\n <label slFieldLabel>{{ t('name') }}</label>\n <div slTextField size=\"sm\">\n <input\n slTextFieldInput\n autocomplete=\"off\"\n [value]=\"draft()\"\n (valueChange)=\"onDraft($event.value)\"\n />\n </div>\n @if (error(); as reason) {\n <span slFieldError>{{ reason === 'empty' ? t('empty') : t('duplicate') }}</span>\n }\n </div>\n <div data-buttons>\n <button\n slButton\n data-cancel\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"cancelEditing()\"\n >\n {{ t('cancel') }}\n </button>\n <button slButton type=\"submit\" size=\"sm\">\n {{ kind === 'create' ? t('create') : t('rename') }}\n </button>\n </div>\n </form>\n </ng-template>\n `,\n})\nexport class SlSavedViews {\n /** The view the grid shows now. */\n readonly current = input.required<GridView>();\n /** The built-in view: the application's defaults. */\n readonly builtIn = input.required<GridView>();\n /** The model, so a view is serialized and compared against the columns it names. */\n readonly columns = input<readonly GridColumn<never>[] | undefined>(undefined);\n /** The views. Two-way, so a template may bind it directly; cancel the request to hold it. */\n readonly state = model<SavedViewsState | undefined>(undefined);\n /** The views an unbound instance starts from. */\n readonly defaultState = input<SavedViewsState | undefined>(undefined);\n /** Whether the layer is open. Two-way. */\n readonly open = model<boolean | undefined>(undefined);\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * group's and the panel's name (`label`), the controls, the forms and the\n * announcements. A host `aria-label` names both instead.\n */\n readonly messages = input<PartialMessages<SavedViewsMessages> | undefined>(undefined);\n\n /** Every change to the views, carrying the action and the reason; cancellable. */\n readonly stateChangeRequest = output<SavedViewsRequest>();\n /** One output for one transition of the layer. */\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n /** After apply and revert: the view to write into the grid. */\n readonly viewApply = output<SavedViewApply>();\n\n private readonly injector = inject(Injector);\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n protected readonly role = inject(new HostAttributeToken('role'), { optional: true }) ?? 'group';\n protected readonly writtenLabel = inject(new HostAttributeToken('aria-label'), {\n optional: true,\n });\n readonly panelId = `${inject(SlSavedViewsIdFactory).next()}-panel`;\n\n private readonly triggerRef = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n\n protected readonly editing = signal<Editing>(null);\n protected readonly draft = signal('');\n protected readonly error = signal<'empty' | 'duplicate' | null>(null);\n\n /** The family's words in the language in force, with this control's `messages` laid over them. */\n readonly t = injectMessages(savedViewsMessages, this.messages);\n readonly resolvedLabel = computed(() => this.writtenLabel ?? this.t('label'));\n readonly resolvedState = computed<SavedViewsState>(\n () => this.state() ?? this.defaultState() ?? emptySavedViews(),\n );\n readonly isOpen = computed(() => this.open() ?? this.defaultOpen());\n readonly active = computed(() => {\n const state = this.resolvedState();\n return state.views.find((view) => view.id === state.activeId) ?? null;\n });\n readonly activeView = computed<GridView>(() => {\n const active = this.active();\n return active ? parseGridView(active.view, this.columns()) : this.builtIn();\n });\n readonly modified = computed(\n () => !sameSavedView(this.current(), this.activeView(), this.columns()),\n );\n readonly activeName = computed(() => this.active()?.name ?? this.t('builtIn'));\n readonly canSave = computed(() => this.active() !== null && this.modified());\n readonly rows = computed<readonly Row[]>(() => {\n const state = this.resolvedState();\n return [\n {\n id: null,\n key: BUILT_IN_VIEW_ID,\n name: this.t('builtIn'),\n view: null,\n current: state.activeId === null,\n isDefault: state.defaultId === null,\n },\n ...state.views.map((view) => ({\n id: view.id,\n key: view.id,\n name: view.name,\n view,\n current: state.activeId === view.id,\n isDefault: state.defaultId === view.id,\n })),\n ];\n });\n\n /** A click the keyboard produced has no pointer detail. */\n protected pressReason(event: MouseEvent): 'pointer' | 'keyboard' {\n return event.detail === 0 ? 'keyboard' : 'pointer';\n }\n\n protected editingKind(row: Row): 'rename' | 'delete' | null {\n const editing = this.editing();\n if (editing === null || editing.kind === 'create' || editing.id !== row.id) return null;\n return editing.kind;\n }\n\n /** Opens the layer, carrying `programmatic`. */\n show() {\n this.setOpen(true, 'programmatic');\n }\n\n /** Closes the layer, carrying `programmatic`. */\n hide() {\n this.setOpen(false, 'programmatic');\n }\n\n /** Moves focus to the trigger. */\n focus() {\n this.triggerRef().nativeElement.focus();\n }\n\n /** Applies a view by id — `null` is the built-in view — carrying the reason. */\n apply(id: string | null, reason: SavedViewsReason = 'programmatic', source?: Event) {\n const state = this.resolvedState();\n const target = id === null ? null : (state.views.find((view) => view.id === id) ?? null);\n if (id !== null && target === null) return;\n const request = this.request(withActiveView(state, id), 'apply', reason, source);\n if (request === null) return;\n const view = target ? parseGridView(target.view, this.columns()) : this.builtIn();\n this.viewApply.emit({ view, request });\n this.announce(this.t('applied', { name: target?.name ?? this.t('builtIn') }));\n this.setOpen(\n false,\n reason === 'keyboard' || reason === 'pointer' ? reason : 'programmatic',\n source,\n );\n }\n\n protected revert(event: MouseEvent) {\n const request = this.request(this.resolvedState(), 'revert', this.pressReason(event), event);\n if (request === null) return;\n this.viewApply.emit({ view: this.activeView(), request });\n this.announce(this.t('applied', { name: this.activeName() }));\n this.focusAfterRender({ id: null, part: 'trigger' });\n }\n\n protected save(event: MouseEvent) {\n const active = this.active();\n if (active === null || !this.modified()) return;\n const reason = this.pressReason(event);\n const next = withViewSaved(\n this.resolvedState(),\n active.id,\n savedViewText(this.current(), this.columns()),\n );\n if (this.request(next, 'save', reason, event) === null) return;\n this.announce(this.t('saved', { name: active.name }));\n this.setOpen(false, reason, event);\n }\n\n protected setDefault(id: string | null, event: MenuSelectEvent) {\n const state = this.resolvedState();\n const request = this.request(withDefaultView(state, id), 'default', event.reason, event.source);\n if (request === null) return;\n const name = state.views.find((view) => view.id === id)?.name ?? this.t('builtIn');\n this.announce(this.t('defaultChanged', { name }));\n }\n\n protected startCreate() {\n this.editing.set({ kind: 'create' });\n this.draft.set('');\n this.error.set(null);\n this.focusAfterRender({ id: null, part: 'input' });\n }\n\n protected startRename(view: SavedView) {\n this.editing.set({ kind: 'rename', id: view.id });\n this.draft.set(view.name);\n this.error.set(null);\n this.focusAfterRender({ id: view.id, part: 'input' });\n }\n\n protected startDelete(view: SavedView) {\n this.editing.set({ kind: 'delete', id: view.id });\n this.error.set(null);\n this.focusAfterRender({ id: view.id, part: 'cancel' });\n }\n\n /** Cancelling returns focus to the control that opened the form. */\n protected cancelEditing() {\n const was = this.editing();\n this.closeForms();\n if (was === null) return;\n this.focusAfterRender(\n was.kind === 'create' ? { id: null, part: 'save-as' } : { id: was.id, part: 'actions' },\n );\n }\n\n protected onDraft(value: string | undefined) {\n this.draft.set(value ?? '');\n this.error.set(null);\n }\n\n protected submit(event: Event) {\n event.preventDefault();\n const editing = this.editing();\n if (editing === null || editing.kind === 'delete') return;\n const state = this.resolvedState();\n const name = this.draft().trim();\n const except = editing.kind === 'rename' ? editing.id : null;\n const builtIn = this.t('builtIn').trim().toLocaleLowerCase();\n if (name === '') this.error.set('empty');\n else if (isViewNameTaken(state, name, except) || name.toLocaleLowerCase() === builtIn) {\n this.error.set('duplicate');\n }\n if (this.error() !== null) {\n this.focusAfterRender({ id: except, part: 'input' } as FocusTarget);\n return;\n }\n if (editing.kind === 'create') {\n const id = newSavedViewId();\n const next = withViewCreated(state, name, savedViewText(this.current(), this.columns()), id);\n if (this.request(next, 'create', 'submit', event) === null) return;\n this.announce(this.t('saved', { name }));\n this.closeForms();\n this.focusAfterRender({ id, part: 'apply' });\n return;\n }\n if (\n this.request(withViewRenamed(state, editing.id, name), 'rename', 'submit', event) === null\n ) {\n return;\n }\n this.announce(this.t('renamed', { name }));\n this.closeForms();\n this.focusAfterRender({ id: editing.id, part: 'apply' });\n }\n\n protected confirmDelete(id: string, event: MouseEvent) {\n const state = this.resolvedState();\n const index = state.views.findIndex((view) => view.id === id);\n const view = state.views[index];\n if (view === undefined) return;\n if (this.request(withViewDeleted(state, id), 'delete', 'remove', event) === null) return;\n this.announce(this.t('deleted', { name: view.name }));\n this.closeForms();\n this.focusAfterRender({ id: state.views[index - 1]?.id ?? BUILT_IN_VIEW_ID, part: 'apply' });\n }\n\n /**\n * The dismissable layer asks in the capture phase. The popover's own move is\n * always refused here and replayed as this family's request, so the layer\n * follows one open state; a form open inside is cancelled first and the\n * close is refused.\n */\n protected onLayerRequest(request: ChangeRequest<boolean>) {\n request.cancel();\n if (!request.value && request.reason === 'escape' && this.editing() !== null) {\n this.cancelEditing();\n return;\n }\n this.setOpen(\n request.value,\n request.reason as SavedViewsOpenReason,\n request.source as Event | undefined,\n );\n }\n\n private setOpen(next: boolean, reason: SavedViewsOpenReason, source?: Event) {\n if (next === this.isOpen()) return;\n let cancelled = false;\n const request: ChangeRequest<boolean> = {\n value: next,\n previous: !next,\n reason,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n this.openChangeRequest.emit(request);\n if (cancelled) return;\n this.open.set(next);\n if (!next) this.closeForms();\n }\n\n /** Asks for a new state. Not emitted when nothing would change; refused when cancelled. */\n private request(\n next: SavedViewsState,\n action: SavedViewsAction,\n reason: SavedViewsReason,\n source?: Event,\n ): SavedViewsRequest | null {\n const previous = this.resolvedState();\n let cancelled = false;\n const request: SavedViewsRequest = {\n value: next,\n previous,\n reason,\n action,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n if (serializeSavedViews(next) === serializeSavedViews(previous)) return request;\n this.stateChangeRequest.emit(request);\n if (cancelled) return null;\n this.state.set(next);\n return request;\n }\n\n private closeForms() {\n this.editing.set(null);\n this.draft.set('');\n this.error.set(null);\n }\n\n private announce(text: string) {\n getLiveAnnouncer(this.host.ownerDocument).announce(text);\n }\n\n private focusAfterRender(target: FocusTarget) {\n afterNextRender(\n () => {\n if (target.part === 'trigger') {\n this.focus();\n return;\n }\n const panel = this.host.ownerDocument.getElementById(this.panelId);\n if (panel === null) return;\n const scope =\n target.id === null\n ? panel\n : ([...panel.querySelectorAll<HTMLElement>('[data-part=\"item\"]')].find(\n (item) => item.dataset['view'] === target.id,\n ) ?? null);\n const selector = {\n apply: '[data-part=\"apply\"]',\n actions: '[data-part=\"actions\"]',\n input: target.id === null ? ':scope > [data-part=\"form\"] input' : 'input',\n cancel: '[data-cancel]',\n 'save-as': '[data-save-as]',\n }[target.part];\n scope?.querySelector<HTMLElement>(selector)?.focus();\n },\n { injector: this.injector },\n );\n }\n}\n","import { effect, signal, untracked, type Injector, type WritableSignal } from '@angular/core';\nimport {\n parseGridView,\n parseSavedViews,\n serializeSavedViews,\n withActiveView,\n type GridColumn,\n type GridView,\n type GridViewStorage,\n type SavedViewsState,\n} from '@slotted/core/grid';\n\nexport interface PersistedSavedViewsOptions {\n /** The entry the views are kept under. */\n readonly key: string;\n /** Default `window.localStorage`; `null` keeps the views in memory only. */\n readonly storage?: GridViewStorage | null | undefined;\n /** The model, so the default view a visit opens on is parsed against it. */\n readonly columns?: readonly GridColumn<never>[] | undefined;\n /** Required outside an injection context. */\n readonly injector?: Injector | undefined;\n}\n\nexport interface PersistedSavedViews {\n /** Bind with `[(state)]`. */\n readonly state: WritableSignal<SavedViewsState>;\n /**\n * The default view this visit opened on, when the store held no view in use\n * and a default: the state already names it as active, and the grid still\n * has to be given it once. `null` otherwise.\n */\n readonly openedDefault: GridView | null;\n}\n\nfunction defaultStorage(): GridViewStorage | null {\n try {\n return typeof window === 'undefined' ? null : window.localStorage;\n } catch {\n return null;\n }\n}\n\n/**\n * A reader's saved views, kept across visits: read once from the store with\n * `parseSavedViews` — which is total, so a malformed entry is no views — and\n * written with `serializeSavedViews` after every change. A store that holds\n * no view in use and a default opens the visit on the default. The store is\n * reached inside `try` both ways, as `persistedGridView` reaches it.\n */\nexport function persistedSavedViews({\n key,\n storage,\n columns,\n injector,\n}: PersistedSavedViewsOptions): PersistedSavedViews {\n const store = storage === undefined ? defaultStorage() : storage;\n let text: string | null;\n try {\n text = store?.getItem(key) ?? null;\n } catch {\n text = null;\n }\n let initial = parseSavedViews(text);\n let openedDefault: GridView | null = null;\n if (initial.activeId === null && initial.defaultId !== null) {\n const opened = initial.views.find((view) => view.id === initial.defaultId);\n initial = withActiveView(initial, initial.defaultId);\n openedDefault = opened ? parseGridView(opened.view, columns) : null;\n }\n const state = signal<SavedViewsState>(initial);\n\n /* The first run is the read; every run after is a change to write. */\n let settled = false;\n effect(\n () => {\n const current = state();\n if (!settled) {\n settled = true;\n return;\n }\n untracked(() => {\n if (!store) return;\n try {\n store.setItem(key, serializeSavedViews(current));\n } catch {\n /* The store refused; the views stay in memory. */\n }\n });\n },\n injector ? { injector } : undefined,\n );\n\n return { state, openedDefault };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slotted-angular-saved-views.mjs","sources":["../../saved-views/src/saved-views-defaults.ts","../../saved-views/src/saved-views.ts","../../saved-views/src/persisted-saved-views.ts","../../saved-views/src/slotted-angular-saved-views.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { GridView, SavedViewsState } from '@slotted/core/grid';\nimport type { ChangeRequest } from '@slotted/core/state';\n\n/** What the reader did. One state object answers seven different presses. */\nexport type SavedViewsAction =\n 'apply' | 'save' | 'create' | 'rename' | 'delete' | 'default' | 'revert';\n\n/** Why the views moved. `submit` is a form; `remove` a confirmed delete. */\nexport type SavedViewsReason = 'pointer' | 'keyboard' | 'submit' | 'remove' | 'programmatic';\n\n/** Why the layer opened or closed: the popover's own reasons. */\nexport type SavedViewsOpenReason = Extract<\n ChangeRequest<boolean>['reason'],\n 'pointer' | 'keyboard' | 'escape' | 'outsidePress' | 'dismiss' | 'programmatic'\n>;\n\n/**\n * The request every change carries: the state asked for, the one it\n * replaces, the reason, what the reader did, the originating event, and a\n * refusal that stops the change before anything commits.\n */\nexport interface SavedViewsRequest {\n readonly value: SavedViewsState;\n readonly previous: SavedViewsState;\n readonly reason: SavedViewsReason;\n readonly action: SavedViewsAction;\n readonly source?: Event | undefined;\n readonly cancelled: boolean;\n /** Refuses the request. Nothing commits and no view is applied. */\n cancel(): void;\n}\n\n/** What `viewApply` emits: the view to write into the grid, and the request that caused it. */\nexport interface SavedViewApply {\n readonly view: GridView;\n readonly request: SavedViewsRequest;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SlSavedViewsIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-saved-views-${this.count}`;\n }\n}\n\nlet counter = 0;\n\n/** `crypto.randomUUID()` where the platform has it, and a counter otherwise. */\nexport function newSavedViewId(): string {\n const crypto = (globalThis as { crypto?: { randomUUID?: () => string } }).crypto;\n if (typeof crypto?.randomUUID === 'function') return crypto.randomUUID();\n counter += 1;\n return `view-${Date.now().toString(36)}-${counter}`;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlField, SlFieldError, SlFieldLabel } from '@slotted/angular/field';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlMenu, SlMenuItem, SlMenuTrigger } from '@slotted/angular/menu';\nimport type { MenuSelectEvent } from '@slotted/angular/menu';\nimport {\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n} from '@slotted/angular/popover';\nimport { SlTextField, SlTextFieldInput } from '@slotted/angular/text-field';\nimport {\n BUILT_IN_VIEW_ID,\n emptySavedViews,\n isViewNameTaken,\n parseGridView,\n sameSavedView,\n savedViewText,\n serializeSavedViews,\n withActiveView,\n withDefaultView,\n withViewCreated,\n withViewDeleted,\n withViewRenamed,\n withViewSaved,\n type GridColumn,\n type GridView,\n type SavedView,\n type SavedViewsState,\n} from '@slotted/core/grid';\nimport {\n type PartialMessages,\n savedViewsMessages,\n type SavedViewsMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport {\n newSavedViewId,\n SlSavedViewsIdFactory,\n type SavedViewApply,\n type SavedViewsAction,\n type SavedViewsOpenReason,\n type SavedViewsReason,\n type SavedViewsRequest,\n} from './saved-views-defaults';\n\n/** What replaces a row, or opens above the footer. */\ntype Editing =\n { kind: 'create' } | { kind: 'rename'; id: string } | { kind: 'delete'; id: string } | null;\n\n/** Where focus goes after the render a change causes. */\ntype FocusTarget =\n | { id: string; part: 'apply' | 'actions' | 'input' | 'cancel' }\n | { id: null; part: 'input' | 'save-as' | 'trigger' };\n\n/** One row of the list: the built-in view has no id and no saved view. */\ninterface Row {\n readonly id: string | null;\n readonly key: string;\n readonly name: string;\n readonly view: SavedView | null;\n readonly current: boolean;\n readonly isDefault: boolean;\n}\n\n/**\n * `slMenuTriggerFor` binds `[attr.data-part]` and resolves it to `null` on a\n * trigger that is neither a bar's item nor a submenu's; a host binding of\n * `null` removes the part the template wrote. The part is written back after\n * the first change detection, where the constant binding is not applied again.\n */\n@Directive({ selector: '[slSavedViewsPart]', standalone: true })\nexport class SlSavedViewsPart {\n readonly slSavedViewsPart = input.required<string>();\n\n constructor() {\n const element: HTMLElement = inject(ElementRef).nativeElement;\n afterNextRender(() => element.setAttribute('data-part', this.slSavedViewsPart()));\n }\n}\n\n/**\n * The named views of a grid, and the one in use: a trigger naming it, a mark\n * and a revert while the grid differs from it, and a popover listing every\n * view with its actions. The family applies nothing to a grid — it asks with\n * `stateChangeRequest` and hands the consumer the view to write through\n * `viewApply`.\n */\n@Component({\n selector: 'sl-saved-views',\n standalone: true,\n exportAs: 'slSavedViews',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrl: '../../../styles/src/saved-views/saved-views.css',\n imports: [\n NgTemplateOutlet,\n SlButton,\n SlField,\n SlFieldError,\n SlFieldLabel,\n SlGlyph,\n SlIcon,\n SlMenu,\n SlMenuItem,\n SlMenuTrigger,\n SlPopover,\n SlPopoverContent,\n SlPopoverLayer,\n SlPopoverTrigger,\n SlSavedViewsPart,\n SlTextField,\n SlTextFieldInput,\n ],\n host: {\n 'data-ui': 'saved-views',\n 'data-part': 'root',\n '[attr.role]': 'role',\n '[attr.aria-label]': 'resolvedLabel()',\n '[attr.data-modified]': 'modified() ? \"\" : null',\n '[attr.data-open]': 'isOpen() ? \"\" : null',\n },\n template: `\n <ng-container\n slPopover\n initialFocus=\"[aria-current='true']\"\n [open]=\"isOpen()\"\n (openChangeRequest)=\"onLayerRequest($event)\"\n >\n <button\n #trigger\n slPopoverTrigger\n type=\"button\"\n data-part=\"trigger\"\n [attr.title]=\"activeName()\"\n >\n <span data-label>{{ activeName() }}</span>\n @if (modified()) {\n <span data-part=\"modified\">{{ t('modified') }}</span>\n }\n <span slIcon size=\"md\"><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n\n <ng-template slPopoverLayer>\n <div slPopoverContent [attr.aria-label]=\"resolvedLabel()\">\n <!-- The family's identifier is on its own element rather than on\n the popover's: slPopoverContent names its own part. -->\n <div data-ui=\"saved-views\" data-part=\"panel\" [id]=\"panelId\">\n <ul data-part=\"list\" role=\"list\">\n @for (row of rows(); track row.key) {\n <li\n data-part=\"item\"\n [attr.data-view]=\"row.key\"\n [attr.data-current]=\"row.current ? '' : null\"\n [attr.data-default]=\"row.isDefault ? '' : null\"\n [attr.data-built-in]=\"row.view === null ? '' : null\"\n [attr.data-editing]=\"editingKind(row) !== null ? '' : null\"\n >\n @switch (editingKind(row)) {\n @case ('rename') {\n <ng-container\n [ngTemplateOutlet]=\"nameForm\"\n [ngTemplateOutletContext]=\"{ kind: 'rename', name: row.name }\"\n />\n }\n @case ('delete') {\n <div\n data-part=\"confirm\"\n role=\"group\"\n [attr.aria-labelledby]=\"panelId + '-confirm-' + row.key\"\n >\n <p [id]=\"panelId + '-confirm-' + row.key\">\n {{ t('confirmDelete', { name: row.name }) }}\n </p>\n <div data-buttons>\n <button\n slButton\n data-cancel\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"cancelEditing()\"\n >\n {{ t('cancel') }}\n </button>\n <button\n slButton\n size=\"sm\"\n tone=\"danger\"\n (click)=\"confirmDelete(row.key, $event)\"\n >\n {{ t('delete') }}\n </button>\n </div>\n </div>\n }\n @default {\n <button\n data-part=\"apply\"\n type=\"button\"\n [attr.aria-current]=\"row.current ? 'true' : null\"\n (click)=\"apply(row.id, pressReason($event), $event)\"\n >\n @if (row.current) {\n <span slIcon size=\"sm\"><svg slGlyph name=\"check\"></svg></span>\n }\n <span data-label>{{ row.name }}</span>\n @if (row.isDefault) {\n <span data-part=\"default-mark\"\n ><span slIcon size=\"sm\"><svg slGlyph name=\"pin\"></svg></span\n ><span>{{ t('isDefault') }}</span></span\n >\n }\n </button>\n <button\n type=\"button\"\n data-part=\"actions\"\n slSavedViewsPart=\"actions\"\n [slMenuTriggerFor]=\"menu\"\n [attr.aria-label]=\"t('actions', { name: row.name })\"\n >\n <span slIcon size=\"md\"><svg slGlyph name=\"ellipsis\"></svg></span>\n </button>\n <sl-menu #menu>\n @if (row.view; as view) {\n <button slMenuItem (select)=\"startRename(view)\">\n {{ t('rename') }}\n </button>\n }\n <button\n slMenuItem\n [disabled]=\"row.isDefault\"\n (select)=\"setDefault(row.id, $event)\"\n >\n {{ t('setDefault') }}\n </button>\n @if (row.view; as view) {\n <button slMenuItem tone=\"danger\" (select)=\"startDelete(view)\">\n {{ t('delete') }}\n </button>\n }\n </sl-menu>\n }\n }\n </li>\n }\n </ul>\n @if (editing()?.kind === 'create') {\n <ng-container\n [ngTemplateOutlet]=\"nameForm\"\n [ngTemplateOutletContext]=\"{ kind: 'create', name: '' }\"\n />\n }\n <div data-part=\"footer\">\n <button\n slButton\n data-save-as\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"startCreate()\"\n >\n {{ t('saveAs') }}\n </button>\n <button slButton size=\"sm\" [disabled]=\"!canSave()\" (click)=\"save($event)\">\n {{ t('save') }}\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n\n @if (modified()) {\n <button data-part=\"revert\" type=\"button\" (click)=\"revert($event)\">\n <!-- An arrow that turns back turns the other way in a right-to-left document. -->\n <span slIcon size=\"sm\" directional><svg slGlyph name=\"rotate-ccw\"></svg></span>\n {{ t('revert') }}\n </button>\n }\n\n <ng-template #nameForm let-kind=\"kind\" let-name=\"name\">\n <form\n data-part=\"form\"\n novalidate\n [attr.aria-label]=\"kind === 'create' ? t('saveAs') : t('renameView', { name: name })\"\n (submit)=\"submit($event)\"\n >\n <div slField size=\"sm\" [invalid]=\"error() !== null\">\n <label slFieldLabel>{{ t('name') }}</label>\n <div slTextField size=\"sm\">\n <input\n slTextFieldInput\n autocomplete=\"off\"\n [value]=\"draft()\"\n (valueChange)=\"onDraft($event.value)\"\n />\n </div>\n @if (error(); as reason) {\n <span slFieldError>{{ reason === 'empty' ? t('empty') : t('duplicate') }}</span>\n }\n </div>\n <div data-buttons>\n <button\n slButton\n data-cancel\n size=\"sm\"\n tone=\"secondary\"\n variant=\"ghost\"\n (click)=\"cancelEditing()\"\n >\n {{ t('cancel') }}\n </button>\n <button slButton type=\"submit\" size=\"sm\">\n {{ kind === 'create' ? t('create') : t('rename') }}\n </button>\n </div>\n </form>\n </ng-template>\n `,\n})\nexport class SlSavedViews {\n /** The view the grid shows now. */\n readonly current = input.required<GridView>();\n /** The built-in view: the application's defaults. */\n readonly builtIn = input.required<GridView>();\n /** The model, so a view is serialized and compared against the columns it names. */\n readonly columns = input<readonly GridColumn<never>[] | undefined>(undefined);\n /** The views. Two-way, so a template may bind it directly; cancel the request to hold it. */\n readonly state = model<SavedViewsState | undefined>(undefined);\n /** The views an unbound instance starts from. */\n readonly defaultState = input<SavedViewsState | undefined>(undefined);\n /** Whether the layer is open. Two-way. */\n readonly open = model<boolean | undefined>(undefined);\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * group's and the panel's name (`label`), the controls, the forms and the\n * announcements. A host `aria-label` names both instead.\n */\n readonly messages = input<PartialMessages<SavedViewsMessages> | undefined>(undefined);\n\n /** Every change to the views, carrying the action and the reason; cancellable. */\n readonly stateChangeRequest = output<SavedViewsRequest>();\n /** One output for one transition of the layer. */\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n /** After apply and revert: the view to write into the grid. */\n readonly viewApply = output<SavedViewApply>();\n\n private readonly injector = inject(Injector);\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n protected readonly role = inject(new HostAttributeToken('role'), { optional: true }) ?? 'group';\n protected readonly writtenLabel = inject(new HostAttributeToken('aria-label'), {\n optional: true,\n });\n readonly panelId = `${inject(SlSavedViewsIdFactory).next()}-panel`;\n\n private readonly triggerRef = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n\n protected readonly editing = signal<Editing>(null);\n protected readonly draft = signal('');\n protected readonly error = signal<'empty' | 'duplicate' | null>(null);\n\n /** The family's words in the language in force, with this control's `messages` laid over them. */\n readonly t = injectMessages(savedViewsMessages, this.messages);\n readonly resolvedLabel = computed(() => this.writtenLabel ?? this.t('label'));\n readonly resolvedState = computed<SavedViewsState>(\n () => this.state() ?? this.defaultState() ?? emptySavedViews(),\n );\n readonly isOpen = computed(() => this.open() ?? this.defaultOpen());\n readonly active = computed(() => {\n const state = this.resolvedState();\n return state.views.find((view) => view.id === state.activeId) ?? null;\n });\n readonly activeView = computed<GridView>(() => {\n const active = this.active();\n return active ? parseGridView(active.view, this.columns()) : this.builtIn();\n });\n readonly modified = computed(\n () => !sameSavedView(this.current(), this.activeView(), this.columns()),\n );\n readonly activeName = computed(() => this.active()?.name ?? this.t('builtIn'));\n readonly canSave = computed(() => this.active() !== null && this.modified());\n readonly rows = computed<readonly Row[]>(() => {\n const state = this.resolvedState();\n return [\n {\n id: null,\n key: BUILT_IN_VIEW_ID,\n name: this.t('builtIn'),\n view: null,\n current: state.activeId === null,\n isDefault: state.defaultId === null,\n },\n ...state.views.map((view) => ({\n id: view.id,\n key: view.id,\n name: view.name,\n view,\n current: state.activeId === view.id,\n isDefault: state.defaultId === view.id,\n })),\n ];\n });\n\n /** A click the keyboard produced has no pointer detail. */\n protected pressReason(event: MouseEvent): 'pointer' | 'keyboard' {\n return event.detail === 0 ? 'keyboard' : 'pointer';\n }\n\n protected editingKind(row: Row): 'rename' | 'delete' | null {\n const editing = this.editing();\n if (editing === null || editing.kind === 'create' || editing.id !== row.id) return null;\n return editing.kind;\n }\n\n /** Opens the layer, carrying `programmatic`. */\n show() {\n this.setOpen(true, 'programmatic');\n }\n\n /** Closes the layer, carrying `programmatic`. */\n hide() {\n this.setOpen(false, 'programmatic');\n }\n\n /** Moves focus to the trigger. */\n focus() {\n this.triggerRef().nativeElement.focus();\n }\n\n /** Applies a view by id — `null` is the built-in view — carrying the reason. */\n apply(id: string | null, reason: SavedViewsReason = 'programmatic', source?: Event) {\n const state = this.resolvedState();\n const target = id === null ? null : (state.views.find((view) => view.id === id) ?? null);\n if (id !== null && target === null) return;\n const request = this.request(withActiveView(state, id), 'apply', reason, source);\n if (request === null) return;\n const view = target ? parseGridView(target.view, this.columns()) : this.builtIn();\n this.viewApply.emit({ view, request });\n this.announce(this.t('applied', { name: target?.name ?? this.t('builtIn') }));\n this.setOpen(\n false,\n reason === 'keyboard' || reason === 'pointer' ? reason : 'programmatic',\n source,\n );\n }\n\n protected revert(event: MouseEvent) {\n const request = this.request(this.resolvedState(), 'revert', this.pressReason(event), event);\n if (request === null) return;\n this.viewApply.emit({ view: this.activeView(), request });\n this.announce(this.t('applied', { name: this.activeName() }));\n this.focusAfterRender({ id: null, part: 'trigger' });\n }\n\n protected save(event: MouseEvent) {\n const active = this.active();\n if (active === null || !this.modified()) return;\n const reason = this.pressReason(event);\n const next = withViewSaved(\n this.resolvedState(),\n active.id,\n savedViewText(this.current(), this.columns()),\n );\n if (this.request(next, 'save', reason, event) === null) return;\n this.announce(this.t('saved', { name: active.name }));\n this.setOpen(false, reason, event);\n }\n\n protected setDefault(id: string | null, event: MenuSelectEvent) {\n const state = this.resolvedState();\n const request = this.request(withDefaultView(state, id), 'default', event.reason, event.source);\n if (request === null) return;\n const name = state.views.find((view) => view.id === id)?.name ?? this.t('builtIn');\n this.announce(this.t('defaultChanged', { name }));\n }\n\n protected startCreate() {\n this.editing.set({ kind: 'create' });\n this.draft.set('');\n this.error.set(null);\n this.focusAfterRender({ id: null, part: 'input' });\n }\n\n protected startRename(view: SavedView) {\n this.editing.set({ kind: 'rename', id: view.id });\n this.draft.set(view.name);\n this.error.set(null);\n this.focusAfterRender({ id: view.id, part: 'input' });\n }\n\n protected startDelete(view: SavedView) {\n this.editing.set({ kind: 'delete', id: view.id });\n this.error.set(null);\n this.focusAfterRender({ id: view.id, part: 'cancel' });\n }\n\n /** Cancelling returns focus to the control that opened the form. */\n protected cancelEditing() {\n const was = this.editing();\n this.closeForms();\n if (was === null) return;\n this.focusAfterRender(\n was.kind === 'create' ? { id: null, part: 'save-as' } : { id: was.id, part: 'actions' },\n );\n }\n\n protected onDraft(value: string | undefined) {\n this.draft.set(value ?? '');\n this.error.set(null);\n }\n\n protected submit(event: Event) {\n event.preventDefault();\n const editing = this.editing();\n if (editing === null || editing.kind === 'delete') return;\n const state = this.resolvedState();\n const name = this.draft().trim();\n const except = editing.kind === 'rename' ? editing.id : null;\n const builtIn = this.t('builtIn').trim().toLocaleLowerCase();\n if (name === '') this.error.set('empty');\n else if (isViewNameTaken(state, name, except) || name.toLocaleLowerCase() === builtIn) {\n this.error.set('duplicate');\n }\n if (this.error() !== null) {\n this.focusAfterRender({ id: except, part: 'input' } as FocusTarget);\n return;\n }\n if (editing.kind === 'create') {\n const id = newSavedViewId();\n const next = withViewCreated(state, name, savedViewText(this.current(), this.columns()), id);\n if (this.request(next, 'create', 'submit', event) === null) return;\n this.announce(this.t('saved', { name }));\n this.closeForms();\n this.focusAfterRender({ id, part: 'apply' });\n return;\n }\n if (\n this.request(withViewRenamed(state, editing.id, name), 'rename', 'submit', event) === null\n ) {\n return;\n }\n this.announce(this.t('renamed', { name }));\n this.closeForms();\n this.focusAfterRender({ id: editing.id, part: 'apply' });\n }\n\n protected confirmDelete(id: string, event: MouseEvent) {\n const state = this.resolvedState();\n const index = state.views.findIndex((view) => view.id === id);\n const view = state.views[index];\n if (view === undefined) return;\n if (this.request(withViewDeleted(state, id), 'delete', 'remove', event) === null) return;\n this.announce(this.t('deleted', { name: view.name }));\n this.closeForms();\n this.focusAfterRender({ id: state.views[index - 1]?.id ?? BUILT_IN_VIEW_ID, part: 'apply' });\n }\n\n /**\n * The dismissable layer asks in the capture phase. The popover's own move is\n * always refused here and replayed as this family's request, so the layer\n * follows one open state; a form open inside is cancelled first and the\n * close is refused.\n */\n protected onLayerRequest(request: ChangeRequest<boolean>) {\n request.cancel();\n if (!request.value && request.reason === 'escape' && this.editing() !== null) {\n this.cancelEditing();\n return;\n }\n this.setOpen(\n request.value,\n request.reason as SavedViewsOpenReason,\n request.source as Event | undefined,\n );\n }\n\n private setOpen(next: boolean, reason: SavedViewsOpenReason, source?: Event) {\n if (next === this.isOpen()) return;\n let cancelled = false;\n const request: ChangeRequest<boolean> = {\n value: next,\n previous: !next,\n reason,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n this.openChangeRequest.emit(request);\n if (cancelled) return;\n this.open.set(next);\n if (!next) this.closeForms();\n }\n\n /** Asks for a new state. Not emitted when nothing would change; refused when cancelled. */\n private request(\n next: SavedViewsState,\n action: SavedViewsAction,\n reason: SavedViewsReason,\n source?: Event,\n ): SavedViewsRequest | null {\n const previous = this.resolvedState();\n let cancelled = false;\n const request: SavedViewsRequest = {\n value: next,\n previous,\n reason,\n action,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel() {\n cancelled = true;\n },\n };\n if (serializeSavedViews(next) === serializeSavedViews(previous)) return request;\n this.stateChangeRequest.emit(request);\n if (cancelled) return null;\n this.state.set(next);\n return request;\n }\n\n private closeForms() {\n this.editing.set(null);\n this.draft.set('');\n this.error.set(null);\n }\n\n private announce(text: string) {\n getLiveAnnouncer(this.host.ownerDocument).announce(text);\n }\n\n private focusAfterRender(target: FocusTarget) {\n afterNextRender(\n () => {\n if (target.part === 'trigger') {\n this.focus();\n return;\n }\n const panel = this.host.ownerDocument.getElementById(this.panelId);\n if (panel === null) return;\n const scope =\n target.id === null\n ? panel\n : ([...panel.querySelectorAll<HTMLElement>('[data-part=\"item\"]')].find(\n (item) => item.dataset['view'] === target.id,\n ) ?? null);\n const selector = {\n apply: '[data-part=\"apply\"]',\n actions: '[data-part=\"actions\"]',\n input: target.id === null ? ':scope > [data-part=\"form\"] input' : 'input',\n cancel: '[data-cancel]',\n 'save-as': '[data-save-as]',\n }[target.part];\n scope?.querySelector<HTMLElement>(selector)?.focus();\n },\n { injector: this.injector },\n );\n }\n}\n","import { effect, signal, untracked, type Injector, type WritableSignal } from '@angular/core';\nimport {\n parseGridView,\n parseSavedViews,\n serializeSavedViews,\n withActiveView,\n type GridColumn,\n type GridView,\n type GridViewStorage,\n type SavedViewsState,\n} from '@slotted/core/grid';\n\nexport interface PersistedSavedViewsOptions {\n /** The entry the views are kept under. */\n readonly key: string;\n /** Default `window.localStorage`; `null` keeps the views in memory only. */\n readonly storage?: GridViewStorage | null | undefined;\n /** The model, so the default view a visit opens on is parsed against it. */\n readonly columns?: readonly GridColumn<never>[] | undefined;\n /** Required outside an injection context. */\n readonly injector?: Injector | undefined;\n}\n\nexport interface PersistedSavedViews {\n /** Bind with `[(state)]`. */\n readonly state: WritableSignal<SavedViewsState>;\n /**\n * The default view this visit opened on, when the store held no view in use\n * and a default: the state already names it as active, and the grid still\n * has to be given it once. `null` otherwise.\n */\n readonly openedDefault: GridView | null;\n}\n\nfunction defaultStorage(): GridViewStorage | null {\n try {\n return typeof window === 'undefined' ? null : window.localStorage;\n } catch {\n return null;\n }\n}\n\n/**\n * A reader's saved views, kept across visits: read once from the store with\n * `parseSavedViews` — which is total, so a malformed entry is no views — and\n * written with `serializeSavedViews` after every change. A store that holds\n * no view in use and a default opens the visit on the default. The store is\n * reached inside `try` both ways, as `persistedGridView` reaches it.\n */\nexport function persistedSavedViews({\n key,\n storage,\n columns,\n injector,\n}: PersistedSavedViewsOptions): PersistedSavedViews {\n const store = storage === undefined ? defaultStorage() : storage;\n let text: string | null;\n try {\n text = store?.getItem(key) ?? null;\n } catch {\n text = null;\n }\n let initial = parseSavedViews(text);\n let openedDefault: GridView | null = null;\n if (initial.activeId === null && initial.defaultId !== null) {\n const opened = initial.views.find((view) => view.id === initial.defaultId);\n initial = withActiveView(initial, initial.defaultId);\n openedDefault = opened ? parseGridView(opened.view, columns) : null;\n }\n const state = signal<SavedViewsState>(initial);\n\n /* The first run is the read; every run after is a change to write. */\n let settled = false;\n effect(\n () => {\n const current = state();\n if (!settled) {\n settled = true;\n return;\n }\n untracked(() => {\n if (!store) return;\n try {\n store.setItem(key, serializeSavedViews(current));\n } catch {\n /* The store refused; the views stay in memory. */\n }\n });\n },\n injector ? { injector } : undefined,\n );\n\n return { state, openedDefault };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createControllable } from '@slotted/core/state';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { InjectionToken, inject, Injectable, input, booleanAttribute, output, HostAttributeToken,
|
|
3
|
+
import { InjectionToken, inject, Injectable, input, booleanAttribute, output, HostAttributeToken, computed, signal, forwardRef, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive, viewChild, DestroyRef } from '@angular/core';
|
|
4
4
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
|
|
5
5
|
import { SlField } from '@slotted/angular/field';
|
|
6
6
|
import { SlFieldGroup } from '@slotted/angular/field-group';
|
|
@@ -10,6 +10,7 @@ const FALLBACK = {
|
|
|
10
10
|
fullWidth: false,
|
|
11
11
|
orientation: 'horizontal',
|
|
12
12
|
size: 'md',
|
|
13
|
+
variant: 'track',
|
|
13
14
|
};
|
|
14
15
|
const SEGMENTED_CONTROL_DEFAULTS = new InjectionToken('slotted segmented control defaults', { providedIn: 'root', factory: () => FALLBACK });
|
|
15
16
|
/**
|
|
@@ -95,6 +96,9 @@ class SlSegmentedControl {
|
|
|
95
96
|
...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
96
97
|
condense = input(undefined, /* @ts-ignore */
|
|
97
98
|
...(ngDevMode ? [{ debugName: "condense" }] : /* istanbul ignore next */ []));
|
|
99
|
+
/** Defaults to the provider, then to `track`. */
|
|
100
|
+
variant = input(undefined, /* @ts-ignore */
|
|
101
|
+
...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
98
102
|
fullWidth = input(undefined, { ...(ngDevMode ? { debugName: "fullWidth" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
|
|
99
103
|
/** Unstated rather than `false`, so the control defers to the field around it. */
|
|
100
104
|
disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
|
|
@@ -111,6 +115,18 @@ class SlSegmentedControl {
|
|
|
111
115
|
defaults = injectSegmentedControlDefaults();
|
|
112
116
|
generatedName = inject(SlSegmentedControlIdFactory).next();
|
|
113
117
|
writtenRole = inject(new HostAttributeToken('role'), { optional: true });
|
|
118
|
+
writtenLabel = inject(new HostAttributeToken('aria-label'), { optional: true });
|
|
119
|
+
writtenLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {
|
|
120
|
+
optional: true,
|
|
121
|
+
});
|
|
122
|
+
/* A group has no element a label's for can reach, so inside a field the
|
|
123
|
+
field's label names it where the root owns the role, unless the consumer
|
|
124
|
+
named it themselves. */
|
|
125
|
+
labelledBy = computed(() => this.writtenLabelledBy ??
|
|
126
|
+
(this.writtenLabel === null && this.resolvedRole() !== null
|
|
127
|
+
? (this.field?.ids().label ?? null)
|
|
128
|
+
: null), /* @ts-ignore */
|
|
129
|
+
...(ngDevMode ? [{ debugName: "labelledBy" }] : /* istanbul ignore next */ []));
|
|
114
130
|
writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {
|
|
115
131
|
optional: true,
|
|
116
132
|
});
|
|
@@ -150,6 +166,8 @@ class SlSegmentedControl {
|
|
|
150
166
|
...(ngDevMode ? [{ debugName: "resolvedOrientation" }] : /* istanbul ignore next */ []));
|
|
151
167
|
resolvedCondense = computed(() => this.condense() ?? this.defaults.condense, /* @ts-ignore */
|
|
152
168
|
...(ngDevMode ? [{ debugName: "resolvedCondense" }] : /* istanbul ignore next */ []));
|
|
169
|
+
resolvedVariant = computed(() => this.variant() ?? this.defaults.variant, /* @ts-ignore */
|
|
170
|
+
...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
|
|
153
171
|
resolvedFullWidth = computed(() => this.fullWidth() ?? this.defaults.fullWidth, /* @ts-ignore */
|
|
154
172
|
...(ngDevMode ? [{ debugName: "resolvedFullWidth" }] : /* istanbul ignore next */ []));
|
|
155
173
|
resolvedDisabled = computed(() => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(), /* @ts-ignore */
|
|
@@ -261,13 +279,13 @@ class SlSegmentedControl {
|
|
|
261
279
|
return value === null || value === undefined || value === '' ? { required: true } : null;
|
|
262
280
|
}
|
|
263
281
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSegmentedControl, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
264
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlSegmentedControl, isStandalone: true, selector: "[slSegmentedControl]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, condense: { classPropertyName: "condense", publicName: "condense", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { attributes: { "data-ui": "segmented-control", "data-part": "root" }, properties: { "attr.role": "resolvedRole()", "attr.data-size": "resolvedSize()", "attr.data-orientation": "resolvedOrientation()", "attr.data-condense": "resolvedCondense()", "attr.data-full-width": "resolvedFullWidth() ? '' : null", "attr.data-disabled": "resolvedDisabled() === true ? '' : null", "attr.data-invalid": "resolvedInvalid() === true ? '' : null", "attr.data-readonly": "resolvedReadOnly() === true ? '' : null", "attr.aria-describedby": "describedBy()", "attr.aria-invalid": "ariaInvalid()", "attr.aria-readonly": "ariaReadOnly()", "attr.aria-required": "ariaRequired()", "attr.aria-orientation": "ariaOrientation()", "style.--slotted-segmented-control-count": "count()", "style.--slotted-segmented-control-index": "indexProperty()" } }, providers: [
|
|
282
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlSegmentedControl, isStandalone: true, selector: "[slSegmentedControl]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, condense: { classPropertyName: "condense", publicName: "condense", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { attributes: { "data-ui": "segmented-control", "data-part": "root" }, properties: { "attr.role": "resolvedRole()", "attr.data-size": "resolvedSize()", "attr.data-orientation": "resolvedOrientation()", "attr.data-condense": "resolvedCondense()", "attr.data-variant": "resolvedVariant()", "attr.aria-labelledby": "labelledBy()", "attr.data-full-width": "resolvedFullWidth() ? '' : null", "attr.data-disabled": "resolvedDisabled() === true ? '' : null", "attr.data-invalid": "resolvedInvalid() === true ? '' : null", "attr.data-readonly": "resolvedReadOnly() === true ? '' : null", "attr.aria-describedby": "describedBy()", "attr.aria-invalid": "ariaInvalid()", "attr.aria-readonly": "ariaReadOnly()", "attr.aria-required": "ariaRequired()", "attr.aria-orientation": "ariaOrientation()", "style.--slotted-segmented-control-count": "count()", "style.--slotted-segmented-control-index": "indexProperty()" } }, providers: [
|
|
265
283
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlSegmentedControl), multi: true },
|
|
266
284
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => SlSegmentedControl), multi: true },
|
|
267
285
|
], exportAs: ["slSegmentedControl"], ngImport: i0, template: `@if (checkedIndex() >= 0) {
|
|
268
286
|
<span data-part="indicator" aria-hidden="true"></span>
|
|
269
287
|
}
|
|
270
|
-
<ng-content />`, isInline: true, styles: ["@layer slotted.components{[data-ui=segmented-control][data-part=root]{--_count: var(--slotted-segmented-control-count, 1);--_index: var(--slotted-segmented-control-index, 0);--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_gap: var(--slotted-control-gap-md, 8px);--_radius: var(--slotted-segmented-control-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_inset: var(--slotted-segmented-control-inset, var(--slotted-space-1, .125rem));--_inner: calc(var(--_height) - (var(--_inset) + var(--_border-width)) * 2);--_thumb-radius: max(calc(var(--_radius) - var(--_inset)), var(--slotted-radius-xs, 2px));--_travel: var(--slotted-duration-medium);background:var(--slotted-segmented-control-background, var(--slotted-control-surface, Field));border:var(--_border-width) solid var( --slotted-segmented-control-border-color, var(--slotted-control-border-color, ButtonBorder) );border-radius:var(--_radius);box-shadow:var(--slotted-segmented-control-shadow, var(--slotted-control-shadow, none));box-sizing:border-box;display:inline-grid;font-family:var(--slotted-control-font-family, system-ui, sans-serif);font-size:var(--_font-size);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;isolation:isolate;min-inline-size:0;padding:var(--_inset);position:relative}[data-ui=segmented-control][data-part=root]:empty{display:none}[data-ui=segmented-control][data-part=root][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);--_font-size: var(--slotted-control-font-size-sm, 12px);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_gap: var(--slotted-control-gap-sm, 6px)}[data-ui=segmented-control][data-part=root][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);--_font-size: var(--slotted-control-font-size-lg, 14px);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_gap: var(--slotted-control-gap-lg, 8px)}[data-ui=segmented-control][data-part=root][data-orientation=vertical]{grid-auto-columns:auto;grid-auto-flow:row;grid-auto-rows:minmax(0,1fr)}[data-ui=segmented-control][data-part=root][data-full-width]{display:grid;inline-size:100%}[data-ui=segmented-control][data-part=root][data-condense=icons]{container-name:slotted-segmented-control;container-type:inline-size;display:grid;inline-size:100%}[data-ui=segmented-control] [data-part=item]{align-items:center;block-size:var(--_inner);border-radius:var(--_thumb-radius);box-sizing:border-box;color:var(--slotted-segmented-control-color, var(--slotted-text, ButtonText));cursor:pointer;display:flex;font-weight:var(--slotted-control-font-weight, 600);gap:var(--_gap);justify-content:center;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-control-line-height, 1);min-inline-size:max(var(--_inner),var(--slotted-target-min, 24px));padding-inline:var(--_padding-inline);position:relative;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);z-index:1}[data-ui=segmented-control] [data-part=item]:not(:has([data-part=label]:not(:empty))){padding-inline:0}[data-ui=segmented-control] [data-part=label]:empty{display:none}[data-ui=segmented-control] [data-part=item]+[data-part=item]:before{background:var(--slotted-segmented-control-divider-color, var(--slotted-border-subtle));content:\"\";inline-size:var(--_border-width);inset-block:22%;inset-inline-start:0;position:absolute;transition:opacity var(--_travel) var(--slotted-easing-standard)}[data-ui=segmented-control][data-part=root][data-orientation=vertical] [data-part=item]+[data-part=item]:before{block-size:var(--_border-width);inline-size:auto;inset-block:auto;inset-block-start:0;inset-inline:22%}[data-ui=segmented-control] [data-part=item][data-checked]:before,[data-ui=segmented-control] [data-part=item][data-checked]+[data-part=item]:before{opacity:0}[data-ui=segmented-control] [data-part=control]{appearance:none;background:none;border:0;border-radius:inherit;cursor:inherit;inset-block:calc(-1 * (var(--_inset) + var(--_border-width)));inset-inline:0;margin:0;opacity:0;padding:0;position:absolute}[data-ui=segmented-control] [data-part=icon]{block-size:var(--_icon-size);display:inline-flex;flex:none;inline-size:var(--_icon-size)}[data-ui=segmented-control] [data-part=label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=segmented-control] [data-part=indicator]{background:var( --slotted-segmented-control-indicator-background, var(--slotted-tone-accent-subtle-active, Highlight) );block-size:calc(100% - var(--_inset) * 2);border:var(--_border-width) solid var( --slotted-segmented-control-indicator-border-color, var(--slotted-tone-accent-border, Highlight) );border-radius:var(--_thumb-radius);box-shadow:var(--slotted-control-shadow, none);box-sizing:border-box;inline-size:calc((100% - var(--_inset) * 2) / var(--_count));inset-block-start:var(--_inset);inset-inline-start:var(--_inset);pointer-events:none;position:absolute;transition:opacity var(--slotted-control-transition-duration) var(--slotted-easing-standard),translate var(--_travel) var(--slotted-easing-standard);translate:calc(var(--_index) * 100%);z-index:0}@starting-style{[data-ui=segmented-control] [data-part=indicator]{opacity:0}}[data-ui=segmented-control] [data-part=indicator]:dir(rtl){translate:calc(var(--_index) * -100%)}[data-ui=segmented-control][data-part=root][data-orientation=vertical] [data-part=indicator]{block-size:calc((100% - var(--_inset) * 2) / var(--_count));inline-size:calc(100% - var(--_inset) * 2);translate:0 calc(var(--_index) * 100%)}[data-ui=segmented-control] [data-part=item][data-checked]{color:var( --slotted-segmented-control-checked-color, var(--slotted-tone-accent-text, HighlightText) )}[data-ui=segmented-control][data-part=root]:not([data-readonly]) [data-part=item]:hover:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled){background:var( --slotted-segmented-control-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui=segmented-control][data-part=root]:not([data-readonly]) [data-part=item]:active:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled){background:var( --slotted-segmented-control-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui=segmented-control] [data-part=item]:has([data-part=control]:focus-visible){outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px));z-index:2}[data-ui=segmented-control] [data-part=control]:focus-visible{outline:none}[data-ui=segmented-control][data-part=root][data-invalid]{--slotted-focus-ring-color: var( --slotted-segmented-control-invalid-focus-ring-color, var(--slotted-focus-ring-color-invalid, Highlight) );border-color:var( --slotted-segmented-control-invalid-border-color, var(--slotted-tone-danger-border, ButtonBorder) );--_invalid-edge-width: var( --slotted-segmented-control-invalid-edge-width, var(--slotted-control-invalid-edge-width, 1px) );box-shadow:inset 0 0 0 var(--_invalid-edge-width) var( --slotted-segmented-control-invalid-border-color, var(--slotted-tone-danger-border, ButtonBorder) )}[data-ui=segmented-control][data-part=root][data-readonly] [data-part=item],[data-ui=segmented-control][data-part=root][data-readonly] [data-part=control]{cursor:default}[data-ui=segmented-control] [data-part=item][data-disabled]{color:var( --slotted-segmented-control-disabled-color, var(--slotted-disabled-foreground, GrayText) );cursor:default}[data-ui=segmented-control] [data-part=control]:disabled{cursor:default}[data-ui=segmented-control][data-part=root][data-disabled]{border-color:var( --slotted-segmented-control-disabled-border-color, var(--slotted-disabled-border, GrayText) )}[data-ui=segmented-control][data-part=root][data-disabled] [data-part=indicator]{background:var( --slotted-segmented-control-disabled-indicator-background, var(--slotted-disabled-background, ButtonFace) );border-color:var( --slotted-segmented-control-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}@container slotted-segmented-control (max-inline-size: 20rem){[data-ui=segmented-control][data-part=root][data-condense=icons] [data-part=item]:has([data-part=icon]) [data-part=label]{block-size:1px;clip-path:inset(50%);inline-size:1px;overflow:hidden;position:absolute;white-space:nowrap}[data-ui=segmented-control][data-part=root][data-condense=icons] [data-part=item]:has([data-part=icon]){padding-inline:0}}@media(forced-colors:active){[data-ui=segmented-control][data-part=root][data-invalid]{outline:var(--_invalid-edge-width) solid CanvasText;outline-offset:calc(-1 * (var(--_border-width) + var(--_invalid-edge-width)))}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
288
|
+
<ng-content />`, isInline: true, styles: ["@layer slotted.components{[data-ui=segmented-control][data-part=root]{--_count: var(--slotted-segmented-control-count, 1);--_index: var(--slotted-segmented-control-index, 0);--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_gap: var(--slotted-control-gap-md, 8px);--_radius: var(--slotted-segmented-control-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_inset: var(--slotted-segmented-control-inset, var(--slotted-space-1, .125rem));--_inner: calc(var(--_height) - (var(--_inset) + var(--_border-width)) * 2);--_thumb-radius: max(calc(var(--_radius) - var(--_inset)), var(--slotted-radius-xs, 2px));--_travel: var(--slotted-duration-medium);background:var(--slotted-segmented-control-background, var(--slotted-control-surface, Field));border:var(--_border-width) solid var( --slotted-segmented-control-border-color, var(--slotted-control-border-color, ButtonBorder) );border-radius:var(--_radius);box-shadow:var(--slotted-segmented-control-shadow, var(--slotted-control-shadow, none));box-sizing:border-box;display:inline-grid;font-family:var(--slotted-control-font-family, system-ui, sans-serif);font-size:var(--_font-size);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;isolation:isolate;min-inline-size:0;padding:var(--_inset);position:relative}[data-ui=segmented-control][data-part=root]:empty{display:none}[data-ui=segmented-control][data-part=root][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);--_font-size: var(--slotted-control-font-size-sm, 12px);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_gap: var(--slotted-control-gap-sm, 6px)}[data-ui=segmented-control][data-part=root][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);--_font-size: var(--slotted-control-font-size-lg, 14px);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_gap: var(--slotted-control-gap-lg, 8px)}[data-ui=segmented-control][data-part=root][data-orientation=vertical]{grid-auto-columns:auto;grid-auto-flow:row;grid-auto-rows:minmax(0,1fr)}[data-ui=segmented-control][data-part=root][data-full-width]{display:grid;inline-size:100%}[data-ui=segmented-control][data-part=root][data-condense=icons]{container-name:slotted-segmented-control;container-type:inline-size;display:grid;inline-size:100%}[data-ui=segmented-control] [data-part=item]{align-items:center;block-size:var(--_inner);border-radius:var(--_thumb-radius);box-sizing:border-box;color:var(--slotted-segmented-control-color, var(--slotted-text, ButtonText));cursor:pointer;display:flex;font-weight:var(--slotted-control-font-weight, 600);gap:var(--_gap);justify-content:center;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-control-line-height, 1);min-inline-size:max(var(--_inner),var(--slotted-target-min, 24px));padding-inline:var(--_padding-inline);position:relative;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);z-index:1}[data-ui=segmented-control] [data-part=item]:not(:has([data-part=label]:not(:empty))){padding-inline:0}[data-ui=segmented-control] [data-part=label]:empty{display:none}[data-ui=segmented-control] [data-part=item]+[data-part=item]:before{background:var(--slotted-segmented-control-divider-color, var(--slotted-border-subtle));content:\"\";inline-size:var(--_border-width);inset-block:22%;inset-inline-start:0;position:absolute;transition:opacity var(--_travel) var(--slotted-easing-standard)}[data-ui=segmented-control][data-part=root][data-orientation=vertical] [data-part=item]+[data-part=item]:before{block-size:var(--_border-width);inline-size:auto;inset-block:auto;inset-block-start:0;inset-inline:22%}[data-ui=segmented-control] [data-part=item][data-checked]:before,[data-ui=segmented-control] [data-part=item][data-checked]+[data-part=item]:before{opacity:0}[data-ui=segmented-control] [data-part=control]{appearance:none;background:none;border:0;border-radius:inherit;cursor:inherit;inset-block:calc(-1 * (var(--_inset) + var(--_border-width)));inset-inline:0;margin:0;opacity:0;padding:0;position:absolute}[data-ui=segmented-control] [data-part=icon]{block-size:var(--_icon-size);display:inline-flex;flex:none;inline-size:var(--_icon-size)}[data-ui=segmented-control] [data-part=label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=segmented-control] [data-part=indicator]{background:var( --slotted-segmented-control-indicator-background, var(--slotted-tone-accent-subtle-active, Highlight) );block-size:calc(100% - var(--_inset) * 2);border:var(--_border-width) solid var( --slotted-segmented-control-indicator-border-color, var(--slotted-tone-accent-border, Highlight) );border-radius:var(--_thumb-radius);box-shadow:var(--slotted-control-shadow, none);box-sizing:border-box;inline-size:calc((100% - var(--_inset) * 2) / var(--_count));inset-block-start:var(--_inset);inset-inline-start:var(--_inset);pointer-events:none;position:absolute;transition:opacity var(--slotted-control-transition-duration) var(--slotted-easing-standard),translate var(--_travel) var(--slotted-easing-standard);translate:calc(var(--_index) * 100%);z-index:0}@starting-style{[data-ui=segmented-control] [data-part=indicator]{opacity:0}}[data-ui=segmented-control] [data-part=indicator]:dir(rtl){translate:calc(var(--_index) * -100%)}[data-ui=segmented-control][data-part=root][data-orientation=vertical] [data-part=indicator]{block-size:calc((100% - var(--_inset) * 2) / var(--_count));inline-size:calc(100% - var(--_inset) * 2);translate:0 calc(var(--_index) * 100%)}[data-ui=segmented-control] [data-part=item][data-checked]{color:var( --slotted-segmented-control-checked-color, var(--slotted-tone-accent-text, HighlightText) )}[data-ui=segmented-control][data-part=root]:not([data-readonly]) [data-part=item]:hover:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled){background:var( --slotted-segmented-control-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui=segmented-control][data-part=root]:not([data-readonly]) [data-part=item]:active:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled){background:var( --slotted-segmented-control-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui=segmented-control] [data-part=item]:has([data-part=control]:focus-visible){outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px));z-index:2}[data-ui=segmented-control] [data-part=control]:focus-visible{outline:none}[data-ui=segmented-control][data-part=root][data-invalid]{--slotted-focus-ring-color: var( --slotted-segmented-control-invalid-focus-ring-color, var(--slotted-focus-ring-color-invalid, Highlight) );border-color:var( --slotted-segmented-control-invalid-border-color, var(--slotted-tone-danger-border, ButtonBorder) );--_invalid-edge-width: var( --slotted-segmented-control-invalid-edge-width, var(--slotted-control-invalid-edge-width, 1px) );box-shadow:inset 0 0 0 var(--_invalid-edge-width) var( --slotted-segmented-control-invalid-border-color, var(--slotted-tone-danger-border, ButtonBorder) )}[data-ui=segmented-control][data-part=root][data-readonly] [data-part=item],[data-ui=segmented-control][data-part=root][data-readonly] [data-part=control]{cursor:default}[data-ui=segmented-control] [data-part=item][data-disabled]{color:var( --slotted-segmented-control-disabled-color, var(--slotted-disabled-foreground, GrayText) );cursor:default}[data-ui=segmented-control] [data-part=control]:disabled{cursor:default}[data-ui=segmented-control][data-part=root][data-disabled]{border-color:var( --slotted-segmented-control-disabled-border-color, var(--slotted-disabled-border, GrayText) )}[data-ui=segmented-control][data-part=root][data-disabled] [data-part=indicator]{background:var( --slotted-segmented-control-disabled-indicator-background, var(--slotted-disabled-background, ButtonFace) );border-color:var( --slotted-segmented-control-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}[data-ui=segmented-control][data-part=root][data-variant=underline]{--_inner: var(--_height);background:none;border:0;border-radius:0;box-shadow:none;column-gap:var(--slotted-segmented-control-underline-gap, var(--slotted-space-6, 1rem));grid-auto-columns:auto;padding:0}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=indicator],[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item]+[data-part=item]:before{display:none}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item]{color:var(--slotted-segmented-control-underline-color, var(--slotted-text-muted, GrayText));font-weight:var(--slotted-font-weight-medium, 500);min-inline-size:var(--slotted-target-min, 24px);padding-inline:0}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item][data-checked]{color:var( --slotted-segmented-control-underline-checked-color, var(--slotted-text, CanvasText) )}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item][data-checked] [data-part=label]{text-decoration-color:currentColor;text-decoration-line:underline;text-decoration-thickness:var(--slotted-border-width-thick, 2px);text-underline-offset:.35em}[data-ui=segmented-control][data-part=root][data-variant=underline][data-invalid] [data-part=item][data-checked] [data-part=label]{text-decoration-color:var(--slotted-tone-danger-border, CanvasText)}[data-ui=segmented-control][data-part=root][data-variant=underline]:not([data-readonly]) [data-part=item]:hover:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled),[data-ui=segmented-control][data-part=root][data-variant=underline]:not([data-readonly]) [data-part=item]:active:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled){background:none;color:var(--slotted-text, CanvasText)}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item]:has([data-part=control]:focus-visible){outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item][data-disabled]{color:var(--slotted-disabled-foreground, GrayText)}@container slotted-segmented-control (max-inline-size: 20rem){[data-ui=segmented-control][data-part=root][data-condense=icons] [data-part=item]:has([data-part=icon]) [data-part=label]{block-size:1px;clip-path:inset(50%);inline-size:1px;overflow:hidden;position:absolute;white-space:nowrap}[data-ui=segmented-control][data-part=root][data-condense=icons] [data-part=item]:has([data-part=icon]){padding-inline:0}}@media(forced-colors:active){[data-ui=segmented-control][data-part=root][data-invalid]{outline:var(--_invalid-edge-width) solid CanvasText;outline-offset:calc(-1 * (var(--_border-width) + var(--_invalid-edge-width)))}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
271
289
|
}
|
|
272
290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSegmentedControl, decorators: [{
|
|
273
291
|
type: Component,
|
|
@@ -284,6 +302,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
284
302
|
'[attr.data-size]': 'resolvedSize()',
|
|
285
303
|
'[attr.data-orientation]': 'resolvedOrientation()',
|
|
286
304
|
'[attr.data-condense]': 'resolvedCondense()',
|
|
305
|
+
'[attr.data-variant]': 'resolvedVariant()',
|
|
306
|
+
'[attr.aria-labelledby]': 'labelledBy()',
|
|
287
307
|
'[attr.data-full-width]': "resolvedFullWidth() ? '' : null",
|
|
288
308
|
'[attr.data-disabled]': "resolvedDisabled() === true ? '' : null",
|
|
289
309
|
'[attr.data-invalid]': "resolvedInvalid() === true ? '' : null",
|
|
@@ -295,8 +315,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
295
315
|
'[attr.aria-orientation]': 'ariaOrientation()',
|
|
296
316
|
'[style.--slotted-segmented-control-count]': 'count()',
|
|
297
317
|
'[style.--slotted-segmented-control-index]': 'indexProperty()',
|
|
298
|
-
}, styles: ["@layer slotted.components{[data-ui=segmented-control][data-part=root]{--_count: var(--slotted-segmented-control-count, 1);--_index: var(--slotted-segmented-control-index, 0);--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_gap: var(--slotted-control-gap-md, 8px);--_radius: var(--slotted-segmented-control-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_inset: var(--slotted-segmented-control-inset, var(--slotted-space-1, .125rem));--_inner: calc(var(--_height) - (var(--_inset) + var(--_border-width)) * 2);--_thumb-radius: max(calc(var(--_radius) - var(--_inset)), var(--slotted-radius-xs, 2px));--_travel: var(--slotted-duration-medium);background:var(--slotted-segmented-control-background, var(--slotted-control-surface, Field));border:var(--_border-width) solid var( --slotted-segmented-control-border-color, var(--slotted-control-border-color, ButtonBorder) );border-radius:var(--_radius);box-shadow:var(--slotted-segmented-control-shadow, var(--slotted-control-shadow, none));box-sizing:border-box;display:inline-grid;font-family:var(--slotted-control-font-family, system-ui, sans-serif);font-size:var(--_font-size);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;isolation:isolate;min-inline-size:0;padding:var(--_inset);position:relative}[data-ui=segmented-control][data-part=root]:empty{display:none}[data-ui=segmented-control][data-part=root][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);--_font-size: var(--slotted-control-font-size-sm, 12px);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_gap: var(--slotted-control-gap-sm, 6px)}[data-ui=segmented-control][data-part=root][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);--_font-size: var(--slotted-control-font-size-lg, 14px);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_gap: var(--slotted-control-gap-lg, 8px)}[data-ui=segmented-control][data-part=root][data-orientation=vertical]{grid-auto-columns:auto;grid-auto-flow:row;grid-auto-rows:minmax(0,1fr)}[data-ui=segmented-control][data-part=root][data-full-width]{display:grid;inline-size:100%}[data-ui=segmented-control][data-part=root][data-condense=icons]{container-name:slotted-segmented-control;container-type:inline-size;display:grid;inline-size:100%}[data-ui=segmented-control] [data-part=item]{align-items:center;block-size:var(--_inner);border-radius:var(--_thumb-radius);box-sizing:border-box;color:var(--slotted-segmented-control-color, var(--slotted-text, ButtonText));cursor:pointer;display:flex;font-weight:var(--slotted-control-font-weight, 600);gap:var(--_gap);justify-content:center;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-control-line-height, 1);min-inline-size:max(var(--_inner),var(--slotted-target-min, 24px));padding-inline:var(--_padding-inline);position:relative;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);z-index:1}[data-ui=segmented-control] [data-part=item]:not(:has([data-part=label]:not(:empty))){padding-inline:0}[data-ui=segmented-control] [data-part=label]:empty{display:none}[data-ui=segmented-control] [data-part=item]+[data-part=item]:before{background:var(--slotted-segmented-control-divider-color, var(--slotted-border-subtle));content:\"\";inline-size:var(--_border-width);inset-block:22%;inset-inline-start:0;position:absolute;transition:opacity var(--_travel) var(--slotted-easing-standard)}[data-ui=segmented-control][data-part=root][data-orientation=vertical] [data-part=item]+[data-part=item]:before{block-size:var(--_border-width);inline-size:auto;inset-block:auto;inset-block-start:0;inset-inline:22%}[data-ui=segmented-control] [data-part=item][data-checked]:before,[data-ui=segmented-control] [data-part=item][data-checked]+[data-part=item]:before{opacity:0}[data-ui=segmented-control] [data-part=control]{appearance:none;background:none;border:0;border-radius:inherit;cursor:inherit;inset-block:calc(-1 * (var(--_inset) + var(--_border-width)));inset-inline:0;margin:0;opacity:0;padding:0;position:absolute}[data-ui=segmented-control] [data-part=icon]{block-size:var(--_icon-size);display:inline-flex;flex:none;inline-size:var(--_icon-size)}[data-ui=segmented-control] [data-part=label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=segmented-control] [data-part=indicator]{background:var( --slotted-segmented-control-indicator-background, var(--slotted-tone-accent-subtle-active, Highlight) );block-size:calc(100% - var(--_inset) * 2);border:var(--_border-width) solid var( --slotted-segmented-control-indicator-border-color, var(--slotted-tone-accent-border, Highlight) );border-radius:var(--_thumb-radius);box-shadow:var(--slotted-control-shadow, none);box-sizing:border-box;inline-size:calc((100% - var(--_inset) * 2) / var(--_count));inset-block-start:var(--_inset);inset-inline-start:var(--_inset);pointer-events:none;position:absolute;transition:opacity var(--slotted-control-transition-duration) var(--slotted-easing-standard),translate var(--_travel) var(--slotted-easing-standard);translate:calc(var(--_index) * 100%);z-index:0}@starting-style{[data-ui=segmented-control] [data-part=indicator]{opacity:0}}[data-ui=segmented-control] [data-part=indicator]:dir(rtl){translate:calc(var(--_index) * -100%)}[data-ui=segmented-control][data-part=root][data-orientation=vertical] [data-part=indicator]{block-size:calc((100% - var(--_inset) * 2) / var(--_count));inline-size:calc(100% - var(--_inset) * 2);translate:0 calc(var(--_index) * 100%)}[data-ui=segmented-control] [data-part=item][data-checked]{color:var( --slotted-segmented-control-checked-color, var(--slotted-tone-accent-text, HighlightText) )}[data-ui=segmented-control][data-part=root]:not([data-readonly]) [data-part=item]:hover:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled){background:var( --slotted-segmented-control-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui=segmented-control][data-part=root]:not([data-readonly]) [data-part=item]:active:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled){background:var( --slotted-segmented-control-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui=segmented-control] [data-part=item]:has([data-part=control]:focus-visible){outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px));z-index:2}[data-ui=segmented-control] [data-part=control]:focus-visible{outline:none}[data-ui=segmented-control][data-part=root][data-invalid]{--slotted-focus-ring-color: var( --slotted-segmented-control-invalid-focus-ring-color, var(--slotted-focus-ring-color-invalid, Highlight) );border-color:var( --slotted-segmented-control-invalid-border-color, var(--slotted-tone-danger-border, ButtonBorder) );--_invalid-edge-width: var( --slotted-segmented-control-invalid-edge-width, var(--slotted-control-invalid-edge-width, 1px) );box-shadow:inset 0 0 0 var(--_invalid-edge-width) var( --slotted-segmented-control-invalid-border-color, var(--slotted-tone-danger-border, ButtonBorder) )}[data-ui=segmented-control][data-part=root][data-readonly] [data-part=item],[data-ui=segmented-control][data-part=root][data-readonly] [data-part=control]{cursor:default}[data-ui=segmented-control] [data-part=item][data-disabled]{color:var( --slotted-segmented-control-disabled-color, var(--slotted-disabled-foreground, GrayText) );cursor:default}[data-ui=segmented-control] [data-part=control]:disabled{cursor:default}[data-ui=segmented-control][data-part=root][data-disabled]{border-color:var( --slotted-segmented-control-disabled-border-color, var(--slotted-disabled-border, GrayText) )}[data-ui=segmented-control][data-part=root][data-disabled] [data-part=indicator]{background:var( --slotted-segmented-control-disabled-indicator-background, var(--slotted-disabled-background, ButtonFace) );border-color:var( --slotted-segmented-control-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}@container slotted-segmented-control (max-inline-size: 20rem){[data-ui=segmented-control][data-part=root][data-condense=icons] [data-part=item]:has([data-part=icon]) [data-part=label]{block-size:1px;clip-path:inset(50%);inline-size:1px;overflow:hidden;position:absolute;white-space:nowrap}[data-ui=segmented-control][data-part=root][data-condense=icons] [data-part=item]:has([data-part=icon]){padding-inline:0}}@media(forced-colors:active){[data-ui=segmented-control][data-part=root][data-invalid]{outline:var(--_invalid-edge-width) solid CanvasText;outline-offset:calc(-1 * (var(--_border-width) + var(--_invalid-edge-width)))}}}\n"] }]
|
|
299
|
-
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], condense: [{ type: i0.Input, args: [{ isSignal: true, alias: "condense", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
|
|
318
|
+
}, styles: ["@layer slotted.components{[data-ui=segmented-control][data-part=root]{--_count: var(--slotted-segmented-control-count, 1);--_index: var(--slotted-segmented-control-index, 0);--_height: var(--slotted-control-height-md, 34px);--_padding-inline: var(--slotted-control-padding-inline-md, 13px);--_font-size: var(--slotted-control-font-size-md, 13px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_gap: var(--slotted-control-gap-md, 8px);--_radius: var(--slotted-segmented-control-radius, var(--slotted-control-radius, 4px));--_border-width: var(--slotted-control-border-width, 1px);--_inset: var(--slotted-segmented-control-inset, var(--slotted-space-1, .125rem));--_inner: calc(var(--_height) - (var(--_inset) + var(--_border-width)) * 2);--_thumb-radius: max(calc(var(--_radius) - var(--_inset)), var(--slotted-radius-xs, 2px));--_travel: var(--slotted-duration-medium);background:var(--slotted-segmented-control-background, var(--slotted-control-surface, Field));border:var(--_border-width) solid var( --slotted-segmented-control-border-color, var(--slotted-control-border-color, ButtonBorder) );border-radius:var(--_radius);box-shadow:var(--slotted-segmented-control-shadow, var(--slotted-control-shadow, none));box-sizing:border-box;display:inline-grid;font-family:var(--slotted-control-font-family, system-ui, sans-serif);font-size:var(--_font-size);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;isolation:isolate;min-inline-size:0;padding:var(--_inset);position:relative}[data-ui=segmented-control][data-part=root]:empty{display:none}[data-ui=segmented-control][data-part=root][data-size=sm]{--_height: var(--slotted-control-height-sm, 30px);--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);--_font-size: var(--slotted-control-font-size-sm, 12px);--_icon-size: var(--slotted-control-icon-size-sm, 14px);--_gap: var(--slotted-control-gap-sm, 6px)}[data-ui=segmented-control][data-part=root][data-size=lg]{--_height: var(--slotted-control-height-lg, 38px);--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);--_font-size: var(--slotted-control-font-size-lg, 14px);--_icon-size: var(--slotted-control-icon-size-lg, 18px);--_gap: var(--slotted-control-gap-lg, 8px)}[data-ui=segmented-control][data-part=root][data-orientation=vertical]{grid-auto-columns:auto;grid-auto-flow:row;grid-auto-rows:minmax(0,1fr)}[data-ui=segmented-control][data-part=root][data-full-width]{display:grid;inline-size:100%}[data-ui=segmented-control][data-part=root][data-condense=icons]{container-name:slotted-segmented-control;container-type:inline-size;display:grid;inline-size:100%}[data-ui=segmented-control] [data-part=item]{align-items:center;block-size:var(--_inner);border-radius:var(--_thumb-radius);box-sizing:border-box;color:var(--slotted-segmented-control-color, var(--slotted-text, ButtonText));cursor:pointer;display:flex;font-weight:var(--slotted-control-font-weight, 600);gap:var(--_gap);justify-content:center;letter-spacing:var(--slotted-control-letter-spacing, 0);line-height:var(--slotted-control-line-height, 1);min-inline-size:max(var(--_inner),var(--slotted-target-min, 24px));padding-inline:var(--_padding-inline);position:relative;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);z-index:1}[data-ui=segmented-control] [data-part=item]:not(:has([data-part=label]:not(:empty))){padding-inline:0}[data-ui=segmented-control] [data-part=label]:empty{display:none}[data-ui=segmented-control] [data-part=item]+[data-part=item]:before{background:var(--slotted-segmented-control-divider-color, var(--slotted-border-subtle));content:\"\";inline-size:var(--_border-width);inset-block:22%;inset-inline-start:0;position:absolute;transition:opacity var(--_travel) var(--slotted-easing-standard)}[data-ui=segmented-control][data-part=root][data-orientation=vertical] [data-part=item]+[data-part=item]:before{block-size:var(--_border-width);inline-size:auto;inset-block:auto;inset-block-start:0;inset-inline:22%}[data-ui=segmented-control] [data-part=item][data-checked]:before,[data-ui=segmented-control] [data-part=item][data-checked]+[data-part=item]:before{opacity:0}[data-ui=segmented-control] [data-part=control]{appearance:none;background:none;border:0;border-radius:inherit;cursor:inherit;inset-block:calc(-1 * (var(--_inset) + var(--_border-width)));inset-inline:0;margin:0;opacity:0;padding:0;position:absolute}[data-ui=segmented-control] [data-part=icon]{block-size:var(--_icon-size);display:inline-flex;flex:none;inline-size:var(--_icon-size)}[data-ui=segmented-control] [data-part=label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-ui=segmented-control] [data-part=indicator]{background:var( --slotted-segmented-control-indicator-background, var(--slotted-tone-accent-subtle-active, Highlight) );block-size:calc(100% - var(--_inset) * 2);border:var(--_border-width) solid var( --slotted-segmented-control-indicator-border-color, var(--slotted-tone-accent-border, Highlight) );border-radius:var(--_thumb-radius);box-shadow:var(--slotted-control-shadow, none);box-sizing:border-box;inline-size:calc((100% - var(--_inset) * 2) / var(--_count));inset-block-start:var(--_inset);inset-inline-start:var(--_inset);pointer-events:none;position:absolute;transition:opacity var(--slotted-control-transition-duration) var(--slotted-easing-standard),translate var(--_travel) var(--slotted-easing-standard);translate:calc(var(--_index) * 100%);z-index:0}@starting-style{[data-ui=segmented-control] [data-part=indicator]{opacity:0}}[data-ui=segmented-control] [data-part=indicator]:dir(rtl){translate:calc(var(--_index) * -100%)}[data-ui=segmented-control][data-part=root][data-orientation=vertical] [data-part=indicator]{block-size:calc((100% - var(--_inset) * 2) / var(--_count));inline-size:calc(100% - var(--_inset) * 2);translate:0 calc(var(--_index) * 100%)}[data-ui=segmented-control] [data-part=item][data-checked]{color:var( --slotted-segmented-control-checked-color, var(--slotted-tone-accent-text, HighlightText) )}[data-ui=segmented-control][data-part=root]:not([data-readonly]) [data-part=item]:hover:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled){background:var( --slotted-segmented-control-hover-background, var(--slotted-tone-secondary-subtle-hover, ButtonFace) )}[data-ui=segmented-control][data-part=root]:not([data-readonly]) [data-part=item]:active:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled){background:var( --slotted-segmented-control-active-background, var(--slotted-tone-secondary-subtle-active, ButtonFace) );transition-duration:var(--slotted-duration-instant)}[data-ui=segmented-control] [data-part=item]:has([data-part=control]:focus-visible){outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-width, 2px));z-index:2}[data-ui=segmented-control] [data-part=control]:focus-visible{outline:none}[data-ui=segmented-control][data-part=root][data-invalid]{--slotted-focus-ring-color: var( --slotted-segmented-control-invalid-focus-ring-color, var(--slotted-focus-ring-color-invalid, Highlight) );border-color:var( --slotted-segmented-control-invalid-border-color, var(--slotted-tone-danger-border, ButtonBorder) );--_invalid-edge-width: var( --slotted-segmented-control-invalid-edge-width, var(--slotted-control-invalid-edge-width, 1px) );box-shadow:inset 0 0 0 var(--_invalid-edge-width) var( --slotted-segmented-control-invalid-border-color, var(--slotted-tone-danger-border, ButtonBorder) )}[data-ui=segmented-control][data-part=root][data-readonly] [data-part=item],[data-ui=segmented-control][data-part=root][data-readonly] [data-part=control]{cursor:default}[data-ui=segmented-control] [data-part=item][data-disabled]{color:var( --slotted-segmented-control-disabled-color, var(--slotted-disabled-foreground, GrayText) );cursor:default}[data-ui=segmented-control] [data-part=control]:disabled{cursor:default}[data-ui=segmented-control][data-part=root][data-disabled]{border-color:var( --slotted-segmented-control-disabled-border-color, var(--slotted-disabled-border, GrayText) )}[data-ui=segmented-control][data-part=root][data-disabled] [data-part=indicator]{background:var( --slotted-segmented-control-disabled-indicator-background, var(--slotted-disabled-background, ButtonFace) );border-color:var( --slotted-segmented-control-disabled-border-color, var(--slotted-disabled-border, GrayText) );box-shadow:none}[data-ui=segmented-control][data-part=root][data-variant=underline]{--_inner: var(--_height);background:none;border:0;border-radius:0;box-shadow:none;column-gap:var(--slotted-segmented-control-underline-gap, var(--slotted-space-6, 1rem));grid-auto-columns:auto;padding:0}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=indicator],[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item]+[data-part=item]:before{display:none}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item]{color:var(--slotted-segmented-control-underline-color, var(--slotted-text-muted, GrayText));font-weight:var(--slotted-font-weight-medium, 500);min-inline-size:var(--slotted-target-min, 24px);padding-inline:0}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item][data-checked]{color:var( --slotted-segmented-control-underline-checked-color, var(--slotted-text, CanvasText) )}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item][data-checked] [data-part=label]{text-decoration-color:currentColor;text-decoration-line:underline;text-decoration-thickness:var(--slotted-border-width-thick, 2px);text-underline-offset:.35em}[data-ui=segmented-control][data-part=root][data-variant=underline][data-invalid] [data-part=item][data-checked] [data-part=label]{text-decoration-color:var(--slotted-tone-danger-border, CanvasText)}[data-ui=segmented-control][data-part=root][data-variant=underline]:not([data-readonly]) [data-part=item]:hover:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled),[data-ui=segmented-control][data-part=root][data-variant=underline]:not([data-readonly]) [data-part=item]:active:not([data-disabled]):not([data-checked]):has([data-part=control]:enabled){background:none;color:var(--slotted-text, CanvasText)}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item]:has([data-part=control]:focus-visible){outline-offset:var(--slotted-focus-ring-offset, 2px)}[data-ui=segmented-control][data-part=root][data-variant=underline] [data-part=item][data-disabled]{color:var(--slotted-disabled-foreground, GrayText)}@container slotted-segmented-control (max-inline-size: 20rem){[data-ui=segmented-control][data-part=root][data-condense=icons] [data-part=item]:has([data-part=icon]) [data-part=label]{block-size:1px;clip-path:inset(50%);inline-size:1px;overflow:hidden;position:absolute;white-space:nowrap}[data-ui=segmented-control][data-part=root][data-condense=icons] [data-part=item]:has([data-part=icon]){padding-inline:0}}@media(forced-colors:active){[data-ui=segmented-control][data-part=root][data-invalid]{outline:var(--_invalid-edge-width) solid CanvasText;outline-offset:calc(-1 * (var(--_border-width) + var(--_invalid-edge-width)))}}}\n"] }]
|
|
319
|
+
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], condense: [{ type: i0.Input, args: [{ isSignal: true, alias: "condense", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
|
|
300
320
|
|
|
301
321
|
/**
|
|
302
322
|
* The mark a segment is drawn with, on the consumer's own element.
|