Browse Source

Merge pull request #7226 from weseek/fix/lsx-attrs

fix: Lsx "filter" and "except" options does not work
Yuki Takei 3 years ago
parent
commit
e02d386ddc

+ 4 - 4
packages/remark-lsx/src/components/Lsx.tsx

@@ -19,23 +19,23 @@ type Props = {
   sort?: string,
   reverse?: string,
   filter?: string,
+  except?: string,
 
   isImmutable?: boolean,
 };
 
 export const Lsx = React.memo(({
   prefix,
-  num, depth, sort, reverse, filter,
+  num, depth, sort, reverse, filter, except,
   isImmutable,
-  ...props
 }: Props): JSX.Element => {
 
   const lsxContext = useMemo(() => {
     const options = {
-      num, depth, sort, reverse, filter,
+      num, depth, sort, reverse, filter, except,
     };
     return new LsxContext(prefix, options);
-  }, [depth, filter, num, prefix, reverse, sort]);
+  }, [depth, filter, num, prefix, reverse, sort, except]);
 
   const { data, error } = useSWRxNodeTree(lsxContext, isImmutable);
 

+ 4 - 3
packages/remark-lsx/src/server/routes/lsx.js

@@ -1,6 +1,6 @@
 import createError, { isHttpError } from 'http-errors';
 
-const { pagePathUtils, customTagUtils } = require('@growi/core');
+const { pathUtils, pagePathUtils, customTagUtils } = require('@growi/core');
 
 const { OptionParser } = customTagUtils;
 
@@ -8,6 +8,7 @@ const { OptionParser } = customTagUtils;
 const DEFAULT_PAGES_NUM = 50;
 
 
+const { addTrailingSlash } = pathUtils;
 const { isTopPage } = pagePathUtils;
 
 class Lsx {
@@ -105,10 +106,10 @@ class Lsx {
     let filterPath = '';
     if (optionsFilter.charAt(0) === '^') {
       // move '^' to the first of path
-      filterPath = new RegExp(`^${pagePath}${optionsFilter.slice(1, optionsFilter.length)}`);
+      filterPath = new RegExp(`^${addTrailingSlash(pagePath)}${optionsFilter.slice(1, optionsFilter.length)}`);
     }
     else {
-      filterPath = new RegExp(`^${pagePath}.*${optionsFilter}`);
+      filterPath = new RegExp(`^${addTrailingSlash(pagePath)}.*${optionsFilter}`);
     }
 
     if (isExceptFilter) {

+ 1 - 1
packages/remark-lsx/src/services/renderer/lsx.ts

@@ -8,7 +8,7 @@ import { Plugin } from 'unified';
 import { visit } from 'unist-util-visit';
 
 const NODE_NAME_PATTERN = new RegExp(/ls|lsx/);
-const SUPPORTED_ATTRIBUTES = ['prefix', 'num', 'depth', 'sort', 'reverse', 'filter'];
+const SUPPORTED_ATTRIBUTES = ['prefix', 'num', 'depth', 'sort', 'reverse', 'filter', 'except'];
 
 const { hasHeadingSlash } = pathUtils;