Skip to content

Commit 8306f6c

Browse files
committed
feat(template-builder): add conditional close button to toolbar
- toolbar.hbs: render a close/back button on the left side of the toolbar when @onclose is provided; separated from element-type buttons by a vertical divider. Defaults to a chevron-left icon; @closeIcon and @closeLabel args allow customisation. - toolbar.js: add close() @action that calls @onclose if present; update JSDoc to document @onclose, @closeIcon, @closeLabel args. - template-builder.hbs: forward @onclose, @closeIcon, @closeLabel from the root component down to <TemplateBuilder::Toolbar>. - template-builder.js: document the three new optional args in the class JSDoc block.
1 parent e2efe85 commit 8306f6c

File tree

4 files changed

+31
-1
lines changed

4 files changed

+31
-1
lines changed

addon/components/template-builder.hbs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
@onPreview={{this.preview}}
2020
@onSave={{this.save}}
2121
@onRotateElement={{this.rotateElement}}
22+
@onClose={{@onClose}}
23+
@closeIcon={{@closeIcon}}
24+
@closeLabel={{@closeLabel}}
2225
/>
2326

2427
{{! ================================================================ }}

addon/components/template-builder.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ import { next } from '@ember/runloop';
5555
* @argument {Boolean} isSaving - Whether a save is in progress (controls toolbar spinner)
5656
* @argument {Function} onSave - Called with the updated template object when Save is clicked
5757
* @argument {Function} onPreview - Called with the current template object when Preview is clicked
58+
* @argument {Function} [onClose] - Optional. If provided, a close/back button appears in the toolbar.
59+
* @argument {String} [closeIcon] - FontAwesome icon for the close button (default: 'chevron-left')
60+
* @argument {String} [closeLabel] - Text label beside the close icon (default: none — icon only)
5861
*/
5962
export default class TemplateBuilderComponent extends Component {
6063
@service fetch;

addon/components/template-builder/toolbar.hbs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,24 @@
11
{{! Template Builder Toolbar }}
22
<div class="tb-toolbar flex items-center justify-between px-3 py-2 border-b border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900" ...attributes>
33

4-
{{! Left: Element type buttons }}
4+
{{! Left: Close/back button (optional) + Element type buttons }}
55
<div class="flex items-center space-x-1">
6+
7+
{{#if @onClose}}
8+
<button
9+
type="button"
10+
class="tb-toolbar-btn flex items-center space-x-1 px-2 py-1.5 rounded text-xs font-medium text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 hover:text-gray-900 dark:hover:text-white transition-colors mr-1"
11+
title={{or @closeLabel "Close"}}
12+
{{on "click" this.close}}
13+
>
14+
<FaIcon @icon={{or @closeIcon "chevron-left"}} class="w-3.5 h-3.5" />
15+
{{#if @closeLabel}}
16+
<span class="hidden xl:inline">{{@closeLabel}}</span>
17+
{{/if}}
18+
</button>
19+
<div class="w-px h-5 bg-gray-200 dark:bg-gray-700 mr-1"></div>
20+
{{/if}}
21+
622
{{#each this.elementTypes as |et|}}
723
<button
824
type="button"

addon/components/template-builder/toolbar.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ import { action } from '@ember/object';
2424
* @argument {Function} onPreview - Called when preview is clicked
2525
* @argument {Function} onSave - Called when save is clicked
2626
* @argument {Function} onRotateElement - Called with (uuid, deltaDegrees)
27+
* @argument {Function} [onClose] - Optional. If provided, a close/back button is rendered on the left.
28+
* @argument {String} [closeIcon] - FontAwesome icon name for the close button (default: 'chevron-left')
29+
* @argument {String} [closeLabel] - Text label shown beside the close icon (default: none)
2730
*/
2831
export default class TemplateBuilderToolbarComponent extends Component {
2932
elementTypes = [
@@ -82,6 +85,11 @@ export default class TemplateBuilderToolbarComponent extends Component {
8285
if (this.args.onSave) this.args.onSave();
8386
}
8487

88+
@action
89+
close() {
90+
if (this.args.onClose) this.args.onClose();
91+
}
92+
8593
@action
8694
rotateLeft() {
8795
if (this.args.onRotateElement && this.args.selectedElement) {

0 commit comments

Comments
 (0)