feat(admin): open controller-link settings entries from the settings index
A settings entry with a controller opens that controller's route from its card (settingsPath); singleton cards still open /settings/<code>. On a linked controller with no navigation entry of its own the rail marks Settings current, the breadcrumbs read Settings > entry label (plus the record title on record and create routes) and the page title uses the entry label. The settings docs describe the admin behaviour; the embedded admin shell is rebuilt.
This commit is contained in:
@@ -59,6 +59,20 @@ describe('plugin rail', () => {
|
||||
expect(link.attributes('aria-current')).toBe('page')
|
||||
})
|
||||
|
||||
it('marks Ustawienia current on a settings-linked controller without a navigation entry', async () => {
|
||||
const locales = { ...settingsFixture.list.data[0]!, code: 'locales', label: 'Locales', model: '', controller: 'acme.lang.locales' }
|
||||
const widgets = { ...locales, code: 'widgets', label: 'Widgets', controller: 'acme.demo.widgets' }
|
||||
setSettings([...settingsFixture.list.data, locales, widgets])
|
||||
const { wrapper } = await mountRail('/acme/lang/locales')
|
||||
expect(wrapper.find('[data-rail-settings]').attributes('aria-current')).toBe('page')
|
||||
expect(wrapper.findAll('[data-rail-item][aria-current="page"]')).toHaveLength(0)
|
||||
|
||||
// A linked controller that also has a navigation entry keeps its plugin.
|
||||
const nav = await mountRail('/acme/demo/widgets')
|
||||
expect(nav.wrapper.find('[data-rail-settings]').attributes('aria-current')).toBeUndefined()
|
||||
expect(nav.wrapper.find('[data-rail-item="demo"]').attributes('aria-current')).toBe('page')
|
||||
})
|
||||
|
||||
it('offers menu semantics and the expand button after a manual collapse', async () => {
|
||||
const { wrapper } = await mountRail('/acme/demo/widgets')
|
||||
expect(wrapper.find('[data-sidebar-expand]').exists()).toBe(false)
|
||||
|
||||
Reference in New Issue
Block a user