katalyst-navigation 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +29 -5
- data/app/assets/builds/katalyst/navigation.esm.js +911 -0
- data/app/assets/builds/katalyst/navigation.js +911 -0
- data/app/assets/builds/katalyst/navigation.min.js +2 -0
- data/app/assets/builds/katalyst/navigation.min.js.map +1 -0
- data/app/assets/config/katalyst-navigation.js +1 -1
- data/app/components/katalyst/navigation/editor/base_component.rb +48 -0
- data/app/components/katalyst/navigation/editor/errors_component.html.erb +12 -0
- data/app/components/katalyst/navigation/editor/errors_component.rb +15 -0
- data/app/components/katalyst/navigation/editor/item_component.html.erb +27 -0
- data/app/components/katalyst/navigation/editor/item_component.rb +30 -0
- data/app/components/katalyst/navigation/editor/item_editor_component.rb +51 -0
- data/app/components/katalyst/navigation/editor/new_item_component.html.erb +14 -0
- data/app/components/katalyst/navigation/editor/new_item_component.rb +49 -0
- data/app/components/katalyst/navigation/editor/new_items_component.html.erb +3 -0
- data/app/components/katalyst/navigation/editor/new_items_component.rb +20 -0
- data/app/{views/katalyst/navigation/menus/_list_item.html.erb → components/katalyst/navigation/editor/row_component.html.erb} +1 -1
- data/{lib/katalyst/navigation/version.rb → app/components/katalyst/navigation/editor/row_component.rb} +4 -1
- data/app/{helpers/katalyst/navigation/editor/status_bar.rb → components/katalyst/navigation/editor/status_bar_component.rb} +17 -13
- data/app/components/katalyst/navigation/editor/table_component.html.erb +11 -0
- data/app/components/katalyst/navigation/editor/table_component.rb +36 -0
- data/app/components/katalyst/navigation/editor_component.html.erb +9 -0
- data/app/components/katalyst/navigation/editor_component.rb +47 -0
- data/app/controllers/concerns/katalyst/navigation/has_navigation.rb +5 -14
- data/app/controllers/katalyst/navigation/items_controller.rb +24 -12
- data/app/controllers/katalyst/navigation/menus_controller.rb +25 -13
- data/app/helpers/katalyst/navigation/frontend_helper.rb +7 -7
- data/app/javascript/navigation/application.js +30 -0
- data/app/{assets/javascripts/controllers → javascript}/navigation/editor/item_controller.js +1 -1
- data/app/{assets/javascripts/utils → javascript}/navigation/editor/menu.js +1 -1
- data/app/{assets/javascripts/controllers → javascript}/navigation/editor/menu_controller.js +3 -3
- data/app/models/katalyst/navigation/menu.rb +2 -0
- data/app/models/katalyst/navigation/types/nodes_type.rb +2 -2
- data/app/views/katalyst/navigation/items/_button.html.erb +6 -0
- data/app/views/katalyst/navigation/items/_form_errors.html.erb +5 -0
- data/app/views/katalyst/navigation/items/_heading.html.erb +1 -0
- data/app/views/katalyst/navigation/items/_link.html.erb +11 -0
- data/app/views/katalyst/navigation/items/edit.html.erb +4 -3
- data/app/views/katalyst/navigation/items/edit.turbo_stream.erb +3 -0
- data/app/views/katalyst/navigation/items/new.html.erb +1 -1
- data/app/views/katalyst/navigation/items/update.turbo_stream.erb +2 -5
- data/app/views/katalyst/navigation/menus/edit.html.erb +1 -1
- data/app/views/katalyst/navigation/menus/index.html.erb +1 -1
- data/app/views/katalyst/navigation/menus/show.html.erb +3 -13
- data/config/importmap.rb +1 -4
- data/db/migrate/20230727025052_update_target_syntax.rb +1 -1
- data/lib/katalyst/navigation/config.rb +4 -0
- data/lib/katalyst/navigation/engine.rb +1 -1
- data/lib/katalyst/navigation.rb +6 -1
- data/spec/factories/katalyst/navigation/menus.rb +1 -1
- metadata +93 -27
- data/app/controllers/katalyst/navigation/base_controller.rb +0 -12
- data/app/helpers/katalyst/navigation/editor/base.rb +0 -41
- data/app/helpers/katalyst/navigation/editor/errors.rb +0 -24
- data/app/helpers/katalyst/navigation/editor/item.rb +0 -62
- data/app/helpers/katalyst/navigation/editor/list.rb +0 -41
- data/app/helpers/katalyst/navigation/editor/menu.rb +0 -47
- data/app/helpers/katalyst/navigation/editor/new_item.rb +0 -53
- data/app/helpers/katalyst/navigation/editor_helper.rb +0 -52
- data/app/views/katalyst/navigation/menus/_item.html.erb +0 -15
- data/app/views/katalyst/navigation/menus/_new_item.html.erb +0 -3
- data/app/views/katalyst/navigation/menus/_new_items.html.erb +0 -5
- /data/app/{assets/javascripts/utils → javascript}/navigation/editor/item.js +0 -0
- /data/app/{assets/javascripts/controllers → javascript}/navigation/editor/list_controller.js +0 -0
- /data/app/{assets/javascripts/controllers → javascript}/navigation/editor/new_item_controller.js +0 -0
- /data/app/{assets/javascripts/utils → javascript}/navigation/editor/rules-engine.js +0 -0
- /data/app/{assets/javascripts/controllers → javascript}/navigation/editor/status_bar_controller.js +0 -0
metadata
CHANGED
@@ -1,15 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: katalyst-navigation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katalyst Interactive
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
12
|
-
dependencies:
|
11
|
+
date: 2023-12-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: katalyst-html-attributes
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: katalyst-kpop
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: katalyst-tables
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: view_component
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
13
69
|
description:
|
14
70
|
email:
|
15
71
|
- developers@katalyst.com.au
|
@@ -19,35 +75,48 @@ extra_rdoc_files: []
|
|
19
75
|
files:
|
20
76
|
- LICENSE.txt
|
21
77
|
- README.md
|
78
|
+
- app/assets/builds/katalyst/navigation.esm.js
|
79
|
+
- app/assets/builds/katalyst/navigation.js
|
80
|
+
- app/assets/builds/katalyst/navigation.min.js
|
81
|
+
- app/assets/builds/katalyst/navigation.min.js.map
|
22
82
|
- app/assets/config/katalyst-navigation.js
|
23
|
-
- app/assets/javascripts/controllers/navigation/editor/item_controller.js
|
24
|
-
- app/assets/javascripts/controllers/navigation/editor/list_controller.js
|
25
|
-
- app/assets/javascripts/controllers/navigation/editor/menu_controller.js
|
26
|
-
- app/assets/javascripts/controllers/navigation/editor/new_item_controller.js
|
27
|
-
- app/assets/javascripts/controllers/navigation/editor/status_bar_controller.js
|
28
|
-
- app/assets/javascripts/utils/navigation/editor/item.js
|
29
|
-
- app/assets/javascripts/utils/navigation/editor/menu.js
|
30
|
-
- app/assets/javascripts/utils/navigation/editor/rules-engine.js
|
31
83
|
- app/assets/stylesheets/katalyst/navigation/editor/_icon.scss
|
32
84
|
- app/assets/stylesheets/katalyst/navigation/editor/_index.scss
|
33
85
|
- app/assets/stylesheets/katalyst/navigation/editor/_item-actions.scss
|
34
86
|
- app/assets/stylesheets/katalyst/navigation/editor/_item-rules.scss
|
35
87
|
- app/assets/stylesheets/katalyst/navigation/editor/_new-items.scss
|
36
88
|
- app/assets/stylesheets/katalyst/navigation/editor/_status-bar.scss
|
89
|
+
- app/components/katalyst/navigation/editor/base_component.rb
|
90
|
+
- app/components/katalyst/navigation/editor/errors_component.html.erb
|
91
|
+
- app/components/katalyst/navigation/editor/errors_component.rb
|
92
|
+
- app/components/katalyst/navigation/editor/item_component.html.erb
|
93
|
+
- app/components/katalyst/navigation/editor/item_component.rb
|
94
|
+
- app/components/katalyst/navigation/editor/item_editor_component.rb
|
95
|
+
- app/components/katalyst/navigation/editor/new_item_component.html.erb
|
96
|
+
- app/components/katalyst/navigation/editor/new_item_component.rb
|
97
|
+
- app/components/katalyst/navigation/editor/new_items_component.html.erb
|
98
|
+
- app/components/katalyst/navigation/editor/new_items_component.rb
|
99
|
+
- app/components/katalyst/navigation/editor/row_component.html.erb
|
100
|
+
- app/components/katalyst/navigation/editor/row_component.rb
|
101
|
+
- app/components/katalyst/navigation/editor/status_bar_component.rb
|
102
|
+
- app/components/katalyst/navigation/editor/table_component.html.erb
|
103
|
+
- app/components/katalyst/navigation/editor/table_component.rb
|
104
|
+
- app/components/katalyst/navigation/editor_component.html.erb
|
105
|
+
- app/components/katalyst/navigation/editor_component.rb
|
37
106
|
- app/controllers/concerns/katalyst/navigation/has_navigation.rb
|
38
|
-
- app/controllers/katalyst/navigation/base_controller.rb
|
39
107
|
- app/controllers/katalyst/navigation/items_controller.rb
|
40
108
|
- app/controllers/katalyst/navigation/menus_controller.rb
|
41
|
-
- app/helpers/katalyst/navigation/editor/base.rb
|
42
|
-
- app/helpers/katalyst/navigation/editor/errors.rb
|
43
|
-
- app/helpers/katalyst/navigation/editor/item.rb
|
44
|
-
- app/helpers/katalyst/navigation/editor/list.rb
|
45
|
-
- app/helpers/katalyst/navigation/editor/menu.rb
|
46
|
-
- app/helpers/katalyst/navigation/editor/new_item.rb
|
47
|
-
- app/helpers/katalyst/navigation/editor/status_bar.rb
|
48
|
-
- app/helpers/katalyst/navigation/editor_helper.rb
|
49
109
|
- app/helpers/katalyst/navigation/frontend/builder.rb
|
50
110
|
- app/helpers/katalyst/navigation/frontend_helper.rb
|
111
|
+
- app/javascript/navigation/application.js
|
112
|
+
- app/javascript/navigation/editor/item.js
|
113
|
+
- app/javascript/navigation/editor/item_controller.js
|
114
|
+
- app/javascript/navigation/editor/list_controller.js
|
115
|
+
- app/javascript/navigation/editor/menu.js
|
116
|
+
- app/javascript/navigation/editor/menu_controller.js
|
117
|
+
- app/javascript/navigation/editor/new_item_controller.js
|
118
|
+
- app/javascript/navigation/editor/rules-engine.js
|
119
|
+
- app/javascript/navigation/editor/status_bar_controller.js
|
51
120
|
- app/models/concerns/katalyst/navigation/garbage_collection.rb
|
52
121
|
- app/models/concerns/katalyst/navigation/has_link.rb
|
53
122
|
- app/models/concerns/katalyst/navigation/has_tree.rb
|
@@ -60,16 +129,14 @@ files:
|
|
60
129
|
- app/models/katalyst/navigation/node.rb
|
61
130
|
- app/models/katalyst/navigation/types/nodes_type.rb
|
62
131
|
- app/views/katalyst/navigation/items/_button.html.erb
|
132
|
+
- app/views/katalyst/navigation/items/_form_errors.html.erb
|
63
133
|
- app/views/katalyst/navigation/items/_heading.html.erb
|
64
134
|
- app/views/katalyst/navigation/items/_link.html.erb
|
65
135
|
- app/views/katalyst/navigation/items/edit.html.erb
|
136
|
+
- app/views/katalyst/navigation/items/edit.turbo_stream.erb
|
66
137
|
- app/views/katalyst/navigation/items/new.html.erb
|
67
138
|
- app/views/katalyst/navigation/items/update.turbo_stream.erb
|
68
|
-
- app/views/katalyst/navigation/menus/_item.html.erb
|
69
|
-
- app/views/katalyst/navigation/menus/_list_item.html.erb
|
70
139
|
- app/views/katalyst/navigation/menus/_menu.html+row.erb
|
71
|
-
- app/views/katalyst/navigation/menus/_new_item.html.erb
|
72
|
-
- app/views/katalyst/navigation/menus/_new_items.html.erb
|
73
140
|
- app/views/katalyst/navigation/menus/edit.html.erb
|
74
141
|
- app/views/katalyst/navigation/menus/index.html.erb
|
75
142
|
- app/views/katalyst/navigation/menus/new.html.erb
|
@@ -84,7 +151,6 @@ files:
|
|
84
151
|
- lib/katalyst/navigation.rb
|
85
152
|
- lib/katalyst/navigation/config.rb
|
86
153
|
- lib/katalyst/navigation/engine.rb
|
87
|
-
- lib/katalyst/navigation/version.rb
|
88
154
|
- spec/factories/katalyst/navigation/items.rb
|
89
155
|
- spec/factories/katalyst/navigation/menus.rb
|
90
156
|
homepage: https://github.com/katalyst/navigation
|
@@ -100,14 +166,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
100
166
|
requirements:
|
101
167
|
- - ">="
|
102
168
|
- !ruby/object:Gem::Version
|
103
|
-
version: 2.
|
169
|
+
version: 3.2.0
|
104
170
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
171
|
requirements:
|
106
172
|
- - ">="
|
107
173
|
- !ruby/object:Gem::Version
|
108
174
|
version: '0'
|
109
175
|
requirements: []
|
110
|
-
rubygems_version: 3.4.
|
176
|
+
rubygems_version: 3.4.10
|
111
177
|
signing_key:
|
112
178
|
specification_version: 4
|
113
179
|
summary: Navigation generator and editor
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Katalyst
|
4
|
-
module Navigation
|
5
|
-
module Editor
|
6
|
-
class Base
|
7
|
-
MENU_CONTROLLER = "navigation--editor--menu"
|
8
|
-
LIST_CONTROLLER = "navigation--editor--list"
|
9
|
-
ITEM_CONTROLLER = "navigation--editor--item"
|
10
|
-
STATUS_BAR_CONTROLLER = "navigation--editor--status-bar"
|
11
|
-
NEW_ITEM_CONTROLLER = "navigation--editor--new-item"
|
12
|
-
|
13
|
-
ATTRIBUTES_SCOPE = "menu[items_attributes][]"
|
14
|
-
TURBO_FRAME = "navigation--editor--item-frame"
|
15
|
-
|
16
|
-
attr_accessor :template, :menu
|
17
|
-
|
18
|
-
delegate_missing_to :template
|
19
|
-
|
20
|
-
def initialize(template, menu)
|
21
|
-
self.template = template
|
22
|
-
self.menu = menu
|
23
|
-
end
|
24
|
-
|
25
|
-
def menu_form_id
|
26
|
-
dom_id(menu, :items)
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def add_option(options, key, *path)
|
32
|
-
if path.length > 1
|
33
|
-
add_option(options[key] ||= {}, *path)
|
34
|
-
else
|
35
|
-
options[key] = [options[key], *path].compact.join(" ")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Katalyst
|
4
|
-
module Navigation
|
5
|
-
module Editor
|
6
|
-
class Errors < Base
|
7
|
-
def build(**options)
|
8
|
-
turbo_frame_tag dom_id(menu, :errors) do
|
9
|
-
next unless menu.errors.any?
|
10
|
-
|
11
|
-
tag.div(class: "navigation-errors", **options) do
|
12
|
-
tag.h2("Errors in navigation") +
|
13
|
-
tag.ul(class: "errors") do
|
14
|
-
menu.errors.each do |error|
|
15
|
-
concat(tag.li(error.message))
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Katalyst
|
4
|
-
module Navigation
|
5
|
-
module Editor
|
6
|
-
class Item < Base
|
7
|
-
attr_accessor :item
|
8
|
-
|
9
|
-
def build(item, **options, &block)
|
10
|
-
self.item = item
|
11
|
-
tag.div **default_options(id: dom_id(item), **options) do
|
12
|
-
concat(capture { yield self }) if block
|
13
|
-
concat fields(item)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def accordion_actions
|
18
|
-
tag.div role: "toolbar", data: { tree_accordion_controls: "" } do
|
19
|
-
concat tag.span(role: "button", value: "collapse",
|
20
|
-
data: { action: "click->#{MENU_CONTROLLER}#collapse", title: "Collapse tree" })
|
21
|
-
concat tag.span(role: "button", value: "expand",
|
22
|
-
data: { action: "click->#{MENU_CONTROLLER}#expand", title: "Expand tree" })
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def item_actions
|
27
|
-
tag.div role: "toolbar", data: { tree_controls: "" } do
|
28
|
-
concat tag.span(role: "button", value: "de-nest",
|
29
|
-
data: { action: "click->#{MENU_CONTROLLER}#deNest", title: "Outdent" })
|
30
|
-
concat tag.span(role: "button", value: "nest",
|
31
|
-
data: { action: "click->#{MENU_CONTROLLER}#nest", title: "Indent" })
|
32
|
-
concat link_to("", edit_item_link,
|
33
|
-
role: "button", title: "Edit", value: "edit",
|
34
|
-
data: { turbo_frame: TURBO_FRAME })
|
35
|
-
concat tag.span(role: "button", value: "remove",
|
36
|
-
data: { action: "click->#{MENU_CONTROLLER}#remove", title: "Remove" })
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def edit_item_link
|
41
|
-
item.persisted? ? edit_menu_item_path(item.menu, item) : new_menu_item_path(item.menu, type: item.type)
|
42
|
-
end
|
43
|
-
|
44
|
-
def fields(item)
|
45
|
-
template.fields(ATTRIBUTES_SCOPE, model: item, index: nil, skip_default_ids: true) do |f|
|
46
|
-
concat f.hidden_field(:id)
|
47
|
-
concat f.hidden_field(:depth)
|
48
|
-
concat f.hidden_field(:index)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
def default_options(options)
|
55
|
-
add_option(options, :data, :controller, ITEM_CONTROLLER)
|
56
|
-
|
57
|
-
options
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Katalyst
|
4
|
-
module Navigation
|
5
|
-
module Editor
|
6
|
-
class List < Base
|
7
|
-
ACTIONS = <<~ACTIONS.gsub(/\s+/, " ").freeze
|
8
|
-
dragstart->#{LIST_CONTROLLER}#dragstart
|
9
|
-
dragover->#{LIST_CONTROLLER}#dragover
|
10
|
-
dragenter->#{LIST_CONTROLLER}#dragenter
|
11
|
-
dragleave->#{LIST_CONTROLLER}#dragleave
|
12
|
-
drop->#{LIST_CONTROLLER}#drop
|
13
|
-
dragend->#{LIST_CONTROLLER}#dragend
|
14
|
-
ACTIONS
|
15
|
-
|
16
|
-
def build(options, &_block)
|
17
|
-
tag.ol **default_options(id: menu_form_id, **options) do
|
18
|
-
yield self
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def items(*items)
|
23
|
-
render partial: "katalyst/navigation/menus/item",
|
24
|
-
layout: "katalyst/navigation/menus/list_item",
|
25
|
-
collection: items,
|
26
|
-
as: :item
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def default_options(options)
|
32
|
-
add_option(options, :data, :controller, LIST_CONTROLLER)
|
33
|
-
add_option(options, :data, :action, ACTIONS)
|
34
|
-
add_option(options, :data, :"#{MENU_CONTROLLER}_target", "menu")
|
35
|
-
|
36
|
-
options
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Katalyst
|
4
|
-
module Navigation
|
5
|
-
module Editor
|
6
|
-
class Menu < Base
|
7
|
-
ACTIONS = <<~ACTIONS.gsub(/\s+/, " ").freeze
|
8
|
-
submit->#{MENU_CONTROLLER}#reindex
|
9
|
-
navigation:drop->#{MENU_CONTROLLER}#drop
|
10
|
-
navigation:reindex->#{MENU_CONTROLLER}#reindex
|
11
|
-
navigation:reset->#{MENU_CONTROLLER}#reset
|
12
|
-
ACTIONS
|
13
|
-
|
14
|
-
def build(options)
|
15
|
-
form_with(model: menu, **default_options(id: menu_form_id, **options)) do |form|
|
16
|
-
concat hidden_input
|
17
|
-
concat errors
|
18
|
-
concat(capture { yield form })
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
# Hidden input ensures that if the menu is empty then the controller
|
25
|
-
# receives an empty array.
|
26
|
-
def hidden_input
|
27
|
-
tag.input(type: "hidden", name: "#{Item::ATTRIBUTES_SCOPE}[id]")
|
28
|
-
end
|
29
|
-
|
30
|
-
def errors
|
31
|
-
Editor::Errors.new(self, menu).build
|
32
|
-
end
|
33
|
-
|
34
|
-
def default_options(options)
|
35
|
-
add_option(options, :data, :controller, MENU_CONTROLLER)
|
36
|
-
add_option(options, :data, :action, ACTIONS)
|
37
|
-
|
38
|
-
depth = options.delete(:depth) || menu.depth
|
39
|
-
|
40
|
-
add_option(options, :data, :"#{MENU_CONTROLLER}-max-depth-value", depth) if depth
|
41
|
-
|
42
|
-
options
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Katalyst
|
4
|
-
module Navigation
|
5
|
-
module Editor
|
6
|
-
class NewItem < Base
|
7
|
-
ACTIONS = <<~ACTIONS.gsub(/\s+/, " ").freeze
|
8
|
-
dragstart->#{NEW_ITEM_CONTROLLER}#dragstart
|
9
|
-
ACTIONS
|
10
|
-
|
11
|
-
def build(item, **options, &block)
|
12
|
-
capture do
|
13
|
-
concat(tag.div(**default_options(options)) do
|
14
|
-
concat capture(&block)
|
15
|
-
concat item_template(item)
|
16
|
-
end)
|
17
|
-
concat turbo_replace_placeholder(item)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
# Remove items that are incomplete when rendering new items, this
|
22
|
-
# causes incomplete items to be removed from the list when the user
|
23
|
-
# cancels adding a new item by pressing 'discard' in the new item form.
|
24
|
-
def turbo_replace_placeholder(item)
|
25
|
-
turbo_stream.replace dom_id(item) do
|
26
|
-
navigation_editor_item(item: item, data: { delete: "" })
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# Template is stored inside the new item dom, and copied into drag
|
31
|
-
# events when the user initiates drag so that it can be copied into the
|
32
|
-
# editor list on drop.
|
33
|
-
def item_template(item)
|
34
|
-
tag.template data: { "#{NEW_ITEM_CONTROLLER}-target" => "template" } do
|
35
|
-
navigation_editor_items(item: item)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def default_options(options)
|
42
|
-
add_option(options, :draggable, true)
|
43
|
-
add_option(options, :role, "listitem")
|
44
|
-
add_option(options, :data, :turbo_frame, TURBO_FRAME)
|
45
|
-
add_option(options, :data, :controller, NEW_ITEM_CONTROLLER)
|
46
|
-
add_option(options, :data, :action, ACTIONS)
|
47
|
-
|
48
|
-
options
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Katalyst
|
4
|
-
module Navigation
|
5
|
-
module EditorHelper
|
6
|
-
def navigation_editor_new_items(menu)
|
7
|
-
Katalyst::Navigation.config.items.map do |item_class|
|
8
|
-
item_class = item_class.safe_constantize if item_class.is_a?(String)
|
9
|
-
item_class.new(menu: menu)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def navigation_editor_menu(menu:, **options, &block)
|
14
|
-
Editor::Menu.new(self, menu).build(options, &block)
|
15
|
-
end
|
16
|
-
|
17
|
-
def navigation_editor_list(menu:, items: menu.draft_items, **options)
|
18
|
-
Editor::List.new(self, menu).build(options) do |list|
|
19
|
-
list.items(*items) if items.present?
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
# Generate items without their list wrapper, similar to form_with/fields
|
24
|
-
def navigation_editor_items(item:, menu: item.menu)
|
25
|
-
Editor::List.new(self, menu).items(item)
|
26
|
-
end
|
27
|
-
|
28
|
-
# Generate a turbo stream fragment that will show structural errors to the user.
|
29
|
-
def navigation_editor_errors(menu:, **options)
|
30
|
-
turbo_stream.replace(dom_id(menu, :errors),
|
31
|
-
Editor::Errors.new(self, menu).build(**options))
|
32
|
-
end
|
33
|
-
|
34
|
-
# Generate a new item template.
|
35
|
-
def navigation_editor_new_item(item:, menu: item.menu, **options, &block)
|
36
|
-
Editor::NewItem.new(self, menu).build(item, **options, &block)
|
37
|
-
end
|
38
|
-
|
39
|
-
def navigation_editor_item(item:, menu: item.menu, **options, &block)
|
40
|
-
Editor::Item.new(self, menu).build(item, **options, &block)
|
41
|
-
end
|
42
|
-
|
43
|
-
def navigation_editor_item_fields(item:, menu: item.menu)
|
44
|
-
Editor::Item.new(self, menu).fields(item)
|
45
|
-
end
|
46
|
-
|
47
|
-
def navigation_editor_status_bar(menu:, **options)
|
48
|
-
Editor::StatusBar.new(self, menu).build(**options)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<%= navigation_editor_item item: item do |builder| %>
|
2
|
-
<div class="tree" data-invisible="<%= !item.visible? %>">
|
3
|
-
<%= builder.accordion_actions %>
|
4
|
-
|
5
|
-
<span role="img" value="<%= item.model_name.param_key %>" title="Type"></span>
|
6
|
-
<h4 class="title" title="<%= item.title %>"><%= item.title %></h4>
|
7
|
-
<span role="img" value="invisible" title="Hidden"></span>
|
8
|
-
</div>
|
9
|
-
|
10
|
-
<div class="url">
|
11
|
-
<%= link_to item.url || "", item.url || "", data: { turbo: false } %>
|
12
|
-
</div>
|
13
|
-
|
14
|
-
<%= builder.item_actions %>
|
15
|
-
<% end %>
|
File without changes
|
/data/app/{assets/javascripts/controllers → javascript}/navigation/editor/list_controller.js
RENAMED
File without changes
|
/data/app/{assets/javascripts/controllers → javascript}/navigation/editor/new_item_controller.js
RENAMED
File without changes
|
File without changes
|
/data/app/{assets/javascripts/controllers → javascript}/navigation/editor/status_bar_controller.js
RENAMED
File without changes
|