lookbook 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18630747bc279477cc077cccfd3f2df3611d6d277c1140f1d63616cb9fc4cc4e
4
- data.tar.gz: 40ca16f9e0f8ad6a44b93c7678700f728fdeaf149e1bc14cd36efd17a2c58b8b
3
+ metadata.gz: e489fa4bdff458098a029cf9d2bc25d6e16a70e11a92a1be7a77114ad43e0f63
4
+ data.tar.gz: c5efc75e6a4d0b16493cd1eb21d3ace790af22b64ba22e3c00edfb1bb6a58e5d
5
5
  SHA512:
6
- metadata.gz: 8c13c64ca2591b32c832efbd7624106562990e2eda63bb1260af07ac1ed26727d1f716751b43a82470b638158374e16fa5128871d6f6a656c9fca59c2f00669f
7
- data.tar.gz: 6ccd1a92b40b72734a27568a6461158cffd59ca0a6d87eb4f997453ce3a60fa30face2b0cbe1ed83facc181b9d1c6b6373559e32fd6c0d026406c024b09be309
6
+ metadata.gz: 9cf5f58aedde5c3bac838a15f9fc1dadabc46ce667987b689ce4fc9a83c95cd11fe908f1b2fb69f59b20ffdaa85a306e8e8af89988b65de085d73c5a7b73f9d8
7
+ data.tar.gz: 59d122a52a50a77a9e30cfd484789fa1de533ca244b20c7cecefd02521c30fd5c962d59c2d40ff85f1fff786a1d4a864c3f3887625dc08214b2dac96c4a22f10
@@ -12,7 +12,7 @@ module Lookbook
12
12
  end
13
13
 
14
14
  def items
15
- tree.map do |node|
15
+ @items ||= tree.map do |node|
16
16
  item_class = (node.type == :directory) ? Nav::Directory::Component : Nav::Entity::Component
17
17
  lookbook_render item_class.new node, nav_id: id
18
18
  end
@@ -15,7 +15,7 @@ module Lookbook
15
15
  end
16
16
 
17
17
  def left_pad
18
- ((depth - 1) * 12) + 24
18
+ depth * 12
19
19
  end
20
20
 
21
21
  def children
@@ -34,7 +34,7 @@ module Lookbook
34
34
  value: param.value,
35
35
  value_type: param.value_type,
36
36
  value_default: param.value_default,
37
- input_options: input_options.except(:choices),
37
+ input_options: input_options.except(:choices, :opts),
38
38
  choices: input_options[:choices])
39
39
  end
40
40
 
@@ -13,7 +13,7 @@
13
13
  <%= lookbook_render :button, icon: :menu, class: "-ml-3", "x-show": "visibleTabsCount === 0" %>
14
14
  </div>
15
15
  <div class="hidden">
16
- <div x-ref="tabsDropdown" data-cloak>
16
+ <div x-ref="tabsDropdown" x-cloak>
17
17
  <%= safe_join(dropdown_tabs) %>
18
18
  </div>
19
19
  </div>
