@ojiepermana/angular 22.1.10 → 22.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -26
- package/chart/README.md +272 -0
- package/component/README.md +89 -0
- package/component/accordion/README.md +195 -0
- package/component/alert/README.md +184 -0
- package/component/alert-dialog/README.md +255 -0
- package/component/aspect-ratio/README.md +116 -0
- package/component/avatar/README.md +182 -0
- package/component/badge/README.md +143 -0
- package/component/breadcrumb/README.md +223 -0
- package/component/button/README.md +141 -0
- package/component/button-group/README.md +214 -0
- package/component/calendar/README.md +137 -0
- package/component/card/README.md +232 -0
- package/component/carousel/README.md +276 -0
- package/component/checkbox/README.md +153 -0
- package/component/collapsible/README.md +216 -0
- package/component/combobox/README.md +202 -0
- package/component/command/README.md +287 -0
- package/component/composer/README.md +241 -0
- package/component/context-menu/README.md +268 -0
- package/component/date-picker/README.md +202 -0
- package/component/dialog/README.md +276 -0
- package/component/drawer/README.md +147 -0
- package/component/dropdown-menu/README.md +336 -0
- package/component/editor/README.md +152 -0
- package/component/empty/README.md +193 -0
- package/component/form/README.md +216 -0
- package/component/hover-card/README.md +150 -0
- package/component/icon/README.md +25 -0
- package/component/input/README.md +160 -0
- package/component/input-group/README.md +245 -0
- package/component/input-otp/README.md +331 -0
- package/component/item/README.md +254 -0
- package/component/kanban/README.md +81 -0
- package/component/kbd/README.md +141 -0
- package/component/label/README.md +137 -0
- package/component/menubar/README.md +270 -0
- package/component/native-select/README.md +176 -0
- package/component/navigation-menu/README.md +165 -0
- package/component/pagination/README.md +151 -0
- package/component/pillbox/README.md +68 -0
- package/component/popover/README.md +54 -0
- package/component/progress/README.md +160 -0
- package/component/radio/README.md +212 -0
- package/component/resizable/README.md +178 -0
- package/component/scroll-area/README.md +150 -0
- package/component/select/README.md +228 -0
- package/component/separator/README.md +175 -0
- package/component/sheet/README.md +190 -0
- package/component/skeleton/README.md +158 -0
- package/component/slider/README.md +207 -0
- package/component/spinner/README.md +160 -0
- package/component/switch/README.md +170 -0
- package/component/table/README.md +292 -0
- package/component/tabs/README.md +220 -0
- package/component/textarea/README.md +169 -0
- package/component/timeline/README.md +94 -0
- package/component/toast/README.md +173 -0
- package/component/toggle/README.md +133 -0
- package/component/toggle-group/README.md +234 -0
- package/component/tooltip/README.md +230 -0
- package/fesm2022/ojiepermana-angular-chart-area.mjs +289 -3
- package/fesm2022/ojiepermana-angular-chart-bar.mjs +722 -3
- package/fesm2022/ojiepermana-angular-chart-core.mjs +1482 -3
- package/fesm2022/ojiepermana-angular-chart-line.mjs +294 -3
- package/fesm2022/ojiepermana-angular-chart-pie.mjs +291 -3
- package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1301 -3
- package/fesm2022/ojiepermana-angular-chart-radar.mjs +421 -3
- package/fesm2022/ojiepermana-angular-chart-radial.mjs +295 -3
- package/fesm2022/ojiepermana-angular-chart-scatter.mjs +306 -3
- package/fesm2022/ojiepermana-angular-chart.mjs +12 -3
- package/fesm2022/ojiepermana-angular-component-accordion.mjs +267 -3
- package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +359 -3
- package/fesm2022/ojiepermana-angular-component-alert.mjs +101 -3
- package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +31 -3
- package/fesm2022/ojiepermana-angular-component-avatar.mjs +139 -3
- package/fesm2022/ojiepermana-angular-component-badge.mjs +57 -3
- package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +192 -3
- package/fesm2022/ojiepermana-angular-component-button-group.mjs +95 -3
- package/fesm2022/ojiepermana-angular-component-button.mjs +73 -3
- package/fesm2022/ojiepermana-angular-component-calendar.mjs +718 -3
- package/fesm2022/ojiepermana-angular-component-card.mjs +167 -3
- package/fesm2022/ojiepermana-angular-component-carousel.mjs +326 -3
- package/fesm2022/ojiepermana-angular-component-checkbox.mjs +190 -3
- package/fesm2022/ojiepermana-angular-component-collapsible.mjs +117 -3
- package/fesm2022/ojiepermana-angular-component-combobox.mjs +327 -3
- package/fesm2022/ojiepermana-angular-component-command.mjs +351 -3
- package/fesm2022/ojiepermana-angular-component-composer.mjs +359 -3
- package/fesm2022/ojiepermana-angular-component-context-menu.mjs +158 -3
- package/fesm2022/ojiepermana-angular-component-date-picker.mjs +482 -3
- package/fesm2022/ojiepermana-angular-component-dialog.mjs +400 -3
- package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -3
- package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +689 -3
- package/fesm2022/ojiepermana-angular-component-editor.mjs +511 -3
- package/fesm2022/ojiepermana-angular-component-empty.mjs +134 -3
- package/fesm2022/ojiepermana-angular-component-form.mjs +438 -3
- package/fesm2022/ojiepermana-angular-component-hover-card.mjs +273 -3
- package/fesm2022/ojiepermana-angular-component-icon.mjs +139 -3
- package/fesm2022/ojiepermana-angular-component-input-group.mjs +176 -3
- package/fesm2022/ojiepermana-angular-component-input-otp.mjs +550 -3
- package/fesm2022/ojiepermana-angular-component-input.mjs +52 -3
- package/fesm2022/ojiepermana-angular-component-item.mjs +264 -3
- package/fesm2022/ojiepermana-angular-component-kanban.mjs +310 -3
- package/fesm2022/ojiepermana-angular-component-kbd.mjs +48 -3
- package/fesm2022/ojiepermana-angular-component-label.mjs +27 -3
- package/fesm2022/ojiepermana-angular-component-menubar.mjs +327 -3
- package/fesm2022/ojiepermana-angular-component-native-select.mjs +62 -3
- package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +378 -3
- package/fesm2022/ojiepermana-angular-component-pagination.mjs +238 -3
- package/fesm2022/ojiepermana-angular-component-pillbox.mjs +999 -3
- package/fesm2022/ojiepermana-angular-component-popover.mjs +201 -3
- package/fesm2022/ojiepermana-angular-component-progress.mjs +57 -3
- package/fesm2022/ojiepermana-angular-component-radio.mjs +180 -3
- package/fesm2022/ojiepermana-angular-component-resizable.mjs +493 -3
- package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +51 -3
- package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +227 -3
- package/fesm2022/ojiepermana-angular-component-select.mjs +609 -3
- package/fesm2022/ojiepermana-angular-component-separator.mjs +31 -3
- package/fesm2022/ojiepermana-angular-component-sheet.mjs +407 -3
- package/fesm2022/ojiepermana-angular-component-skeleton.mjs +25 -3
- package/fesm2022/ojiepermana-angular-component-slider.mjs +456 -3
- package/fesm2022/ojiepermana-angular-component-spinner.mjs +56 -3
- package/fesm2022/ojiepermana-angular-component-switch.mjs +145 -3
- package/fesm2022/ojiepermana-angular-component-table.mjs +155 -3
- package/fesm2022/ojiepermana-angular-component-tabs.mjs +315 -3
- package/fesm2022/ojiepermana-angular-component-textarea.mjs +46 -3
- package/fesm2022/ojiepermana-angular-component-timeline.mjs +237 -3
- package/fesm2022/ojiepermana-angular-component-toast.mjs +241 -3
- package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +290 -3
- package/fesm2022/ojiepermana-angular-component-toggle.mjs +76 -3
- package/fesm2022/ojiepermana-angular-component-tooltip.mjs +519 -3
- package/fesm2022/ojiepermana-angular-component-utils-core.mjs +310 -3
- package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +62 -3
- package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +34 -3
- package/fesm2022/ojiepermana-angular-component-utils.mjs +3 -2
- package/fesm2022/ojiepermana-angular-component.mjs +4 -4
- package/fesm2022/ojiepermana-angular-navigation-core.mjs +21 -3
- package/fesm2022/ojiepermana-angular-navigation-icon.mjs +20 -3
- package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-CDBxQ8rk.mjs +91 -0
- package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DBQHdvGa.mjs +512 -0
- package/fesm2022/ojiepermana-angular-navigation-navigation-entry-grid.component-Cd-jh6tg.mjs +623 -0
- package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BCGvhoYj.mjs +404 -0
- package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-Dk_03e-6.mjs +466 -0
- package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-DNKU6viC.mjs +2642 -0
- package/fesm2022/ojiepermana-angular-navigation-service.mjs +725 -3
- package/fesm2022/ojiepermana-angular-navigation-types.mjs +65 -4
- package/fesm2022/ojiepermana-angular-navigation.mjs +4 -10
- package/fesm2022/ojiepermana-angular-sdk.mjs +204 -4
- package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1387 -3
- package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +331 -3
- package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +45 -4
- package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1044 -3
- package/fesm2022/ojiepermana-angular-theme-layout.mjs +729 -3
- package/fesm2022/ojiepermana-angular-theme-page-core.mjs +381 -3
- package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +267 -3
- package/fesm2022/ojiepermana-angular-theme-page-root.mjs +361 -3
- package/fesm2022/ojiepermana-angular-theme-page-side.mjs +198 -3
- package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +110 -3
- package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -2
- package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +338 -3
- package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +160 -4
- package/fesm2022/ojiepermana-angular-theme-shell.mjs +811 -3
- package/fesm2022/ojiepermana-angular-theme-styles.mjs +783 -3
- package/fesm2022/ojiepermana-angular-theme.mjs +4 -4
- package/fesm2022/ojiepermana-angular.mjs +6 -11
- package/navigation/README.md +374 -0
- package/package.json +81 -20
- package/sdk/README.md +212 -0
- package/sdk/schematics/collection.json +20 -0
- package/sdk/schematics/init/index.js +83 -0
- package/sdk/schematics/init/schema.json +19 -0
- package/sdk/schematics/ng-add/index.js +147 -0
- package/sdk/schematics/ng-add/schema.json +14 -0
- package/sdk/schematics/package.json +3 -0
- package/sdk/schematics/sdk/index.js +175 -0
- package/sdk/schematics/sdk/schema.json +19 -0
- package/sdk/sdk.config.example.json +24 -0
- package/sdk/src/config/loader.js +43 -0
- package/sdk/src/config/schema.js +59 -0
- package/sdk/src/emit/client.js +251 -0
- package/sdk/src/emit/metadata.js +310 -0
- package/sdk/src/emit/models.js +104 -0
- package/sdk/src/emit/navigation.js +56 -0
- package/sdk/src/emit/operations.js +118 -0
- package/sdk/src/emit/public-api.js +54 -0
- package/sdk/src/emit/services.js +110 -0
- package/sdk/src/engine.js +67 -0
- package/sdk/src/layout/per-domain.js +360 -0
- package/sdk/src/package.json +3 -0
- package/sdk/src/parser/bundle.js +25 -0
- package/sdk/src/parser/ir.js +429 -0
- package/sdk/src/parser/types.js +7 -0
- package/sdk/src/render/template.js +152 -0
- package/sdk/src/writer/index.js +286 -0
- package/theme/README.md +126 -0
- package/theme/component/settings/README.md +135 -0
- package/theme/layout/README.md +539 -0
- package/theme/page/README.md +453 -0
- package/theme/shell/README.md +340 -0
- package/theme/styles/README.md +178 -0
- package/theme/styles/css/base/components.css +553 -0
- package/theme/styles/css/base/index.css +14 -0
- package/theme/styles/css/base/package.css +9 -0
- package/theme/styles/css/base/prefers-dark.css +86 -0
- package/theme/styles/css/base/print.css +62 -0
- package/theme/styles/css/base/status.css +38 -0
- package/theme/styles/css/base/tailwind.css +165 -0
- package/theme/styles/css/base/theme.css +373 -0
- package/theme/styles/css/base/tokens.css +361 -0
- package/theme/styles/css/color/amber.css +72 -0
- package/theme/styles/css/color/blue.css +72 -0
- package/theme/styles/css/color/brand.css +38 -0
- package/theme/styles/css/color/cyan.css +72 -0
- package/theme/styles/css/color/emerald.css +72 -0
- package/theme/styles/css/color/fuchsia.css +72 -0
- package/theme/styles/css/color/green.css +72 -0
- package/theme/styles/css/color/index.css +19 -0
- package/theme/styles/css/color/indigo.css +72 -0
- package/theme/styles/css/color/lime.css +72 -0
- package/theme/styles/css/color/orange.css +72 -0
- package/theme/styles/css/color/pink.css +72 -0
- package/theme/styles/css/color/purple.css +72 -0
- package/theme/styles/css/color/red.css +72 -0
- package/theme/styles/css/color/rose.css +72 -0
- package/theme/styles/css/color/sky.css +72 -0
- package/theme/styles/css/color/teal.css +72 -0
- package/theme/styles/css/color/violet.css +72 -0
- package/theme/styles/css/color/yellow.css +72 -0
- package/theme/styles/css/index.css +18 -0
- package/theme/styles/css/neutral/gray.css +63 -0
- package/theme/styles/css/neutral/index.css +11 -0
- package/theme/styles/css/neutral/mauve.css +63 -0
- package/theme/styles/css/neutral/mist.css +63 -0
- package/theme/styles/css/neutral/neutral.css +63 -0
- package/theme/styles/css/neutral/olive.css +63 -0
- package/theme/styles/css/neutral/slate.css +63 -0
- package/theme/styles/css/neutral/stone.css +63 -0
- package/theme/styles/css/neutral/taupe.css +63 -0
- package/theme/styles/css/neutral/zinc.css +63 -0
- package/theme/styles/css/radius/index.css +30 -0
- package/theme/styles/css/space/index.css +20 -0
- package/types/ojiepermana-angular-chart-area.d.ts +76 -1
- package/types/ojiepermana-angular-chart-bar.d.ts +201 -1
- package/types/ojiepermana-angular-chart-core.d.ts +811 -1
- package/types/ojiepermana-angular-chart-line.d.ts +75 -1
- package/types/ojiepermana-angular-chart-pie.d.ts +131 -1
- package/types/ojiepermana-angular-chart-primitives.d.ts +291 -1
- package/types/ojiepermana-angular-chart-radar.d.ts +116 -1
- package/types/ojiepermana-angular-chart-radial.d.ts +116 -1
- package/types/ojiepermana-angular-chart-scatter.d.ts +125 -1
- package/types/ojiepermana-angular-chart.d.ts +2 -1
- package/types/ojiepermana-angular-component-accordion.d.ts +85 -1
- package/types/ojiepermana-angular-component-alert-dialog.d.ts +140 -1
- package/types/ojiepermana-angular-component-alert.d.ts +42 -1
- package/types/ojiepermana-angular-component-aspect-ratio.d.ts +12 -1
- package/types/ojiepermana-angular-component-avatar.d.ts +56 -1
- package/types/ojiepermana-angular-component-badge.d.ts +24 -1
- package/types/ojiepermana-angular-component-breadcrumb.d.ts +46 -1
- package/types/ojiepermana-angular-component-button-group.d.ts +26 -1
- package/types/ojiepermana-angular-component-button.d.ts +27 -1
- package/types/ojiepermana-angular-component-calendar.d.ts +111 -1
- package/types/ojiepermana-angular-component-card.d.ts +69 -1
- package/types/ojiepermana-angular-component-carousel.d.ts +86 -1
- package/types/ojiepermana-angular-component-checkbox.d.ts +42 -1
- package/types/ojiepermana-angular-component-collapsible.d.ts +42 -1
- package/types/ojiepermana-angular-component-combobox.d.ts +60 -1
- package/types/ojiepermana-angular-component-command.d.ts +130 -1
- package/types/ojiepermana-angular-component-composer.d.ts +90 -1
- package/types/ojiepermana-angular-component-context-menu.d.ts +54 -1
- package/types/ojiepermana-angular-component-date-picker.d.ts +109 -1
- package/types/ojiepermana-angular-component-dialog.d.ts +136 -1
- package/types/ojiepermana-angular-component-drawer.d.ts +1 -1
- package/types/ojiepermana-angular-component-dropdown-menu.d.ts +248 -1
- package/types/ojiepermana-angular-component-editor.d.ts +135 -1
- package/types/ojiepermana-angular-component-empty.d.ts +50 -1
- package/types/ojiepermana-angular-component-form.d.ts +159 -1
- package/types/ojiepermana-angular-component-hover-card.d.ts +75 -1
- package/types/ojiepermana-angular-component-icon.d.ts +89 -1
- package/types/ojiepermana-angular-component-input-group.d.ts +51 -1
- package/types/ojiepermana-angular-component-input-otp.d.ts +155 -1
- package/types/ojiepermana-angular-component-input.d.ts +21 -1
- package/types/ojiepermana-angular-component-item.d.ts +93 -1
- package/types/ojiepermana-angular-component-kanban.d.ts +70 -1
- package/types/ojiepermana-angular-component-kbd.d.ts +16 -1
- package/types/ojiepermana-angular-component-label.d.ts +11 -1
- package/types/ojiepermana-angular-component-menubar.d.ts +93 -1
- package/types/ojiepermana-angular-component-native-select.d.ts +26 -1
- package/types/ojiepermana-angular-component-navigation-menu.d.ts +104 -1
- package/types/ojiepermana-angular-component-pagination.d.ts +33 -1
- package/types/ojiepermana-angular-component-pillbox.d.ts +222 -1
- package/types/ojiepermana-angular-component-popover.d.ts +66 -1
- package/types/ojiepermana-angular-component-progress.d.ts +17 -1
- package/types/ojiepermana-angular-component-radio.d.ts +60 -1
- package/types/ojiepermana-angular-component-resizable.d.ts +117 -1
- package/types/ojiepermana-angular-component-scroll-area.d.ts +19 -1
- package/types/ojiepermana-angular-component-segmented-control.d.ts +58 -1
- package/types/ojiepermana-angular-component-select.d.ts +122 -1
- package/types/ojiepermana-angular-component-separator.d.ts +14 -1
- package/types/ojiepermana-angular-component-sheet.d.ts +130 -1
- package/types/ojiepermana-angular-component-skeleton.d.ts +10 -1
- package/types/ojiepermana-angular-component-slider.d.ts +83 -1
- package/types/ojiepermana-angular-component-spinner.d.ts +13 -1
- package/types/ojiepermana-angular-component-switch.d.ts +44 -1
- package/types/ojiepermana-angular-component-table.d.ts +57 -1
- package/types/ojiepermana-angular-component-tabs.d.ts +124 -1
- package/types/ojiepermana-angular-component-textarea.d.ts +17 -1
- package/types/ojiepermana-angular-component-timeline.d.ts +64 -1
- package/types/ojiepermana-angular-component-toast.d.ts +64 -1
- package/types/ojiepermana-angular-component-toggle-group.d.ts +90 -1
- package/types/ojiepermana-angular-component-toggle.d.ts +25 -1
- package/types/ojiepermana-angular-component-tooltip.d.ts +143 -1
- package/types/ojiepermana-angular-component-utils-core.d.ts +184 -1
- package/types/ojiepermana-angular-component-utils-overlay.d.ts +21 -1
- package/types/ojiepermana-angular-component-utils-scale.d.ts +19 -1
- package/types/ojiepermana-angular-component-utils.d.ts +2 -1
- package/types/ojiepermana-angular-component.d.ts +2 -1
- package/types/ojiepermana-angular-navigation-core.d.ts +59 -1
- package/types/ojiepermana-angular-navigation-icon.d.ts +12 -1
- package/types/ojiepermana-angular-navigation-service.d.ts +116 -1
- package/types/ojiepermana-angular-navigation-types.d.ts +144 -1
- package/types/ojiepermana-angular-navigation.d.ts +507 -1
- package/types/ojiepermana-angular-sdk.d.ts +89 -1
- package/types/ojiepermana-angular-theme-component-settings.d.ts +154 -1
- package/types/ojiepermana-angular-theme-layout-services.d.ts +147 -1
- package/types/ojiepermana-angular-theme-layout-types.d.ts +40 -1
- package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +299 -1
- package/types/ojiepermana-angular-theme-layout.d.ts +129 -1
- package/types/ojiepermana-angular-theme-page-core.d.ts +157 -1
- package/types/ojiepermana-angular-theme-page-filter.d.ts +77 -1
- package/types/ojiepermana-angular-theme-page-root.d.ts +88 -1
- package/types/ojiepermana-angular-theme-page-side.d.ts +50 -1
- package/types/ojiepermana-angular-theme-page-slots.d.ts +40 -1
- package/types/ojiepermana-angular-theme-page.d.ts +5 -1
- package/types/ojiepermana-angular-theme-shell-services.d.ts +193 -1
- package/types/ojiepermana-angular-theme-shell-types.d.ts +105 -1
- package/types/ojiepermana-angular-theme-shell.d.ts +100 -1
- package/types/ojiepermana-angular-theme-styles.d.ts +319 -1
- package/types/ojiepermana-angular-theme.d.ts +2 -1
- package/types/ojiepermana-angular.d.ts +5 -5
|
@@ -1 +1,154 @@
|
|
|
1
|
-
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken, Signal, Provider, EnvironmentProviders } from '@angular/core';
|
|
3
|
+
import * as _ojiepermana_angular_theme_component_settings from '@ojiepermana/angular/theme/component/settings';
|
|
4
|
+
import { DrawerSide } from '@ojiepermana/angular/component/drawer';
|
|
5
|
+
import { LayoutAppearance, LayoutSurface, LayoutType, LayoutWidth } from '@ojiepermana/angular/theme/layout/types';
|
|
6
|
+
import { NavigationType } from '@ojiepermana/angular/navigation/types';
|
|
7
|
+
import { ShellMode } from '@ojiepermana/angular/theme/shell/types';
|
|
8
|
+
|
|
9
|
+
/** Native control styling exposed by the settings trigger. */
|
|
10
|
+
type ThemeSettingsTrigger = 'button' | 'link';
|
|
11
|
+
/** A navigation-aligned, right-side inspector for runtime theme and shell settings. */
|
|
12
|
+
declare class ThemeSettingsComponent {
|
|
13
|
+
/**
|
|
14
|
+
* Present only when the app provided an adapter. It is a render gate here: the
|
|
15
|
+
* Layout and Navigation sections inject the token non-optionally, so a
|
|
16
|
+
* theme-only consumer simply gets the Theme and Shell sections.
|
|
17
|
+
*/
|
|
18
|
+
protected readonly settings: _ojiepermana_angular_theme_component_settings.ThemeSettingsAdapter | null;
|
|
19
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
20
|
+
readonly trigger: _angular_core.InputSignal<ThemeSettingsTrigger>;
|
|
21
|
+
readonly triggerLabel: _angular_core.InputSignal<string>;
|
|
22
|
+
readonly triggerIconOnly: _angular_core.InputSignal<boolean>;
|
|
23
|
+
readonly showTrigger: _angular_core.InputSignal<boolean>;
|
|
24
|
+
readonly side: _angular_core.InputSignal<DrawerSide>;
|
|
25
|
+
readonly class: _angular_core.InputSignal<string>;
|
|
26
|
+
protected readonly triggerClasses: _angular_core.Signal<string>;
|
|
27
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeSettingsComponent, never>;
|
|
28
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThemeSettingsComponent, "ThemeSettings", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; "triggerIconOnly": { "alias": "trigger-icon-only"; "required": false; "isSignal": true; }; "showTrigger": { "alias": "show-trigger"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, never, true, never>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Navigation choices exposed by an application shell.
|
|
33
|
+
*
|
|
34
|
+
* `desktop` is intentionally not part of the navigation primitive's
|
|
35
|
+
* `NavigationType`: it does not register a fifth navigation renderer. It tells
|
|
36
|
+
* the horizontal desktop shell to use its native titlebar and render the
|
|
37
|
+
* content-focused path used by an empty layout.
|
|
38
|
+
*/
|
|
39
|
+
type ThemeSettingsNavigationType = NavigationType | 'desktop';
|
|
40
|
+
/**
|
|
41
|
+
* The presentation modes meaningful to the currently selected navigation type.
|
|
42
|
+
* Sidebar uses `default`/`collapsed`; dockbar uses `default` (sticky) / `drawer`.
|
|
43
|
+
*/
|
|
44
|
+
type ThemeSettingsNavigationMode = 'default' | 'collapsed' | 'drawer';
|
|
45
|
+
/**
|
|
46
|
+
* Optional consumer bridge for the layout and navigation portions of
|
|
47
|
+
* `ThemeSettings`. Keeping this contract at the edge lets the component remain
|
|
48
|
+
* portable: theme-only consumers do not need to provide application shell state.
|
|
49
|
+
*/
|
|
50
|
+
interface ThemeSettingsAdapter {
|
|
51
|
+
readonly appearance: Signal<LayoutAppearance>;
|
|
52
|
+
readonly surface: Signal<LayoutSurface>;
|
|
53
|
+
readonly layoutType: Signal<LayoutType>;
|
|
54
|
+
readonly width: Signal<LayoutWidth>;
|
|
55
|
+
readonly navType: Signal<ThemeSettingsNavigationType>;
|
|
56
|
+
readonly navTypeMode: Signal<ThemeSettingsNavigationMode>;
|
|
57
|
+
setAppearance(value: LayoutAppearance): void;
|
|
58
|
+
setSurface(value: LayoutSurface): void;
|
|
59
|
+
setLayoutType(value: LayoutType): void;
|
|
60
|
+
setWidth(value: LayoutWidth): void;
|
|
61
|
+
setNavType(value: ThemeSettingsNavigationType): void;
|
|
62
|
+
setNavTypeMode(value: ThemeSettingsNavigationMode): void;
|
|
63
|
+
}
|
|
64
|
+
/** Provide this from an application's persisted layout-settings facade. */
|
|
65
|
+
declare const THEME_SETTINGS_ADAPTER: InjectionToken<ThemeSettingsAdapter>;
|
|
66
|
+
|
|
67
|
+
/** Storage key for the persisted navigation type. Owned by the package. */
|
|
68
|
+
declare const NAV_TYPE_STORAGE_KEY = "nav-type";
|
|
69
|
+
/** Storage key for the persisted navigation presentation mode. Owned by the package. */
|
|
70
|
+
declare const NAV_TYPE_MODE_STORAGE_KEY = "nav-type-mode";
|
|
71
|
+
/**
|
|
72
|
+
* Nav types valid for a layout/shell pair — mirrors `LayoutWrapperDefault`
|
|
73
|
+
* (`navbar`/`flyout` → web horizontal, `sidebar`/`dockbar` → vertical).
|
|
74
|
+
* A desktop-mode horizontal shell owns exactly one navigation shape: `desktop`.
|
|
75
|
+
* `empty` and `fluid` shells are brand-only, so no nav type applies.
|
|
76
|
+
*/
|
|
77
|
+
declare function allowedNavTypes(layoutType: LayoutType, shellMode: ShellMode): readonly ThemeSettingsNavigationType[];
|
|
78
|
+
/**
|
|
79
|
+
* Presentation modes meaningful to a navigation type: sidebar collapses, dockbar
|
|
80
|
+
* turns into a drawer, and every other type has one presentation only.
|
|
81
|
+
*/
|
|
82
|
+
declare function allowedNavTypeModes(navType: ThemeSettingsNavigationType): readonly ThemeSettingsNavigationMode[];
|
|
83
|
+
/** `fluid` width only has an effect when the layout type is also `fluid`. */
|
|
84
|
+
declare function isWidthEnabled(layoutType: LayoutType, width: LayoutWidth): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Default `ThemeSettingsAdapter`: the axis coherence rules that make runtime
|
|
87
|
+
* layout and navigation switching safe, published so every consumer shares one
|
|
88
|
+
* tested implementation instead of copying it.
|
|
89
|
+
*
|
|
90
|
+
* - `surface` / `appearance` / `width` delegate to the library `LayoutService`
|
|
91
|
+
* (already reactive and persisted, with no nav-derived override to drift from).
|
|
92
|
+
* - `layoutType` / `navType` / `navTypeMode` are owned here: `<Layout>` writes
|
|
93
|
+
* `type` back to the service (`persist: false`) to follow nav orientation, so
|
|
94
|
+
* reading `layout.type()` would drift from the operator's choice. Nav type is
|
|
95
|
+
* not `LayoutService` territory at all.
|
|
96
|
+
*
|
|
97
|
+
* Incoherent axis pairs auto-correct, so the shell never renders an impossible
|
|
98
|
+
* state. Only presentation choices are stored, never identity or session data,
|
|
99
|
+
* and storage that is unavailable or holds a foreign value falls back to the
|
|
100
|
+
* default without throwing.
|
|
101
|
+
*
|
|
102
|
+
* Install with {@link provideThemeSettingsAdapter}.
|
|
103
|
+
*/
|
|
104
|
+
declare class ThemeSettingsDefaultAdapter implements ThemeSettingsAdapter {
|
|
105
|
+
private readonly platformId;
|
|
106
|
+
private readonly storage;
|
|
107
|
+
private readonly layout;
|
|
108
|
+
private readonly shell;
|
|
109
|
+
readonly surface: _angular_core.Signal<"flat" | "grid" | "grid-line" | "honeycomb" | "matrix" | "circuit" | "line-vertical" | "line-horizontal">;
|
|
110
|
+
readonly appearance: _angular_core.Signal<"flat" | "border-rail">;
|
|
111
|
+
readonly width: _angular_core.Signal<"fluid" | "full" | "wide" | "container">;
|
|
112
|
+
private readonly layoutTypeState;
|
|
113
|
+
private readonly navTypeState;
|
|
114
|
+
private readonly navTypeModeState;
|
|
115
|
+
readonly layoutType: _angular_core.Signal<"vertical" | "horizontal" | "empty" | "fluid">;
|
|
116
|
+
readonly navType: _angular_core.Signal<ThemeSettingsNavigationType>;
|
|
117
|
+
readonly navTypeMode: _angular_core.Signal<ThemeSettingsNavigationMode>;
|
|
118
|
+
/** Shell mode the nav-type constraints are resolved against. */
|
|
119
|
+
readonly shellMode: _angular_core.Signal<"desktop" | "web" | "tablet" | "mobile">;
|
|
120
|
+
constructor();
|
|
121
|
+
setSurface(surface: LayoutSurface): void;
|
|
122
|
+
setAppearance(appearance: LayoutAppearance): void;
|
|
123
|
+
setWidth(width: LayoutWidth): void;
|
|
124
|
+
setLayoutType(type: LayoutType): void;
|
|
125
|
+
setNavType(type: ThemeSettingsNavigationType): void;
|
|
126
|
+
setNavTypeMode(mode: ThemeSettingsNavigationMode): void;
|
|
127
|
+
/**
|
|
128
|
+
* Auto-correct the lower-priority axes a layout type invalidates, so the
|
|
129
|
+
* rendered shell never lands in an inconsistent state (e.g. `vertical` +
|
|
130
|
+
* `navbar`). Idempotent — only writes when a value is actually out of range.
|
|
131
|
+
*/
|
|
132
|
+
private enforceConstraints;
|
|
133
|
+
private enforceNavTypeMode;
|
|
134
|
+
private readStoredNavType;
|
|
135
|
+
private readStoredNavTypeMode;
|
|
136
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeSettingsDefaultAdapter, never>;
|
|
137
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeSettingsDefaultAdapter>;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Install the published {@link ThemeSettingsDefaultAdapter} on
|
|
141
|
+
* `THEME_SETTINGS_ADAPTER`, which turns on the layout and navigation sections of
|
|
142
|
+
* `<ThemeSettings>`:
|
|
143
|
+
*
|
|
144
|
+
* ```ts
|
|
145
|
+
* providers: [provideThemeSettingsAdapter()];
|
|
146
|
+
* ```
|
|
147
|
+
*
|
|
148
|
+
* Additive: consumers that provide their own adapter, or none at all, are
|
|
149
|
+
* unaffected.
|
|
150
|
+
*/
|
|
151
|
+
declare function provideThemeSettingsAdapter(): (Provider | EnvironmentProviders)[];
|
|
152
|
+
|
|
153
|
+
export { NAV_TYPE_MODE_STORAGE_KEY, NAV_TYPE_STORAGE_KEY, THEME_SETTINGS_ADAPTER, ThemeSettingsComponent, ThemeSettingsDefaultAdapter, allowedNavTypeModes, allowedNavTypes, isWidthEnabled, provideThemeSettingsAdapter };
|
|
154
|
+
export type { ThemeSettingsAdapter, ThemeSettingsNavigationMode, ThemeSettingsNavigationType, ThemeSettingsTrigger };
|
|
@@ -1 +1,147 @@
|
|
|
1
|
-
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { LayoutSurface, LayoutAppearance, LayoutType, LayoutWidth } from '@ojiepermana/angular/theme/layout/types';
|
|
3
|
+
import { HttpContextToken, HttpInterceptorFn } from '@angular/common/http';
|
|
4
|
+
|
|
5
|
+
interface LayoutMutationOptions {
|
|
6
|
+
persist?: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare class LayoutService {
|
|
9
|
+
private readonly platformId;
|
|
10
|
+
private readonly storage;
|
|
11
|
+
private readonly shell;
|
|
12
|
+
private readonly surfaceState;
|
|
13
|
+
private readonly typeState;
|
|
14
|
+
private readonly appearanceState;
|
|
15
|
+
private readonly widthState;
|
|
16
|
+
readonly surface: _angular_core.Signal<"flat" | "grid" | "grid-line" | "honeycomb" | "matrix" | "circuit" | "line-vertical" | "line-horizontal">;
|
|
17
|
+
readonly type: _angular_core.Signal<"vertical" | "horizontal" | "empty" | "fluid">;
|
|
18
|
+
readonly appearance: _angular_core.Signal<"flat" | "border-rail">;
|
|
19
|
+
/**
|
|
20
|
+
* `true` on every shell mode but `web`. An app that owns its whole surface has
|
|
21
|
+
* no page to be inset within, so the width axis is not the user's to choose
|
|
22
|
+
* there — see {@link LAYOUT_LOCKED_WIDTH}.
|
|
23
|
+
*/
|
|
24
|
+
readonly widthLocked: _angular_core.Signal<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* The width in effect. While `widthLocked()`, this reports the locked width and
|
|
27
|
+
* `widthState` keeps the user's own choice aside, so returning to `web` restores
|
|
28
|
+
* it instead of silently flattening it to `full`.
|
|
29
|
+
*/
|
|
30
|
+
readonly width: _angular_core.Signal<"fluid" | "full" | "wide" | "container">;
|
|
31
|
+
/** The stored preference, ignoring the lock. */
|
|
32
|
+
readonly preferredWidth: _angular_core.Signal<"fluid" | "full" | "wide" | "container">;
|
|
33
|
+
/**
|
|
34
|
+
* Seed several axes at once. See {@link registerSurface} for what "register"
|
|
35
|
+
* means here — an omitted axis is left exactly as it was.
|
|
36
|
+
*/
|
|
37
|
+
registerDefaults(defaults: {
|
|
38
|
+
surface?: LayoutSurface;
|
|
39
|
+
appearance?: LayoutAppearance;
|
|
40
|
+
type?: LayoutType;
|
|
41
|
+
width?: LayoutWidth;
|
|
42
|
+
}): this;
|
|
43
|
+
/**
|
|
44
|
+
* Seed the axis with a default, unless the user already stored a choice of
|
|
45
|
+
* their own — that one always wins.
|
|
46
|
+
*
|
|
47
|
+
* Registering deliberately does NOT persist. Storage is the record of what the
|
|
48
|
+
* USER picked, and writing a seeded default into it would make the two
|
|
49
|
+
* indistinguishable: a bare `<Layout>` would record a library default nobody
|
|
50
|
+
* asked for, and neither the library nor the consumer could ever change their
|
|
51
|
+
* own default again for anyone who had merely rendered the component once.
|
|
52
|
+
* Only {@link setSurface} and its siblings — the settings UI — write.
|
|
53
|
+
*/
|
|
54
|
+
registerSurface(surface: LayoutSurface): void;
|
|
55
|
+
/** Seeds the axis without persisting — see {@link registerSurface}. */
|
|
56
|
+
registerType(type: LayoutType): void;
|
|
57
|
+
/** Seeds the axis without persisting — see {@link registerSurface}. */
|
|
58
|
+
registerAppearance(appearance: LayoutAppearance): void;
|
|
59
|
+
/** Seeds the axis without persisting — see {@link registerSurface}. */
|
|
60
|
+
registerWidth(width: LayoutWidth): void;
|
|
61
|
+
setSurface(surface: LayoutSurface, options?: LayoutMutationOptions): void;
|
|
62
|
+
setType(type: LayoutType, options?: LayoutMutationOptions): void;
|
|
63
|
+
setAppearance(appearance: LayoutAppearance, options?: LayoutMutationOptions): void;
|
|
64
|
+
setWidth(width: LayoutWidth, options?: LayoutMutationOptions): void;
|
|
65
|
+
getStoredSurface(): LayoutSurface;
|
|
66
|
+
getStoredType(): LayoutType;
|
|
67
|
+
getStoredAppearance(): LayoutAppearance;
|
|
68
|
+
getStoredWidth(): LayoutWidth;
|
|
69
|
+
private readStoredAppearance;
|
|
70
|
+
private getStoredAppearanceOrDefault;
|
|
71
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutService, never>;
|
|
72
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutService>;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Progress the bar starts at, so the line is visibly moving the moment it appears. */
|
|
76
|
+
declare const LAYOUT_LOADING_INITIAL_PROGRESS = 8;
|
|
77
|
+
/** Batas atas progres trickle; sisanya menunggu seluruh pekerjaan selesai. */
|
|
78
|
+
declare const LAYOUT_LOADING_TRICKLE_CEILING = 90;
|
|
79
|
+
/** How often the trickle raises progress while work is still outstanding. */
|
|
80
|
+
declare const LAYOUT_LOADING_TRICKLE_INTERVAL_MS = 250;
|
|
81
|
+
/** Delay after progress reaches 100% before the bar is hidden, so the finish reads. */
|
|
82
|
+
declare const LAYOUT_LOADING_HIDE_DELAY_MS = 200;
|
|
83
|
+
/**
|
|
84
|
+
* Global loading tracker behind the progress line at the top of the viewport.
|
|
85
|
+
*
|
|
86
|
+
* It turns on by itself when the router starts a navigation and while an HTTP
|
|
87
|
+
* request runs through `layoutLoadingInterceptor`. Any other source — a manual
|
|
88
|
+
* data load, say — can join in through the ref-counted `start()`/`done()` pair.
|
|
89
|
+
*/
|
|
90
|
+
declare class LayoutLoadingService {
|
|
91
|
+
private readonly platformId;
|
|
92
|
+
private readonly router;
|
|
93
|
+
private readonly pendingCount;
|
|
94
|
+
private readonly activeState;
|
|
95
|
+
private readonly progressState;
|
|
96
|
+
/** The bar is on screen, including the short finish to 100%. */
|
|
97
|
+
readonly active: _angular_core.Signal<boolean>;
|
|
98
|
+
/** Progres garis 0–100. */
|
|
99
|
+
readonly progress: _angular_core.Signal<number>;
|
|
100
|
+
/** Work (a navigation, a request, a data load) is still outstanding. */
|
|
101
|
+
readonly pending: _angular_core.Signal<boolean>;
|
|
102
|
+
private readonly hostRegistry;
|
|
103
|
+
/**
|
|
104
|
+
* The earliest registered `LayoutLoading` host, which is the one that draws the
|
|
105
|
+
* bar. Every other instance — the one inside `Layout` when the app root also
|
|
106
|
+
* mounts `LayoutLoading` — goes inert, so the line is never drawn twice.
|
|
107
|
+
*/
|
|
108
|
+
readonly primaryHostId: _angular_core.Signal<number>;
|
|
109
|
+
private trickleTimer;
|
|
110
|
+
private hideTimer;
|
|
111
|
+
private navigationPending;
|
|
112
|
+
private nextHostId;
|
|
113
|
+
constructor();
|
|
114
|
+
/** Mark one unit of work started; the bar appears with the first one. */
|
|
115
|
+
start(): void;
|
|
116
|
+
/** Mark one unit of work finished; the bar completes when the count returns to zero. */
|
|
117
|
+
done(): void;
|
|
118
|
+
/** Register one `LayoutLoading` host; returns the id used to unregister it. */
|
|
119
|
+
registerHost(): number;
|
|
120
|
+
/** Release a host; the next registered one becomes primary on its own. */
|
|
121
|
+
unregisterHost(hostId: number): void;
|
|
122
|
+
/** Force the progress value (0–100) while the bar is active, e.g. for a large upload. */
|
|
123
|
+
setProgress(value: number): void;
|
|
124
|
+
private observeRouterNavigation;
|
|
125
|
+
private show;
|
|
126
|
+
private finish;
|
|
127
|
+
private hide;
|
|
128
|
+
private startTrickle;
|
|
129
|
+
private stopTrickle;
|
|
130
|
+
private cancelScheduledHide;
|
|
131
|
+
private isBrowser;
|
|
132
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutLoadingService, never>;
|
|
133
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutLoadingService>;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Set `true` on a request's `HttpContext` to keep it out of the progress line —
|
|
138
|
+
* a poll or a heartbeat that must not raise a loading indicator.
|
|
139
|
+
*/
|
|
140
|
+
declare const LAYOUT_LOADING_SKIP: HttpContextToken<boolean>;
|
|
141
|
+
/**
|
|
142
|
+
* Interceptor that lights the `LayoutLoading` progress line while an HTTP
|
|
143
|
+
* request is in flight. Register it through `withInterceptors([...])`.
|
|
144
|
+
*/
|
|
145
|
+
declare const layoutLoadingInterceptor: HttpInterceptorFn;
|
|
146
|
+
|
|
147
|
+
export { LAYOUT_LOADING_HIDE_DELAY_MS, LAYOUT_LOADING_INITIAL_PROGRESS, LAYOUT_LOADING_SKIP, LAYOUT_LOADING_TRICKLE_CEILING, LAYOUT_LOADING_TRICKLE_INTERVAL_MS, LayoutLoadingService, LayoutService, layoutLoadingInterceptor };
|
|
@@ -1 +1,40 @@
|
|
|
1
|
-
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
declare const LAYOUT_TYPES: readonly ["vertical", "horizontal", "empty", "fluid"];
|
|
4
|
+
declare const LAYOUT_SURFACES: readonly ["flat", "grid", "grid-line", "honeycomb", "matrix", "circuit", "line-vertical", "line-horizontal"];
|
|
5
|
+
declare const LAYOUT_APPEARANCES: readonly ["flat", "border-rail"];
|
|
6
|
+
declare const LAYOUT_WIDTHS: readonly ["full", "wide", "container", "fluid"];
|
|
7
|
+
type LayoutType = (typeof LAYOUT_TYPES)[number];
|
|
8
|
+
type LayoutSurface = (typeof LAYOUT_SURFACES)[number];
|
|
9
|
+
type LayoutAppearance = (typeof LAYOUT_APPEARANCES)[number];
|
|
10
|
+
type LayoutWidth = (typeof LAYOUT_WIDTHS)[number];
|
|
11
|
+
declare const LAYOUT_DEFAULT_SURFACE: LayoutSurface;
|
|
12
|
+
declare const LAYOUT_DEFAULT_TYPE: LayoutType;
|
|
13
|
+
declare const LAYOUT_DEFAULT_APPEARANCE: LayoutAppearance;
|
|
14
|
+
declare const LAYOUT_DEFAULT_WIDTH: LayoutWidth;
|
|
15
|
+
/**
|
|
16
|
+
* The width forced whenever the shell mode is not `web`.
|
|
17
|
+
*
|
|
18
|
+
* Only a browser page can be narrower than the surface it sits on. On desktop,
|
|
19
|
+
* tablet, and mobile the app *is* the surface, so a wide/container/fluid frame
|
|
20
|
+
* would leave dead canvas inside the window — `LayoutService` locks the axis here
|
|
21
|
+
* and keeps the user's own choice aside for when they return to `web`.
|
|
22
|
+
*/
|
|
23
|
+
declare const LAYOUT_LOCKED_WIDTH: LayoutWidth;
|
|
24
|
+
declare const LAYOUT_SURFACE_STORAGE_KEY = "layout-surface";
|
|
25
|
+
declare const LAYOUT_APPEARANCE_STORAGE_KEY = "layout-appearance";
|
|
26
|
+
declare const LAYOUT_TYPE_STORAGE_KEY = "layout-type";
|
|
27
|
+
declare const LAYOUT_WIDTH_STORAGE_KEY = "layout-width";
|
|
28
|
+
interface LayoutContextValue {
|
|
29
|
+
surface: Signal<LayoutSurface>;
|
|
30
|
+
type: Signal<LayoutType>;
|
|
31
|
+
appearance: Signal<LayoutAppearance>;
|
|
32
|
+
width: Signal<LayoutWidth>;
|
|
33
|
+
}
|
|
34
|
+
declare function isUiLayoutSurface(value: string | null): value is LayoutSurface;
|
|
35
|
+
declare function isUiLayoutType(value: string | null): value is LayoutType;
|
|
36
|
+
declare function isUiLayoutAppearance(value: string | null): value is LayoutAppearance;
|
|
37
|
+
declare function isUiLayoutWidth(value: string | null): value is LayoutWidth;
|
|
38
|
+
|
|
39
|
+
export { LAYOUT_APPEARANCES, LAYOUT_APPEARANCE_STORAGE_KEY, LAYOUT_DEFAULT_APPEARANCE, LAYOUT_DEFAULT_SURFACE, LAYOUT_DEFAULT_TYPE, LAYOUT_DEFAULT_WIDTH, LAYOUT_LOCKED_WIDTH, LAYOUT_SURFACES, LAYOUT_SURFACE_STORAGE_KEY, LAYOUT_TYPES, LAYOUT_TYPE_STORAGE_KEY, LAYOUT_WIDTHS, LAYOUT_WIDTH_STORAGE_KEY, isUiLayoutAppearance, isUiLayoutSurface, isUiLayoutType, isUiLayoutWidth };
|
|
40
|
+
export type { LayoutAppearance, LayoutContextValue, LayoutSurface, LayoutType, LayoutWidth };
|
|
@@ -1 +1,299 @@
|
|
|
1
|
-
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { ElementRef } from '@angular/core';
|
|
3
|
+
import { ThemeSettingsNavigationMode, ThemeSettingsNavigationType } from '@ojiepermana/angular/theme/component/settings';
|
|
4
|
+
import * as _ojiepermana_angular_navigation from '@ojiepermana/angular/navigation';
|
|
5
|
+
import { NavigationDockbarRouteContext } from '@ojiepermana/angular/navigation';
|
|
6
|
+
import { NavigationDockbarRouteContext as NavigationDockbarRouteContext$1, NavigationItem, NavigationType } from '@ojiepermana/angular/navigation/types';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The identity shape the layout wrappers consume. The library defines the structure
|
|
10
|
+
* only; the concrete brand and user values come from the consumer as inputs.
|
|
11
|
+
*/
|
|
12
|
+
interface BrandIdentity {
|
|
13
|
+
/** Name behind the initials and the accessible name in the header slot. */
|
|
14
|
+
readonly name: string;
|
|
15
|
+
/** Material symbol used as the logo; `null` falls back to initials from `name`. */
|
|
16
|
+
readonly icon: string | null;
|
|
17
|
+
/** Judul brand. */
|
|
18
|
+
readonly title: string;
|
|
19
|
+
/** Subjudul brand. */
|
|
20
|
+
readonly subtitle: string;
|
|
21
|
+
}
|
|
22
|
+
interface UserIdentity {
|
|
23
|
+
/** Nama lengkap user (inisial + judul footer). */
|
|
24
|
+
readonly name: string;
|
|
25
|
+
/** Email, or the footer's secondary line. */
|
|
26
|
+
readonly email: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Registry key used only while `LayoutWrapperDefault` renders its desktop nav. */
|
|
30
|
+
declare const LAYOUT_DESKTOP_NAVIGATION_DATA_ID = "__layout-desktop-navigation";
|
|
31
|
+
/**
|
|
32
|
+
* Registry of the brand and user identity a shell publishes (`LayoutWrapperDefault`, for
|
|
33
|
+
* one). Other surfaces — the apps launcher in `Page`, say — read it so they show the same
|
|
34
|
+
* brand and user as the nav flyout without taking inputs of their own.
|
|
35
|
+
*/
|
|
36
|
+
declare class LayoutIdentityService {
|
|
37
|
+
private readonly brandState;
|
|
38
|
+
private readonly userState;
|
|
39
|
+
readonly brand: _angular_core.Signal<BrandIdentity | null>;
|
|
40
|
+
readonly user: _angular_core.Signal<UserIdentity | null>;
|
|
41
|
+
setBrand(brand: BrandIdentity | null): void;
|
|
42
|
+
setUser(user: UserIdentity | null): void;
|
|
43
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutIdentityService, never>;
|
|
44
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutIdentityService>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The brand slot for `<NavigationHeader>`: initials or logo plus a title. Purely
|
|
49
|
+
* input-driven.
|
|
50
|
+
*
|
|
51
|
+
* `compact` (dockbar, or an icon-only rail) hides the title. `host.class = 'contents'`
|
|
52
|
+
* keeps `NavigationHeaderInitial` and `NavigationHeaderTitle` as direct flex children of
|
|
53
|
+
* the header row; the title still auto-hides on a collapsed sidebar, because
|
|
54
|
+
* `NAVIGATION_SHELL` reaches `<Navigation>` through the live injector tree.
|
|
55
|
+
*/
|
|
56
|
+
declare class LayoutBrand {
|
|
57
|
+
/** Identitas brand (nama, ikon, judul, subjudul). */
|
|
58
|
+
readonly brand: _angular_core.InputSignal<BrandIdentity>;
|
|
59
|
+
/** Sembunyikan judul, sisakan inisial saja (dockbar / rail ikon-only). */
|
|
60
|
+
readonly compact: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
61
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutBrand, never>;
|
|
62
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutBrand, "LayoutBrand", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The user slot for `<NavigationFooter>`: an optional identity plus the logout action.
|
|
67
|
+
* Purely input-driven.
|
|
68
|
+
*
|
|
69
|
+
* `detailed` shows initials and name (a full sidebar); without it, only the logout
|
|
70
|
+
* button. `host.class = 'contents'` makes the children direct flex children of the
|
|
71
|
+
* footer, so `ml-auto` and the auto-hide on collapse (through `NAVIGATION_SHELL`) still
|
|
72
|
+
* apply.
|
|
73
|
+
*
|
|
74
|
+
* The logout button only emits `(logout)`. Endpoint, cookie, and redirect target differ
|
|
75
|
+
* per application, so the effect is entirely the consumer's — the library calls no
|
|
76
|
+
* endpoint and performs no navigation. A consumer that never binds `(logout)` still
|
|
77
|
+
* renders without error; the button simply does nothing, exactly as before this output
|
|
78
|
+
* existed.
|
|
79
|
+
*/
|
|
80
|
+
declare class LayoutUser {
|
|
81
|
+
/** Identitas user (nama + email). */
|
|
82
|
+
readonly user: _angular_core.InputSignal<UserIdentity>;
|
|
83
|
+
/** Show the user identity (initials and name), not only the logout button. */
|
|
84
|
+
readonly detailed: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
85
|
+
/** Accessible name for the logout button. */
|
|
86
|
+
readonly logoutLabel: _angular_core.InputSignal<string>;
|
|
87
|
+
/** Material symbol for the logout button. */
|
|
88
|
+
readonly logoutIcon: _angular_core.InputSignal<string>;
|
|
89
|
+
/** The user pressed logout. The effect is the consumer's; the library does not navigate. */
|
|
90
|
+
readonly logout: _angular_core.OutputEmitterRef<void>;
|
|
91
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutUser, never>;
|
|
92
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutUser, "LayoutUser", never, { "user": { "alias": "user"; "required": true; "isSignal": true; }; "detailed": { "alias": "detailed"; "required": false; "isSignal": true; }; "logoutLabel": { "alias": "logoutLabel"; "required": false; "isSignal": true; }; "logoutIcon": { "alias": "logoutIcon"; "required": false; "isSignal": true; }; }, { "logout": "logout"; }, never, never, true, never>;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Nav type: a collapsible vertical sidebar (the default). Brand in the header, user
|
|
97
|
+
* identity in the footer.
|
|
98
|
+
*
|
|
99
|
+
* Horizontal dividers: the sidebar ALWAYS uses the borders `NavigationHeader`
|
|
100
|
+
* (`border-b`) and `NavigationFooter` (`border-t`) bring, `border-rail` included.
|
|
101
|
+
* Layout's inset accent rail (`top-12`/`bottom-12`) sits behind a frame that is now
|
|
102
|
+
* solid (`bg-background`) and is therefore invisible inside it; those explicit borders
|
|
103
|
+
* are what keep the header and footer lines visible and running straight into the
|
|
104
|
+
* content column (both `h-12`), consistent with {@link LayoutNavDockbar}.
|
|
105
|
+
*
|
|
106
|
+
* `host.class = 'contents'` makes `<NavigationSidebar>` an effective child of
|
|
107
|
+
* `<Navigation>` (h-full, shell classes), while `NAVIGATION_SHELL` still reaches it
|
|
108
|
+
* through the live injector tree and `<NavigationHeader>` stays a direct child for the
|
|
109
|
+
* library's content projection.
|
|
110
|
+
*/
|
|
111
|
+
declare class LayoutNavSidebar {
|
|
112
|
+
readonly brand: _angular_core.InputSignal<BrandIdentity>;
|
|
113
|
+
readonly user: _angular_core.InputSignal<UserIdentity>;
|
|
114
|
+
/** Appearance from the shell (`[appearance]`); decides the separator border weight. */
|
|
115
|
+
readonly appearance: _angular_core.InputSignal<"flat" | "border-rail">;
|
|
116
|
+
readonly navTypeMode: _angular_core.InputSignal<ThemeSettingsNavigationMode>;
|
|
117
|
+
/** Forwarded from `<LayoutUser>`; the effect is the consumer's. */
|
|
118
|
+
readonly logout: _angular_core.OutputEmitterRef<void>;
|
|
119
|
+
protected readonly isBorderRail: _angular_core.Signal<boolean>;
|
|
120
|
+
protected readonly isCollapsed: _angular_core.Signal<boolean>;
|
|
121
|
+
/** Border kanan pemisah; ketebalan ikut appearance: `border-rail` = `--layout-rail-width` (selaras rail layout), `flat` 1px. */
|
|
122
|
+
protected readonly shellClass: _angular_core.Signal<"border-r-[length:var(--layout-rail-width)] border-border" | "border-r border-border">;
|
|
123
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutNavSidebar, never>;
|
|
124
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutNavSidebar, "LayoutNavSidebar", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "navTypeMode": { "alias": "nav-type-mode"; "required": false; "isSignal": true; }; }, { "logout": "logout"; }, never, never, true, never>;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Nav type: a vertical icon rail (dockbar). A compact brand (initials only) in the
|
|
129
|
+
* header, the user's initials in the rail footer (title and actions auto-hide, because
|
|
130
|
+
* the rail is always collapsed), and the full identity (name, email, logout) in the
|
|
131
|
+
* aside footer — together with the rail initials they form one footer row, like an
|
|
132
|
+
* expanded sidebar.
|
|
133
|
+
*
|
|
134
|
+
* Horizontal dividers: unlike the sidebar, which leaves the separator to Layout's inset
|
|
135
|
+
* accent rail at `top-12`/`bottom-12` under `border-rail`, the dockbar ALWAYS uses the
|
|
136
|
+
* borders `NavigationHeader`/`NavigationFooter` bring. The dockbar aside covers the inset
|
|
137
|
+
* rail line with its own opaque background, so those explicit borders are what keep the
|
|
138
|
+
* separator running straight from rail to aside (header and footer are both `h-12`).
|
|
139
|
+
* See {@link LayoutNavSidebar} for why `host.class = 'contents'`.
|
|
140
|
+
*/
|
|
141
|
+
declare class LayoutNavDockbar {
|
|
142
|
+
readonly brand: _angular_core.InputSignal<BrandIdentity>;
|
|
143
|
+
readonly user: _angular_core.InputSignal<UserIdentity>;
|
|
144
|
+
/** Appearance from the shell (`[appearance]`); decides the separator border weight. */
|
|
145
|
+
readonly appearance: _angular_core.InputSignal<"flat" | "border-rail">;
|
|
146
|
+
readonly navTypeMode: _angular_core.InputSignal<ThemeSettingsNavigationMode>;
|
|
147
|
+
/** Opt-in route-aware header; ketika aktif, header route menggantikan compact brand. */
|
|
148
|
+
readonly dockbarRouteContext: _angular_core.InputSignal<NavigationDockbarRouteContext | null>;
|
|
149
|
+
/** The generic badge registry forwarded to `NavigationDockbar`. */
|
|
150
|
+
readonly dockbarBadgeContext: _angular_core.InputSignal<Readonly<Record<string, _ojiepermana_angular_navigation.NavigationBadgeSource>>>;
|
|
151
|
+
/** Forwarded from the rail and aside footer logout buttons; the effect is the consumer's. */
|
|
152
|
+
readonly logout: _angular_core.OutputEmitterRef<void>;
|
|
153
|
+
protected readonly isBorderRail: _angular_core.Signal<boolean>;
|
|
154
|
+
protected readonly dockbarMode: _angular_core.Signal<"drawer" | "sticky">;
|
|
155
|
+
protected readonly routeContextEnabled: _angular_core.Signal<boolean>;
|
|
156
|
+
/** Border kanan pemisah; ketebalan ikut appearance: `border-rail` = `--layout-rail-width` (selaras rail layout), `flat` 1px. */
|
|
157
|
+
protected readonly shellClass: _angular_core.Signal<"border-r-[length:var(--layout-rail-width)] border-border" | "border-r border-border">;
|
|
158
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutNavDockbar, never>;
|
|
159
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutNavDockbar, "LayoutNavDockbar", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "navTypeMode": { "alias": "nav-type-mode"; "required": false; "isSignal": true; }; "dockbarRouteContext": { "alias": "dockbar-route-context"; "required": false; "isSignal": true; }; "dockbarBadgeContext": { "alias": "dockbar-badge"; "required": false; "isSignal": true; }; }, { "logout": "logout"; }, never, never, true, never>;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Nav type: a top bar with inline items (navbar, horizontal). `appearance` follows the
|
|
164
|
+
* shell (`flat | border-rail`). See {@link LayoutNavSidebar} for why
|
|
165
|
+
* `host.class = 'contents'`.
|
|
166
|
+
*/
|
|
167
|
+
declare class LayoutNavNavbar {
|
|
168
|
+
readonly brand: _angular_core.InputSignal<BrandIdentity>;
|
|
169
|
+
readonly user: _angular_core.InputSignal<UserIdentity>;
|
|
170
|
+
/** Appearance from the shell (`[nav-type-style]`). */
|
|
171
|
+
readonly appearance: _angular_core.InputSignal<"flat" | "border-rail">;
|
|
172
|
+
/** Forwarded from `<LayoutUser>`; the effect is the consumer's. */
|
|
173
|
+
readonly logout: _angular_core.OutputEmitterRef<void>;
|
|
174
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutNavNavbar, never>;
|
|
175
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutNavNavbar, "LayoutNavNavbar", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, { "logout": "logout"; }, never, never, true, never>;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Nav type: a top bar with a flyout trigger button (horizontal). `appearance` follows the
|
|
180
|
+
* shell. See {@link LayoutNavSidebar} for why `host.class = 'contents'`.
|
|
181
|
+
*/
|
|
182
|
+
declare class LayoutNavFlyout {
|
|
183
|
+
readonly brand: _angular_core.InputSignal<BrandIdentity>;
|
|
184
|
+
readonly user: _angular_core.InputSignal<UserIdentity>;
|
|
185
|
+
/** Appearance from the shell (`[nav-type-style]`). */
|
|
186
|
+
readonly appearance: _angular_core.InputSignal<"flat" | "border-rail">;
|
|
187
|
+
/** Forwarded from `<LayoutUser>`; the effect is the consumer's. */
|
|
188
|
+
readonly logout: _angular_core.OutputEmitterRef<void>;
|
|
189
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutNavFlyout, never>;
|
|
190
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutNavFlyout, "LayoutNavFlyout", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, { "logout": "logout"; }, never, never, true, never>;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Nav type: a brand-only sidebar for the `empty` and `fluid` variants, where
|
|
195
|
+
* `LayoutNavigation` hides the nav — so no collapse and no footer. See
|
|
196
|
+
* {@link LayoutNavSidebar} for why `host.class = 'contents'`.
|
|
197
|
+
*/
|
|
198
|
+
declare class LayoutNavMinimal {
|
|
199
|
+
readonly brand: _angular_core.InputSignal<BrandIdentity>;
|
|
200
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutNavMinimal, never>;
|
|
201
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutNavMinimal, "LayoutNavMinimal", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** The nav type `@switch (navKind())` renders. `brand` = header-only sidebar (empty/fluid). */
|
|
205
|
+
type NavKind = NavigationType | 'brand';
|
|
206
|
+
/**
|
|
207
|
+
* A ready-made layout shell — the consumer supplies data through inputs instead of
|
|
208
|
+
* assembling `Layout > LayoutVertical/Horizontal/Empty/Fluid > LayoutNavigation >
|
|
209
|
+
* Navigation > nav type` by hand.
|
|
210
|
+
*
|
|
211
|
+
* ```html
|
|
212
|
+
* <LayoutWrapperDefault
|
|
213
|
+
* [surface]="surface" [layout-appearance]="appearance" [width]="width"
|
|
214
|
+
* [layout-type]="layoutType" [nav-type]="navType"
|
|
215
|
+
* [data]="navItems" [brand]="brand" [user]="user"
|
|
216
|
+
* (logout)="signOut()"
|
|
217
|
+
* >
|
|
218
|
+
* <router-outlet /> <!-- page content is projected into LayoutContent -->
|
|
219
|
+
* </LayoutWrapperDefault>
|
|
220
|
+
* ```
|
|
221
|
+
*
|
|
222
|
+
* The `register*` defaults (LayoutService) stay the consumer's job; this wrapper is purely
|
|
223
|
+
* presentational — two axes (`effectiveLayoutType` → wrapper, `navKind` → nav type) over one
|
|
224
|
+
* shared skeleton. Injection stays sound: `<Navigation>` provides `NAVIGATION_SHELL` inside
|
|
225
|
+
* `#body`, and each nav type is `display:contents`, so `<NavigationXxx>` is an effective child
|
|
226
|
+
* of `<Navigation>`.
|
|
227
|
+
*/
|
|
228
|
+
declare class LayoutWrapperDefault {
|
|
229
|
+
/** Surface latar shell (mis. `grid`, `flat`). */
|
|
230
|
+
readonly surface: _angular_core.InputSignal<"flat" | "grid" | "grid-line" | "honeycomb" | "matrix" | "circuit" | "line-vertical" | "line-horizontal">;
|
|
231
|
+
/** Appearance shell & nav (`flat | border-rail`). */
|
|
232
|
+
readonly appearance: _angular_core.InputSignal<"flat" | "border-rail">;
|
|
233
|
+
/** Frame width (`full`, `container`, and so on). */
|
|
234
|
+
readonly width: _angular_core.InputSignal<"full" | "wide" | "container" | "fluid">;
|
|
235
|
+
/** Tipe layout dasar (`vertical | horizontal | empty | fluid`); `empty`/`fluid` override nav. */
|
|
236
|
+
readonly layoutType: _angular_core.InputSignal<"fluid" | "vertical" | "horizontal" | "empty">;
|
|
237
|
+
/**
|
|
238
|
+
* The shell's navigation type. `desktop` only means anything on a horizontal frame:
|
|
239
|
+
* the titlebar becomes the primary chrome and the navigation area follows the
|
|
240
|
+
* content-focused `empty` behaviour.
|
|
241
|
+
*/
|
|
242
|
+
readonly navType: _angular_core.InputSignal<ThemeSettingsNavigationType>;
|
|
243
|
+
/** Presentation mode for the active nav type (`collapsed` sidebar / `drawer` dockbar). */
|
|
244
|
+
readonly navTypeMode: _angular_core.InputSignal<ThemeSettingsNavigationMode>;
|
|
245
|
+
/** Opt-in route-aware dockbar state; ignored by other navigation types. */
|
|
246
|
+
readonly dockbarRouteContext: _angular_core.InputSignal<NavigationDockbarRouteContext$1 | null>;
|
|
247
|
+
/** Generic dockbar badge registry; ignored by sidebar/navbar/flyout. */
|
|
248
|
+
readonly dockbarBadgeContext: _angular_core.InputSignal<Readonly<Record<string, _ojiepermana_angular_navigation.NavigationBadgeSource>>>;
|
|
249
|
+
/** Item navigasi. */
|
|
250
|
+
readonly data: _angular_core.InputSignal<readonly NavigationItem[]>;
|
|
251
|
+
/** Identitas brand. */
|
|
252
|
+
readonly brand: _angular_core.InputSignal<BrandIdentity>;
|
|
253
|
+
/** Identitas user. */
|
|
254
|
+
readonly user: _angular_core.InputSignal<UserIdentity>;
|
|
255
|
+
/** Id landmark konten utama sekaligus target skip link. */
|
|
256
|
+
readonly contentId: _angular_core.InputSignal<string>;
|
|
257
|
+
/** Skip-link label; the consumer can localise it. */
|
|
258
|
+
readonly skipLinkLabel: _angular_core.InputSignal<string>;
|
|
259
|
+
/** Fokuskan landmark utama setelah route selesai berubah. */
|
|
260
|
+
readonly focusOnNavigation: _angular_core.InputSignal<boolean>;
|
|
261
|
+
/** Controlled/uncontrolled state drawer navigasi mobile. */
|
|
262
|
+
readonly mobileNavOpen: _angular_core.ModelSignal<boolean>;
|
|
263
|
+
readonly mobileNavLabel: _angular_core.InputSignal<string>;
|
|
264
|
+
readonly closeMobileNavLabel: _angular_core.InputSignal<string>;
|
|
265
|
+
/**
|
|
266
|
+
* The user pressed logout in the navigation footer. Forwarded from every nav type that
|
|
267
|
+
* shows the user identity (`sidebar`, `dockbar`, `navbar`, `flyout`), the mobile drawer
|
|
268
|
+
* included, so one binding covers all of them. The library calls no endpoint and performs
|
|
269
|
+
* no navigation; what happens next is entirely the consumer's.
|
|
270
|
+
*/
|
|
271
|
+
readonly logout: _angular_core.OutputEmitterRef<void>;
|
|
272
|
+
private readonly identity;
|
|
273
|
+
private readonly navigation;
|
|
274
|
+
private readonly desktopNavigationDataOwner;
|
|
275
|
+
private readonly document;
|
|
276
|
+
protected readonly mobileNavTriggerRef: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
277
|
+
constructor();
|
|
278
|
+
/**
|
|
279
|
+
* Classes for `<LayoutContent>`, chosen by the consumer (padding, say). Empty by
|
|
280
|
+
* default: the library no longer forces `p-6`; the consumer or `<Page>` decides spacing.
|
|
281
|
+
*/
|
|
282
|
+
readonly contentClassInput: _angular_core.InputSignal<string>;
|
|
283
|
+
/** Wrapper layout & nilai `<Layout [layout-type]>`: navbar/flyout = horizontal, sisanya vertical. */
|
|
284
|
+
protected readonly effectiveLayoutType: _angular_core.Signal<"fluid" | "vertical" | "horizontal" | "empty">;
|
|
285
|
+
/** Tipe nav di dalam `#body`: `empty`/`fluid` → `brand` (header-only); selain itu `nav-type`. */
|
|
286
|
+
protected readonly navKind: _angular_core.Signal<NavKind>;
|
|
287
|
+
/** Lebar host `<Navigation>`: penuh-tinggi (vertical) atau penuh-lebar (horizontal). */
|
|
288
|
+
protected readonly navClass: _angular_core.Signal<"w-full" | "h-full">;
|
|
289
|
+
protected readonly showsMobileNavigation: _angular_core.Signal<boolean>;
|
|
290
|
+
/** Internal shell owns responsive placement while primitives remain composition-safe. */
|
|
291
|
+
protected readonly defaultShellClasses: _angular_core.Signal<string>;
|
|
292
|
+
/** Kelas `<LayoutContent>`: `fluid` membatasi lebar & memusatkan; padding diserahkan ke consumer. */
|
|
293
|
+
protected readonly contentClass: _angular_core.Signal<string>;
|
|
294
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutWrapperDefault, never>;
|
|
295
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutWrapperDefault, "LayoutWrapperDefault", never, { "surface": { "alias": "surface"; "required": false; "isSignal": true; }; "appearance": { "alias": "layout-appearance"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "layoutType": { "alias": "layout-type"; "required": false; "isSignal": true; }; "navType": { "alias": "nav-type"; "required": false; "isSignal": true; }; "navTypeMode": { "alias": "nav-type-mode"; "required": false; "isSignal": true; }; "dockbarRouteContext": { "alias": "dockbar-route-context"; "required": false; "isSignal": true; }; "dockbarBadgeContext": { "alias": "dockbar-badge"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "contentId": { "alias": "content-id"; "required": false; "isSignal": true; }; "skipLinkLabel": { "alias": "skip-link-label"; "required": false; "isSignal": true; }; "focusOnNavigation": { "alias": "focus-on-navigation"; "required": false; "isSignal": true; }; "mobileNavOpen": { "alias": "mobile-nav-open"; "required": false; "isSignal": true; }; "mobileNavLabel": { "alias": "mobile-nav-label"; "required": false; "isSignal": true; }; "closeMobileNavLabel": { "alias": "close-mobile-nav-label"; "required": false; "isSignal": true; }; "contentClassInput": { "alias": "content-class"; "required": false; "isSignal": true; }; }, { "mobileNavOpen": "mobile-nav-openChange"; "logout": "logout"; }, never, ["*"], true, never>;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
export { LAYOUT_DESKTOP_NAVIGATION_DATA_ID, LayoutBrand, LayoutIdentityService, LayoutNavDockbar, LayoutNavFlyout, LayoutNavMinimal, LayoutNavNavbar, LayoutNavSidebar, LayoutUser, LayoutWrapperDefault };
|
|
299
|
+
export type { BrandIdentity, UserIdentity };
|