72 Commits

Author SHA1 Message Date
Robin Moffatt
7daf042a03
Disable copy code button in insecure contexts (#1226)
Implements point (2a) of https://github.com/just-the-docs/just-the-docs/issues/1202

## Secure context - behaviour unchanged

![image](https://user-images.githubusercontent.com/3671582/232823898-1b683b51-20ca-4e79-91cc-d543ae76aacd.png)

## Unsecure context - copy icon not shown and console message logged

![image](https://user-images.githubusercontent.com/3671582/232823972-94e2ef83-e526-4ca3-b16f-5f0f4243b50c.png)
2023-04-22 13:38:02 -07:00
flyx
fdf48d2fd3
Fix AsciiDoc code block styling (#1168)
These changes accommodate for some difference in the HTML structure AsciiDoc produces for source code listings:

 * proper padding for source code listings
 * proper vertical margin after source code listings
 * proper placement of the copy button if enabled

Closes #1163
2023-02-18 17:27:44 -08:00
Matt Wang
8894630659
Fix copy code button interaction with kramdown line numbers (#1143)
Co-authored-by: Simone <26844016+simonebortolin@users.noreply.github.com>
2023-02-05 14:58:56 -08:00
Dale Phurrough
7a01ef1a59
add options for custom lunr Liquid and JS code (#1068)
This is a prototype for review and discussion. My use and testing of this PR is on top of 6d9d41359c46882d9b64a446d5a83fac5b3e20a7. The changes are trival to rebase to `main` and I'm happy to do so if this prototype moves forward.


* Feature request details in linked issue, fixes just-the-docs/just-the-docs#1067
* I welcome feedback and all discussion
* A draft doc site of mine using this PR is at https://docs.hidale.com/

To use the prototype, the two include files need to be customized. Here are mine from the draft website 9c0d836408

Co-authored-by: Matt Wang <matt@matthewwang.me>
2023-01-13 19:08:33 -08:00
Matt Wang
2495d3e6bb
refactor: modularize site components (#1058)
Hi everyone, this is a large refactoring PR that looks to **modularize site components** following the discussion in #959. At the top-level, it:

- moves icons, the sidebar, header (navbar, search, aux links), footer, and mermaid components of the `default` layout into their own `_includes`
- creates a new `minimal` layout that does not render the header or sidebar as a proof-of-concept for the composability of components
- documents all existing and new layouts (including vendor code) in the "Customization" section 

An important goal of this PR is for it to be **just code motion and flexibility**: there should be **zero impact** on the average end user that only consumes the `default` theme.

The next few sections go in-depth on each of the listed changes.

### new components

The `default` layout contains a "list" of all relevant components. Importantly, some of these components have sub-components:

- the header is split into the search bar, custom code, and aux links
- the icons include imports different icon components, some of which are conditionally imported by feature guards

There are also candidates for future splits and joins:

- the sidebar could be split into navigation, collections, external link, and header/footer code
- the "search footer" could be joined with other search code, which would make it easier to "include search" in one go; *however, this is a markup change*
- @kevinlin1 has pointed out that there is some leakage between the sidebar (which computes parents/grandparents) and the breadcrumbs (which needs them to render). He's graciously added a bandaid fix to `minimal` (which does not render the sidebar). However, in the long term, we should either:
    - calculate this in a parent and pass the information to both components
    - change how this works entirely (which may happen with multi-level navigation)

@pdmosses has done a great job outlining this and more in his [Modular Layouts test site](https://pdmosses.github.io/modular-layouts/docs/main/).

### minimal layout

Based on @kevinlin1's use-case in just-the-class (see: his [Winter 2023 CSE 373 site](https://courses.cs.washington.edu/courses/cse373/23wi/)), we've created a first-class `minimal` layout that does not render the sidebar or header.

In a [comment](https://github.com/just-the-docs/just-the-docs/pull/1058#discussion_r1057015039), Kevin has indicated that we can re-add the search bar in the minimal layout; however, it seems like this would be a code change. I think we should punt this to a future issue/PR.

@pdmosses has also discussed the confusion of `minimal` as a layout and its meaning in inheritance. I've added a note in documentation to clarify the (lack of) inheritance relationship.

### documentation

I've written documentation in the "Customization" page / [Custom layouts and includes](https://deploy-preview-1058--just-the-docs.netlify.app/docs/customization/#custom-layouts-and-includes) section explaining:

- generally, that we use includes/layouts (and pointing to docs)
- the `default` layout and its constituent components (with a warning about name collisions)
- creating alternative layouts with `minimal` as an example
- the inheritance chain of layouts and the vendor layouts that we consume

I've also created (and linked to) a [minimal layout test](https://deploy-preview-1058--just-the-docs.netlify.app/docs/minimal-test/) that is currently a copy of the markdown kitchen sink but with the minimal layout. I think there's room to improve this in the future.

### future work

I think there's a lot we can do. Let me break this into various sections.

Potential follow-ups before `v0.4.0`:

- re-including search in `minimal` (anticipating a minor code change)
- fixing the leakage of parent/grandparent information between the sidebar and breadcrumbs (anticipating no end-user code change, but good to evaluate separately and discuss)
- heavily document this in the migration guide (#1059) and in our RC4 release docs
- improve semantic markup for components (ex `main`, `nav`)

Related work in later minor versions:

- split up components into smaller components
- allow users to easily customize new layouts using frontmatter (see @kevinlin1's [comment in #959](https://github.com/just-the-docs/just-the-docs/issues/959#issuecomment-1249755249))

Related work for `v1.0` (i.e. a major breaking change):

- rename and better categorize existing includes
    - standardizing the "custom" includes
    - moving other components to the `components/` folder (ex `head`, `nav`)
    - potentially: less confusing naming for various components
- potentially separate the search and header as components, so that they are completely independent 

Tangentially related work:

- more flexible grid (see @JPrevost's [comment in this PR thread](https://github.com/just-the-docs/just-the-docs/pull/1058#issuecomment-1363314610))
- a formal [feature model](https://en.wikipedia.org/wiki/Feature_model) of JTD, documenting feature dependence (see @pdmosses's [comment in this PR thread](https://github.com/just-the-docs/just-the-docs/pull/1058#issuecomment-1365414023))
- better annotate new features (motivated by writing these docs)
    - we should add "New" to new features :) 
    - we should note when a feature was introduced (I think this is a core part of most software documentation)
    - we should annotate things that are "Advanced" in so far as the average Just the Docs user will not use them / they require significant Jekyll knowledge


--- 

Closes #959.
2023-01-07 16:08:45 -08:00
Simone
3d1f926a68
Fixes various bugs with copy code button (#1096)
This PR fixes three bugs:

# first bug

When revising my last PR #1086 I realised a slight bug in the code-copy PR #945 , my change to the css ignored a case. This PR is a hotfix and

Before PR #945:
![image](https://user-images.githubusercontent.com/26844016/209864912-2fe8e5a9-f21e-40c7-aa0d-65050196f4ee.png)

![image](https://user-images.githubusercontent.com/26844016/209864950-c315cef1-36ee-4356-91b2-db159cf3806f.png)

After PR #945:
![image](https://user-images.githubusercontent.com/26844016/209864524-70a8b095-056a-464b-9ff7-fd31397492ba.png)

![image](https://user-images.githubusercontent.com/26844016/209864558-9fd7a5d3-a965-4aa4-af62-a56846e331b3.png)

Fix:
![image](https://user-images.githubusercontent.com/26844016/209865514-a9921096-b852-4402-8272-b76908851ad6.png)

![image](https://user-images.githubusercontent.com/26844016/209865550-d7842507-74fc-4f21-b407-9b8917df1fd8.png)

# second bug

> @simonebortolin @mattxwang I'm trying to write some regression tests for this feature.
> 
> If I use GitHub's copy button to copy the following plain text, it preserves all the spaces:
> 
> ```
>  1 leading space
>   2 leading spaces and 2 trailing spaces  
> 3   internal spaces
> 4 trailing spaces    
> ```
> 
> Using the new copy button with the same text in this PR branch of JTD gives this:
> 
> ```
> 1 leading space
>    2 leading spaces and 2 trailing spaces  
>  3   internal spaces
>  4 trailing spaces
> ```
> 
> It appears that the leading space from line 1 has been removed, and inserted on all the other lines. Moreover, the 4 trailing spaces have been removed.
> 
> BTW, #924 didn't give a precise requirements spec, but mentioned the Microsoft docs UI; @mattxwang mentioned also the GitHub UI. It would be helpful to add a functional spec of what the JTD copy button is supposed to do, as a basis for regression tests.
> 
> I'm not aiming at a rigorous test for the UI. Personally (using Safari at the default mag) I find the clipboard icon too small: it just looks like a box, and I can hardly see that there is a clip at the top. But I don't have a suggestion for a better icon.

# third bug

When I re-read the code after the second bug, I noticed a bug that it does not always select the text field to be copied correctly  (in case there are also line numbers) is copied:

```
1
2
3
4

	
# Ruby code with syntax highlighting and fixed line numbers using Liquid
GitHubPages::Dependencies.gems.each do |gem, version|
  s.add_dependency(gem, "= #{version}")
end
```
instead of 
```
# Ruby code with syntax highlighting and fixed line numbers using Liquid
GitHubPages::Dependencies.gems.each do |gem, version|
  s.add_dependency(gem, "= #{version}")
end
```

Co-authored-by: Matt Wang <matt@matthewwang.me>
2023-01-03 14:44:26 -08:00
Simone
ce3f34bbc7
Add copy code button to code snippets (#945)
Hello everyone, this is my implementation for the copy button on the snippet (requested in #924)

The implementation is made 100% javascript as with or without a jekyll template modification you still have to execute some javascript code, and I consider it the best choice.

the button only appears if the mouse is over it, to allow the entire line to be read

the important CSS changes were made to make the copy button work even in the long code situation:


![image](https://user-images.githubusercontent.com/26844016/187731472-d4bf7828-2356-4d94-9c2d-9db863228f5f.png)

to avoid this:

![image](https://user-images.githubusercontent.com/26844016/183292313-d7f73d7d-58c0-4c7b-b5ba-e08bd285514b.png)

Co-authored-by: Matt Wang <matt@matthewwang.me>
2022-12-26 16:45:37 -08:00
Peter Mosses
672c284b6f
Fix nav scroll feature (#898)
The nav scroll feature had stopped working (altogether),
due to the change from absolute to relative urls.

This update uses the document location pathname as the `href`.
It appears to work locally.
2022-08-02 22:31:17 -07:00
Peter Mosses
70b34f01f7
Combination (#578)
This PR combines (and resolves conflicts between) #448, #463, #466, #494, #495, #496, #498, and #572. 

The main aim is to facilitate use of several of the implemented features _together_, when using the fork as a remote theme. It should also simplify merging the included PRs into a future release.

The branch [combination-rec-nav](https://github.com/pdmosses/just-the-docs/tree/combination-rec-nav) adds [multi-level navigation](https://github.com/pmarsceill/just-the-docs/pull/462) and (NEW:) [sibling links](https://github.com/pmarsceill/just-the-docs/pull/394) to the branch used for this PR. It includes updated [documentation for the navigation structure](https://pdmosses.github.io/just-the-docs/docs/navigation-structure/), and reorganised and extended [navigation tests](https://pdmosses.github.io/just-the-docs/tests/navigation/). The documentation and the tests can be browsed at the (temporary) [website published from the combination-rec-nav branch](https://pdmosses.github.io/just-the-docs/).

_Caveat:_ The changes to v0.3.3 in this PR and #462 have not yet been reviewed or approved, and may need updating before merging into a release of the theme. If you use a branch from a PR as a remote theme, there is a risk of such updates affecting your website. Moreover, these branches are likely to be deleted after they have been merged. To avoid  such problems, you could copy the branch that you want to use to your own fork of the theme.

Co-authored-by: Matt Wang <matt@matthewwang.me>
2022-07-04 12:15:10 -07:00
Silvio Giebl
51f15965f2 Merge branch 'feature/search-sections' into improvement/navigation-new
# Conflicts:
#	_includes/nav.html
#	_layouts/default.html
#	assets/js/search-data.json
#	docs/configuration.md
#	lib/tasks/search.rake
2020-06-15 22:06:16 +02:00
Silvio Giebl
16628f2b8e Improved search responsiveness for many results 2020-06-15 21:57:55 +02:00
Silvio Giebl
b7a5458375 Fixed fuzzy search hangs for long words 2020-06-15 21:57:55 +02:00
Silvio Giebl
da9276121a Improved search input for mobile
- font size 16px to prevent zooming on iOS Safari
- search input is scrolled into view on iOS Safari
- box-shadow is displayed correctly
2020-06-15 21:57:54 +02:00
Silvio Giebl
18f3a41600 Merge branch 'bugfix/page-scrolling' into improvement/navigation-new
# Conflicts:
#	_layouts/default.html
#	assets/js/just-the-docs.js
2020-06-15 21:44:30 +02:00
Silvio Giebl
e216623ed3 Merge branch 'improvement/search-button' into improvement/navigation-new 2020-06-15 21:37:31 +02:00
Silvio Giebl
c7466e88a8 Merge branch 'improvement/navigation' into improvement/navigation-new
# Conflicts:
#	_includes/nav.html
#	_layouts/default.html
2020-06-15 21:23:03 +02:00
Silvio Giebl
e2e01effa6 Add fuzzy search if no results were found 2020-01-03 22:44:04 +01:00
Silvio Giebl
19e35329d2 Fixed search result word wrap 2020-01-02 14:32:51 +01:00
Silvio Giebl
757742e79c Fixed search result word wrap 2020-01-02 14:20:09 +01:00
Silvio Giebl
f1c306c814 Multi search match highlight
Added multiple previews, configurable by site.search.previews
Improved search-data.json
2020-01-02 11:55:38 +01:00
Silvio Giebl
74681aeb21 Improved js function nesting 2020-01-01 16:50:31 +01:00
Silvio Giebl
c907e79251 Improved padding of active search input 2020-01-01 00:21:19 +01:00
Silvio Giebl
82b3f15443 Added search.button configuration
Improved documentation for search configurations
2019-12-29 21:30:44 +01:00
Silvio Giebl
ff30552748 Moved config search_tokenizer_separator -> search.tokenizer_separator 2019-12-29 20:08:34 +01:00
Silvio Giebl
7f5b1f14f1 Search for sections (configurable via search.heading_level)
Added more search configurations
Display "no results found"
2019-12-29 19:19:00 +01:00
Silvio Giebl
a6f2ed8c6c Improved search on mobile 2019-12-04 22:27:43 +01:00
Silvio Giebl
1d1564e5c0 Improved search layout: scrolling, mobile 2019-12-04 10:39:30 +01:00
Silvio Giebl
804cad6c4d Improved search interface 2019-12-03 09:12:54 +01:00
Silvio Giebl
d66ebdec4b Improved showing/hiding search results on focus/blur 2019-12-01 16:26:23 +01:00
Silvio Giebl
73047a078f Scroll page instead of nested div, removed nested divs 2019-11-27 22:07:22 +01:00
Silvio Giebl
301a4ab644 Merge branch 'improvement/navigation-merged' into improvement/search-button-merged
# Conflicts:
#	_layouts/default.html
2019-11-26 23:33:18 +01:00
Silvio Giebl
fd91140923 Merge branch 'master2' into improvement/navigation-merged
# Conflicts:
#	_layouts/default.html
2019-11-26 23:30:46 +01:00
Silvio Giebl
bb0e5222ca Merge branch 'master2' into improvement-custom-themes-merged 2019-11-26 23:27:33 +01:00
Patrick Marsceill
ff106641b0
syntax error 2019-09-09 16:09:05 -04:00
Patrick Marsceill
9616dcf761
Update just-the-docs.js 2019-09-09 15:50:48 -04:00
Peter Mosses
50cdf076b4 Add configuration option search_tokenizer_separator
The default is for hyphens to separate tokens in search terms: `gem-based` is equivalent to `gem based`.

This adds `search_tokenizer_separator` as a site configuation option, to support search for hyphenated words.
2019-08-29 15:36:13 +02:00
Silvio Giebl
887a18daa0 Improved search button and results, added blur to content
(cherry picked from commit 99371e971406090a2dba7b9b69f514a8f87afce3)
2019-08-16 00:38:32 +02:00
Silvio Giebl
cc0b57727d Added search button and menu icon
(cherry picked from commit 468264941d08b00252a4f6f081bc2dff5920bffe)
2019-08-16 00:38:03 +02:00
Silvio Giebl
e13a62b7b5 Fixed js browser incompatibility
(cherry picked from commit 9f3f38acf4e1ac40e3fb2b2f86018d4cba28dd07)
2019-08-15 23:41:38 +02:00
Silvio Giebl
a5842c0d7b Fixed js browser incompatibility
(cherry picked from commit 86ff2dac05412a6ff994968c2be6122a7fcf85f9)
2019-08-15 23:41:35 +02:00
Silvio Giebl
6bd43a1332 Fixed js browser incompatibility
(cherry picked from commit d39b7b3041d1bdb9f80ab7f5878e64a3b3b79b5d)
2019-08-15 23:41:33 +02:00
Silvio Giebl
bf86c33fe1 Added feedback color variable for nav item/search result hover
(cherry picked from commit f25d76730b175fb680aa2770fb20a67fd858ffbb)
2019-08-15 23:41:13 +02:00
Silvio Giebl
0ebbe4bb4e Improved navigation: folding, vsual feedback, optimization for mobile
(cherry picked from commit db50f282bab1e98397cc7434a811b8b7da2fe6dc)
2019-08-15 23:38:58 +02:00
Silvio Giebl
721ca36d85 Cleaned ids and classes
(cherry picked from commit 2b153ed074811e735aaa58d57a3fcdf7838e17f5)
2019-08-15 23:05:32 +02:00
Silvio Giebl
cba53a6914 Make themes more customizable
(cherry picked from commit dffb2706a158784e2f3091f895a868e373683bc8)
2019-08-15 18:35:10 +02:00
Silvio Giebl
c227db4406
Moved custom.js to includes 2019-08-14 10:07:36 -04:00
Silvio Giebl
4a574a2ec2
Fixed custom js 2019-08-14 09:57:27 -04:00
Patrick Marsceill
5867dc078f
Add rel path to title matches 2019-08-13 17:34:42 -04:00
Patrick Marsceill
d0325e948e
Fix up search results display 2019-08-13 17:24:36 -04:00
Silvio Giebl
008809e00b Include custom js, added js namespace 2019-05-19 20:40:54 +02:00