@@ -33,6 +33,10 @@ export default function tabsComponent(store) {
33
33
 
34
34
  init() {
35
35
  this.$nextTick(() => {
36
+ if (this.$root.parentElement.offsetWidth === this.$root.offsetWidth) {
37
+ this.visibleTabsCount = this.tabs.length;
38
+ }
39
+
36
40
  dropdown = tippy(this.$refs.dropdownTrigger, {
37
41
  content: this.$refs.tabsDropdown,
38
42
  theme: "menu",
@@ -1,60 +1,62 @@
1
1
  <% content_for :shell do %>
2
2
  <% if @previews.any? || @pages.any? %>
3
- <%= lookbook_render :split_layout,
4
- alpine_data: "$store.layout.main",
5
- ":class": "$store.layout.mobile && '!block'" do |layout| %>
3
+ <% cache do %>
4
+ <%= lookbook_render :split_layout,
5
+ alpine_data: "$store.layout.main",
6
+ ":class": "$store.layout.mobile && '!block'" do |layout| %>
6
7
 
7
- <% layout.pane id: "app-sidebar", class: "flex flex-col bg-lookbook-sidebar-bg relative translate-x-0",
8
- ":class": "{
9
- 'transition': $store.layout.mobile,
10
- 'translate-x-full': $store.layout.mobile && sidebarHidden,
11
- '!absolute right-0 bottom-0 top-[40px] h-[calc(100%_-_40px)] w-full max-w-[420px] z-50 border-l border-lookbook-divider': $store.layout.mobile
12
- }",
13
- "@click.outside": "closeMobileSidebar",
14
- cloak: true do %>
8
+ <% layout.pane id: "app-sidebar", class: "flex flex-col bg-lookbook-sidebar-bg relative translate-x-0",
9
+ ":class": "{
10
+ 'transition': $store.layout.mobile,
11
+ 'translate-x-full': $store.layout.mobile && sidebarHidden,
12
+ '!absolute right-0 bottom-0 top-[40px] h-[calc(100%_-_40px)] w-full max-w-[420px] z-50 border-l border-lookbook-divider': $store.layout.mobile
13
+ }",
14
+ "@click.outside": "closeMobileSidebar",
15
+ cloak: true do %>
15
16
 
16
- <%= lookbook_render :split_layout,
17
- alpine_data: "$store.layout.#{@pages.any? && @previews.any? ? "sidebar" : "singleSectionSidebar"}",
18
- style: "height: calc(100vh - 2.5rem);" do |layout| %>
17
+ <%= lookbook_render :split_layout,
18
+ alpine_data: "$store.layout.#{@pages.any? && @previews.any? ? "sidebar" : "singleSectionSidebar"}",
19
+ style: "height: calc(100vh - 2.5rem);" do |layout| %>
19
20
 
20
- <% if @previews.any? %>
21
- <% layout.pane class: "overflow-hidden" do %>
22
- <%= lookbook_render :nav,
23
- id: "previews-nav",
24
- tree: @previews.to_tree,
25
- alpine_data: "$store.nav.previews" do |nav| %>
26
- <%= nav.toolbar do |toolbar| %>
27
- <% toolbar.section padded: true do %>
28
- <h4 class="pt-1">Previews</h4>
29
- <% end %>
30
- <% toolbar.section align: :right, padded: false do %>
31
- <%= lookbook_render :button_group, size: :xs do |group| %>
32
- <% group.button icon: :minus_square,
33
- tooltip: "Collapse all",
34
- "@click": "closeAll" %>
21
+ <% if @previews.any? %>
22
+ <% layout.pane class: "overflow-hidden" do %>
23
+ <%= lookbook_render :nav,
24
+ id: "previews-nav",
25
+ tree: @previews.to_tree,
26
+ alpine_data: "$store.nav.previews" do |nav| %>
27
+ <%= nav.toolbar do |toolbar| %>
28
+ <% toolbar.section padded: true do %>
29
+ <h4 class="pt-1">Previews</h4>
30
+ <% end %>
31
+ <% toolbar.section align: :right, padded: false do %>
32
+ <%= lookbook_render :button_group, size: :xs do |group| %>
33
+ <% group.button icon: :minus_square,
34
+ tooltip: "Collapse all",
35
+ "@click": "closeAll" %>
36
+ <% end %>
35
37
  <% end %>
36
38
  <% end %>
39
+ <% nav.filter store: "$store.nav.previews.filter", placeholder: "Filter previews by name&hellip;" %>
37
40
  <% end %>
38
- <% nav.filter store: "$store.nav.previews.filter", placeholder: "Filter previews by name&hellip;" %>
39
41
  <% end %>
40
42
  <% end %>
41
- <% end %>
42
43
 
43
- <% if @pages.any? %>
44
- <% layout.pane class: "overflow-hidden" do %>
45
- <%= lookbook_render :nav,
46
- id: "pages-nav",
47
- tree: @pages.to_tree,
48
- alpine_data: "$store.nav.pages" do |nav| %>
49
- <%= nav.toolbar do |toolbar| %>
50
- <% toolbar.section padded: true do %>
51
- <h4 class="pt-1">Pages</h4>
52
- <% end %>
53
- <% toolbar.section align: :right, padded: false do %>
54
- <%= lookbook_render :button_group, size: :xs do |group| %>
55
- <% group.button icon: :minus_square,
56
- tooltip: "Collapse all",
57
- "@click": "closeAll" %>
44
+ <% if @pages.any? %>
45
+ <% layout.pane class: "overflow-hidden" do %>
46
+ <%= lookbook_render :nav,
47
+ id: "pages-nav",
48
+ tree: @pages.to_tree,
49
+ alpine_data: "$store.nav.pages" do |nav| %>
50
+ <%= nav.toolbar do |toolbar| %>
51
+ <% toolbar.section padded: true do %>
52
+ <h4 class="pt-1">Pages</h4>
53
+ <% end %>
54
+ <% toolbar.section align: :right, padded: false do %>
55
+ <%= lookbook_render :button_group, size: :xs do |group| %>
56
+ <% group.button icon: :minus_square,
57
+ tooltip: "Collapse all",
58
+ "@click": "closeAll" %>
59
+ <% end %>
58
60
  <% end %>
59
61
  <% end %>
60
62
  <% end %>
@@ -62,10 +64,10 @@
62
64
  <% end %>
63
65
  <% end %>
64
66
  <% end %>
65
- <% end %>
66
67
 
67
- <% layout.pane id: "app-main", class: "overflow-hidden h-full", ":class": "$store.layout.mobile && 'w-screen'" do %>
68
- <%= content_for?(:main) ? yield(:main) : yield %>
68
+ <% layout.pane id: "app-main", class: "overflow-hidden h-full", ":class": "$store.layout.mobile && 'w-screen'" do %>
69
+ <%= content_for?(:main) ? yield(:main) : yield %>
70
+ <% end %>
69
71
  <% end %>
70
72
  <% end %>
71
73
  <% else %>
@@ -76,4 +78,4 @@
76
78
  <div class="absolute opacity-0 bg-black inset-0 top-[39px] z-[-1] transition-opacity" :class="($store.layout.mobile && !sidebarHidden) && '!opacity-30 !z-40'" data-cloak></div>
77
79
  <% end %>
78
80
 
79
- <%= render template: "layouts/lookbook/shell" %>
81
+ <%= render template: "layouts/lookbook/shell" %>
@@ -2,6 +2,7 @@
2
2
  <div
3
3
  id="app"
4
4
  x-data="app"
5
+ x-cloak
5
6
  @popstate.window="handleNavigation"
6
7
  @click.document="hijax"
7
8
  @navigation:start="closeMobileSidebar"
@@ -11,10 +11,10 @@ span_classes = [
11
11
  ]
12
12
  %>
13
13
 
14
- <%= button_tag **input_options,
14
+ <%= tag.button **input_options,
15
15
  class: class_names(button_classes),
16
16
  role: "switch",
17
17
  type: "button",
18
- "@click.stop": "value = value == 'true' ? 'false' : 'true'" do %>
18
+ "@click.stop": "value = value == 'true' ? 'false' : 'true'", escape: false do %>
19
19
  <%= tag.span "aria-hidden": true, class: class_names(span_classes) %>
20
- <% end %>
20
+ <% end %>
@@ -20,12 +20,18 @@ module Lookbook
20
20
 
21
21
  def self.preview_from_code_object(code_object)
22
22
  klass = code_object.path.constantize
23
- Preview.new(code_object) if klass.ancestors.include?(ViewComponent::Preview)
23
+ Preview.new(code_object) if preview_class?(klass)
24
24
  rescue => exception
25
- Lookbook.logger.error LookbookError.new(exception)
25
+ Lookbook.logger.error exception.to_s
26
26
  nil
27
27
  end
28
28
 
29
+ def self.preview_class?(klass)
30
+ if klass.ancestors.include?(ViewComponent::Preview)
31
+ !klass.respond_to?(:abstract_class) || klass.abstract_class != true
32
+ end
33
+ end
34
+
29
35
  protected
30
36
 
31
37
  def examples
@@ -65,8 +65,8 @@ module Lookbook
65
65
  def base_directory
66
66
  return @_base_directory if @_base_directory
67
67
 
68
- directories = [Rails.root, *Array(base_directories)].map(&:to_s).sort_by(&:length).reverse
69
- @_base_directory ||= directories.first { |dir| file_path.start_with?(dir) }
68
+ directories = Array(base_directories).map(&:to_s).sort_by { |path| path.split("/").size }.reverse
69
+ @_base_directory ||= directories.find { |dir| file_path.to_s.start_with?(dir) }
70
70
  end
71
71
  end
72
72
  end
@@ -1,7 +1,7 @@
1
1
  module Lookbook
2
2
  class ParamTag < YardTag
3
3
  VALUE_TYPE_MATCHER = /^(\[\s?([A-Z]{1}\w+)\s?\])/
4
- DESCRIPTION_MATCHER = /"(.*[^\\])"$/
4
+ DESCRIPTION_MATCHER = /(?<=\s|^)"(.*[^\\])"(?:\s|$)/
5
5
 
6
6
  supports_options
7
7
 
@@ -1,3 +1,3 @@
1
1
  module Lookbook
2
- VERSION = "1.4.1"
2
+ VERSION = "1.4.2"
3
3
  end
@@ -7705,7 +7705,7 @@ function $5439cede634b2921$var$toCamel(s) {
7705
7705
  }
7706
7706
 
7707
7707
 
7708
- var $068816311f4006ce$exports = {};
7708
+ var $368fec5c8619cf6d$exports = {};
7709
7709
  var $cbd28b10fa9798c7$exports = {};
7710
7710
 
7711
7711
  $parcel$defineInteropFlag($cbd28b10fa9798c7$exports);
@@ -11228,16 +11228,6 @@ function $cbd28b10fa9798c7$export$2e2bcd8739ae039() {
11228
11228
  }
11229
11229
 
11230
11230
 
11231
- var $99486586f6691564$exports = {};
11232
-
11233
- $parcel$defineInteropFlag($99486586f6691564$exports);
11234
-
11235
- $parcel$export($99486586f6691564$exports, "default", () => $99486586f6691564$export$2e2bcd8739ae039);
11236
- function $99486586f6691564$export$2e2bcd8739ae039() {
11237
- return {};
11238
- }
11239
-
11240
-
11241
11231
  var $47a1c62621be0c54$exports = {};
11242
11232
 
11243
11233
  $parcel$defineInteropFlag($47a1c62621be0c54$exports);
@@ -11327,28 +11317,13 @@ function $e398acaded942bbe$export$2e2bcd8739ae039(targetSelector) {
11327
11317
  }
11328
11318
 
11329
11319
 
11330
- var $e9904a14dabf652d$exports = {};
11320
+ var $99486586f6691564$exports = {};
11331
11321
 
11332
- $parcel$defineInteropFlag($e9904a14dabf652d$exports);
11322
+ $parcel$defineInteropFlag($99486586f6691564$exports);
11333
11323
 
11334
- $parcel$export($e9904a14dabf652d$exports, "default", () => $e9904a14dabf652d$export$2e2bcd8739ae039);
11335
- function $e9904a14dabf652d$export$2e2bcd8739ae039(store) {
11336
- return {
11337
- focussed: false,
11338
- get active () {
11339
- return store.active;
11340
- },
11341
- get text () {
11342
- return store.text;
11343
- },
11344
- clear () {
11345
- if (store.raw === "") this.$refs.input.blur();
11346
- else store.raw = "";
11347
- },
11348
- focus () {
11349
- this.$refs.input.focus();
11350
- }
11351
- };
11324
+ $parcel$export($99486586f6691564$exports, "default", () => $99486586f6691564$export$2e2bcd8739ae039);
11325
+ function $99486586f6691564$export$2e2bcd8739ae039() {
11326
+ return {};
11352
11327
  }
11353
11328
 
11354
11329
 
@@ -12226,6 +12201,43 @@ function $e1f51f020443edd4$export$2e2bcd8739ae039(id, embedStore) {
12226
12201
  }
12227
12202
 
12228
12203
 
12204
+ var $e9904a14dabf652d$exports = {};
12205
+
12206
+ $parcel$defineInteropFlag($e9904a14dabf652d$exports);
12207
+
12208
+ $parcel$export($e9904a14dabf652d$exports, "default", () => $e9904a14dabf652d$export$2e2bcd8739ae039);
12209
+ function $e9904a14dabf652d$export$2e2bcd8739ae039(store) {
12210
+ return {
12211
+ focussed: false,
12212
+ get active () {
12213
+ return store.active;
12214
+ },
12215
+ get text () {
12216
+ return store.text;
12217
+ },
12218
+ clear () {
12219
+ if (store.raw === "") this.$refs.input.blur();
12220
+ else store.raw = "";
12221
+ },
12222
+ focus () {
12223
+ this.$refs.input.focus();
12224
+ }
12225
+ };
12226
+ }
12227
+
12228
+
12229
+ var $36506012e0c6e9e3$exports = {};
12230
+
12231
+ $parcel$defineInteropFlag($36506012e0c6e9e3$exports);
12232
+
12233
+ $parcel$export($36506012e0c6e9e3$exports, "default", () => $36506012e0c6e9e3$export$2e2bcd8739ae039);
12234
+ function $36506012e0c6e9e3$export$2e2bcd8739ae039(iconName) {
12235
+ return {
12236
+ iconName: iconName
12237
+ };
12238
+ }
12239
+
12240
+
12229
12241
  var $d92d9d5253f84566$exports = {};
12230
12242
 
12231
12243
  $parcel$defineInteropFlag($d92d9d5253f84566$exports);
@@ -12270,18 +12282,6 @@ function $d92d9d5253f84566$export$2e2bcd8739ae039(store) {
12270
12282
  }
12271
12283
 
12272
12284
 
12273
- var $36506012e0c6e9e3$exports = {};
12274
-
12275
- $parcel$defineInteropFlag($36506012e0c6e9e3$exports);
12276
-
12277
- $parcel$export($36506012e0c6e9e3$exports, "default", () => $36506012e0c6e9e3$export$2e2bcd8739ae039);
12278
- function $36506012e0c6e9e3$export$2e2bcd8739ae039(iconName) {
12279
- return {
12280
- iconName: iconName
12281
- };
12282
- }
12283
-
12284
-
12285
12285
  var $506dabb2bf255b38$exports = {};
12286
12286
 
12287
12287
  $parcel$defineInteropFlag($506dabb2bf255b38$exports);
@@ -12832,6 +12832,33 @@ function $506dabb2bf255b38$var$sizeSplits(sizes) {
12832
12832
  }
12833
12833
 
12834
12834
 
12835
+ var $a87dacf5139b5e2f$exports = {};
12836
+
12837
+ $parcel$defineInteropFlag($a87dacf5139b5e2f$exports);
12838
+
12839
+ $parcel$export($a87dacf5139b5e2f$exports, "default", () => $a87dacf5139b5e2f$export$2e2bcd8739ae039);
12840
+ function $a87dacf5139b5e2f$export$2e2bcd8739ae039(store) {
12841
+ return {
12842
+ get store () {
12843
+ return store || this;
12844
+ },
12845
+ get id () {
12846
+ return this.$root.id;
12847
+ },
12848
+ get panels () {
12849
+ return Array.from(this.$refs.panels.children);
12850
+ },
12851
+ isActive (el) {
12852
+ return this.store.activeTab === this._getRef(el);
12853
+ },
12854
+ // protected
12855
+ _getRef (el) {
12856
+ return el.getAttribute("x-ref");
12857
+ }
12858
+ };
12859
+ }
12860
+
12861
+
12835
12862
  var $0db07828cadc68e0$exports = {};
12836
12863
 
12837
12864
  $parcel$defineInteropFlag($0db07828cadc68e0$exports);
@@ -12863,6 +12890,7 @@ function $0db07828cadc68e0$export$2e2bcd8739ae039(store) {
12863
12890
  },
12864
12891
  init () {
12865
12892
  this.$nextTick(()=>{
12893
+ if (this.$root.parentElement.offsetWidth === this.$root.offsetWidth) this.visibleTabsCount = this.tabs.length;
12866
12894
  dropdown = (0, $d6f449055c23f07a$export$2e2bcd8739ae039)(this.$refs.dropdownTrigger, {
12867
12895
  content: this.$refs.tabsDropdown,
12868
12896
  theme: "menu",
@@ -12924,33 +12952,6 @@ function $0db07828cadc68e0$export$2e2bcd8739ae039(store) {
12924
12952
  }
12925
12953
 
12926
12954
 
12927
- var $a87dacf5139b5e2f$exports = {};
12928
-
12929
- $parcel$defineInteropFlag($a87dacf5139b5e2f$exports);
12930
-
12931
- $parcel$export($a87dacf5139b5e2f$exports, "default", () => $a87dacf5139b5e2f$export$2e2bcd8739ae039);
12932
- function $a87dacf5139b5e2f$export$2e2bcd8739ae039(store) {
12933
- return {
12934
- get store () {
12935
- return store || this;
12936
- },
12937
- get id () {
12938
- return this.$root.id;
12939
- },
12940
- get panels () {
12941
- return Array.from(this.$refs.panels.children);
12942
- },
12943
- isActive (el) {
12944
- return this.store.activeTab === this._getRef(el);
12945
- },
12946
- // protected
12947
- _getRef (el) {
12948
- return el.getAttribute("x-ref");
12949
- }
12950
- };
12951
- }
12952
-
12953
-
12954
12955
  var $6d64716f0b34fdf4$exports = {};
12955
12956
 
12956
12957
  $parcel$defineInteropFlag($6d64716f0b34fdf4$exports);
@@ -13078,18 +13079,18 @@ function $6d64716f0b34fdf4$export$2e2bcd8739ae039(store) {
13078
13079
  }
13079
13080
 
13080
13081
 
13081
- $068816311f4006ce$exports = {
13082
+ $368fec5c8619cf6d$exports = {
13082
13083
  "button": $cbd28b10fa9798c7$exports,
13083
- "code": $99486586f6691564$exports,
13084
13084
  "copy_button": $47a1c62621be0c54$exports,
13085
13085
  "dimensions_display": $e398acaded942bbe$exports,
13086
- "filter": $e9904a14dabf652d$exports,
13086
+ "code": $99486586f6691564$exports,
13087
13087
  "embed": $e1f51f020443edd4$exports,
13088
- "nav": $d92d9d5253f84566$exports,
13088
+ "filter": $e9904a14dabf652d$exports,
13089
13089
  "icon": $36506012e0c6e9e3$exports,
13090
+ "nav": $d92d9d5253f84566$exports,
13090
13091
  "split_layout": $506dabb2bf255b38$exports,
13091
- "tabs": $0db07828cadc68e0$exports,
13092
13092
  "tab_panels": $a87dacf5139b5e2f$exports,
13093
+ "tabs": $0db07828cadc68e0$exports,
13093
13094
  "viewport": $6d64716f0b34fdf4$exports
13094
13095
  };
13095
13096
 
@@ -13379,7 +13380,7 @@ const $d73574cc5e9b9e72$var$prefix = window.APP_NAME;
13379
13380
  // Components
13380
13381
  (0, $caa9439642c6336c$export$2e2bcd8739ae039).data("app", (0, $d709d0f4027033b2$export$2e2bcd8739ae039));
13381
13382
  [
13382
- $068816311f4006ce$exports,
13383
+ $368fec5c8619cf6d$exports,
13383
13384
  $fe98e3f2bf49b28f$exports,
13384
13385
  $6c10158820e535ef$exports
13385
13386
  ].forEach((scripts)=>{